OLAP和OLTP的介紹和區別
一、定義:
OLTP(on-line transaction processing)聯機事務處理:傳統的關係型資料庫的主要應用,主要是基本的、日常的事務處理,例如銀行交易。
OLAP(On-Line Analytical Processing)聯機分析處理:資料倉庫系統的主要應用,支援複雜的分析操作,側重決策支援,並且提供直觀易懂的查詢結果。
二、OLTP 和 OLAP 特點
OLTP的特點:
1、實時性要求高。
2、資料量不是很大,生產庫上的資料量一般不會太大,而且會及時做相應的資料處理與轉移。
3、交易一般是確定的,比如銀行存取款的金額肯定是確定的,所以OLTP是對確定性的資料進行存取。
4、高併發,並且要求滿足ACID原則。比如兩人同時操作一個銀行卡賬戶,比如大型的購物網站秒殺活動時上萬的QPS請求。
OLAP的特點一般有:
1、實時性要求不是很高,比如最常見的應用就是天級更新資料,然後出對應的資料報表。
2、資料量大,因為OLAP支援的是動態查詢,所以使用者也許要通過將很多資料的統計後才能得到想要知道的資訊,例如時間序列分析等等,所以處理的資料量很大。
3、OLAP系統的重點是通過資料提供決策支援,所以查詢一般都是動態,自定義的。所以在OLAP中,維度的概念特別重要。一般會將使用者所有關心的維度資料,存入對應資料平臺。
三、OLTP 和 OLAP 的問題和優化方法
OLTP系統最容易出現瓶頸的地方就是CPU與磁碟子系統。
(1)CPU出現瓶頸常表現在邏輯讀總量(邏輯讀總量等於單個語句的邏輯讀乘以執行次數)與計算性函式或者是過程上,單個語句的邏輯讀或者執行次數,任何一個方面大都會導致邏輯讀總量大。優化的方法就是減少單個語句的邏輯讀,或者是減少它們的執行次數。另外,一些計算型的函式,如自定義函式、decode等的頻繁使用,也會消耗大量的CPU時間,造成系統的負載升高,正確的設計方法或者是優化方法,需要儘量避免計算過程,如儲存計算結果到統計表就是一個好的方法。
(2)頻率超高的磁碟物理讀超過磁碟子系統的IOPS處理能力,系統性能就會出現問題。磁碟物理讀一般都是db file sequential read,也就是單塊讀,但是這個讀的次數非常頻繁。優化方式為Cache技術與B-tree索引技術,Cache決定了很多語句不需要從磁碟子系統獲得資料,所以,Web cache與Oracle data buffer對OLTP系統是很重要的。另外,在索引使用方面,語句越簡單越好,這樣執行計劃也穩定,而且一定要使用繫結變數,減少語句解析,儘量減少表關聯,儘量減少分散式事務,基本不使用分割槽技術、MV技術、並行技術及點陣圖索引。 因為併發量很高,批量更新時要分批快速提交,以避免阻塞的發生。
在OLAP系統中,常使用分割槽技術、並行技術。
分割槽技術在OLAP系統中的重要性主要體現在資料庫管理上,比如資料庫載入,可以通過分割槽交換的方式實現,備份可以通過備份分割槽表空間實現,刪除資料可以通過分割槽進行刪除,至於分割槽在效能上的影響,它可以使得一些大表的掃描變得很快(只掃描單個分割槽)。另外,如果分割槽結合並行的話,也可以使得整個表的掃描會變得很快。總之,分割槽主要的功能是管理上的方便性,它並不能絕對保證查詢效能的提高,有時候分割槽會帶來效能上的提高,有時候會降低。對於OLAP系統來說,絕大多數時候資料庫上執行著的是報表作業,執行基本上是聚合類的SQL 操作,比如group by,這時候,把優化器模式設定為all_rows是恰當的。 而對於一些分頁操作比較多的網站類資料庫,設定為first_rows會更好一些。 但有時候對於OLAP 系統,我們又有分頁的情況下,我們可以考慮在每條SQL 中用hint。 如:Select a.* from table a;
四、OLTP與OLAP之間的對比:
對比項 | OLTP | OLAP |
使用者 | 操作人員、底層管理人員 | 決策人員,高階管理人員 |
功能 | 日常操作處理 | 分析決策 |
DB設計 | 面向應用 | 面向主題 |
資料 | 當前的,最新的細節的,二維的分立的 | 歷史的,聚集的,多維的整合的統一的 |
存取 | 讀/寫數十條紀錄 | 讀上百萬條記錄 |
工作單位 | 簡單的事務 | 負責的查詢 |
使用者數 | 上千個 | 上百萬個 |
DB大小 | 100MB-GB | 100GB-TB |
時間要求 | 具有實時性 | 對時間的要求不高 |
主要應用 | 資料庫 | 資料倉庫 |