OLAP是聯機分析處理 主要是查詢處理
OLTP是聯機事務處理 主要是事務處理 即插入 修改 查詢和刪除操做
OLAP是數據倉庫系統的主要應用,支持複雜的分析操做,側重決策支持,而且提供直觀、易懂的查詢結果。
OLTP是傳統的關係型數據庫的主要應用模式,主要面對基本的、平常的事務處理;好比數據庫記錄的增、刪、改、查。
---------------------
數據庫設計的一個根基就是要弄清楚數據庫的類型。
當今的數據處理大體能夠分紅兩大類:聯機事務處理OLTP(on-line transaction processing在線事務處理,聯機事務處理)、聯機分析處理OLAP(On-Line Analytical Processing在線分析處理,聯機分析處理)。
OLTP是傳統的關係型數據庫的主要應用,主要是基本的、平常的事務處理,例如銀行交易。
OLAP是數據倉庫系統的主要應用,支持複雜的分析操做,側重決策支持,而且提供直觀易懂的查詢結果。
這兩類系統在數據庫的設計上是如此不一樣,甚至有些地方的設計是貌似相悖的。好比OLTP系統強調數據庫的內在效率,強調內存各類指標的命中率,強調綁定變量,強調併發操做;而OLAP系統則強調數據分析,強調SQL執行時長,強調磁盤I/O,強調分區等。由於這些區別,在數據庫設計的階段,弄清楚數據庫類型是相當重要的,只在在這個前提之下,纔可以討論數據庫的具體設計,不然設計必須是盲目的,"皮之不存毛將焉附".
OLTP:用戶併發數都不少,但他們只對數據庫作很小的操做,數據庫側重於對用戶操做的快速響應,這是對數據庫最重要的性能要求。
對於一個OLTP來說,數據庫內存的設計顯得很重要,若是數據庫能夠在內存中處理,那麼數據庫的性能無疑會提升不少。內存的設計一般是經過調整Oracle和內存相關的初始化參數來實現的,比較重要的幾個是內存相關的參數,包括SGA的大小(Data Buffer,Shared Pool)、PGA大小(排序區,Hash區等),這些參一個OLTP系統裏顯得相當重要,OLTP系統是一個數據塊變化很是頻繁、SQL語句提交很是頻繁的系統。對於數據塊來講,應儘量讓數據塊保存在內存當中,對於SQL來講,儘量使用變量綁定技術來達到SQL的重用,減小物理I/O和重複的SQL解析,能極大地改善數據庫性能。
常見的OLTP系統有:門票在線銷售系統,銀行交易等。
OLAP:相對於OLTP用戶併發數較少,內存能夠優化的餘地較小,甚至以爲增長CPU處理速度和磁盤I/O速度是最直接的提升數據庫性能的方式方式,但這將意味着成本的增長。實際上,用戶對OLAP系統性能的指望遠遠沒有對OLTP性能的指望那麼高。在OLAP系統中,SQL的優化顯得很是重要,分區技術在OLAP數據庫中很重要。
OLAP是數據倉庫系統的主要應用,支持複雜的分析操做,側重決策支持,而且提供直觀易懂的查詢結果。
下表列出OLTP和OLAP之間的比較
OLTP
OLAP
用戶
操做人員,低層管理人員
決策人員,高級管理人員
功能
平常操做處理
分析決策
DB設計
面向應用
面向主題
數據
當前的,最新的細節的,二維的分立的
歷吏的,彙集的,多維的,集成的,統一的
存取
讀/寫數十條記錄
讀上百萬條記錄
工做單位
簡單的事務
複雜的查詢
DB大小
100MB-GB
100GB-TB
Oracle 10g之前的版本建庫過程當中可供選擇的模板有:
Data Warehouse (數據倉庫)
General Purpose (通用目的、通常用途)
New Database
Transaction Processing (事務處理)
Oracle 11g的版本建庫過程當中可供選擇的模板有:
通常用途或事務處理
定製數據庫
數據倉庫
我的對這些模板的理解爲:
聯機分析處理(OLAP,On-line Analytical Processing),數據量大,DML少。使用數據倉庫模板
聯機事務處理(OLTP,On-line Transaction Processing),數據量少,DML頻繁。使用通常用途或事務處理模板
聯機事務處理(OLTP,On-line Transaction Processing),DML操做頻繁,並行事務處理多,可是通常都很短。
決策支持系統(DDS,Decision support system),典型的操做是全表掃描,長查詢,長事務,可是通常事務的個數不多,每每是一個事務獨佔系統。數據庫