OLAP、OLTP的介紹和比較
OLTP與OLAP的介紹
資料處理大致可以分成兩大類:聯機事務處理OLTP(on-line transaction processing)、聯機分析處理OLAP(On-Line Analytical Processing)。OLTP是傳統的關係型資料庫的主要應用,主要是基本的、日常的事務處理,例如銀行交易。OLAP是資料倉庫系統的主要應用,支援複雜的分析操作,側重決策支援,並且提供直觀易懂的查詢結果。
OLTP 系統強調資料庫記憶體效率,強調記憶體各種指標的命令率,強調繫結變數,強調併發操作;OLAP 系統則強調資料分析,強調SQL執行市場,強調磁碟I/O,強調分割槽等。
OLTP與OLAP之間的比較
OLTP,也叫聯機事務處理(Online Transaction Processing),表示事務性非常高的系統,一般都是高可用的線上系統,以小的事務以及小的查詢為主,評估其系統的時候,一般看其每秒執行的Transaction以及Execute SQL的數量。在這樣的系統中,單個數據庫每秒處理的Transaction往往超過幾百個,或者是幾千個,Select 語句的執行量每秒幾千甚至幾萬個。典型的OLTP系統有電子商務系統、銀行、證券等,如美國eBay的業務資料庫,就是很典型的OLTP資料庫。 OLTP系統最容易出現瓶頸的地方就是CPU與磁碟子系統。 (1)CPU出現瓶頸常表現在邏輯讀總量與計算性函式或者是過程上,邏輯讀總量等於單個語句的邏輯讀乘以執行次數,如果單個語句執行速度雖然很快,但是執行次數非常多,那麼,也可能會導致很大的邏輯讀總量。設計的方法與優化的方法就是減少單個語句的邏輯讀,或者是減少它們的執行次數。另外,一些計算型的函式,如自定義函式、decode等的頻繁使用,也會消耗大量的CPU時間,造成系統的負載升高,正確的設計方法或者是優化方法,需要儘量避免計算過程,如儲存計算結果到統計表就是一個好的方法。 (2)磁碟子系統在OLTP環境中,它的承載能力一般取決於它的IOPS處理能力. 因為在OLTP環境中,磁碟物理讀一般都是db file sequential read,也就是單塊讀,但是這個讀的次數非常頻繁。如果頻繁到磁碟子系統都不能承載其IOPS的時候,就會出現大的效能問題。 OLTP比較常用的設計與優化方式為Cache技術與B-tree索引技術,Cache決定了很多語句不需要從磁碟子系統獲得資料,所以,Web cache與Oracle data buffer對OLTP系統是很重要的。另外,在索引使用方面,語句越簡單越好,這樣執行計劃也穩定,而且一定要使用繫結變數,減少語句解析,儘量減少表關聯,儘量減少分散式事務,基本不使用分割槽技術、MV技術、並行技術及點陣圖索引。因為併發量很高,批量更新時要分批快速提交,以避免阻塞的發生。 OLTP 系統是一個數據塊變化非常頻繁,SQL 語句提交非常頻繁的系統。 對於資料塊來說,應儘可能讓資料塊儲存在記憶體當中,對於SQL來說,儘可能使用變數繫結技術來達到SQL重用,減少物理I/O 和重複的SQL 解析,從而極大的改善資料庫的效能。 這裡影響效能除了繫結變數,還有可能是熱快(hot block)。 當一個塊被多個使用者同時讀取時,Oracle 為了維護資料的一致性,需要使用Latch來序列化使用者的操作。當一個使用者獲得了latch後,其他使用者就只能等待,獲取這個資料塊的使用者越多,等待就越明顯。 這就是熱快的問題。 這種熱快可能是資料塊,也可能是回滾端塊。 對於資料塊來講,通常是資料庫的資料分佈不均勻導致,如果是索引的資料塊,可以考慮建立反向索引來達到重新分佈資料的目的,對於回滾段資料塊,可以適當多增加幾個回滾段來避免這種爭用。 OLAP,也叫聯機分析處理(Online Analytical Processing)
資料倉庫
個人對這些模板的理解為:
聯機分析處理(OLAP,On-line Analytical Processing),資料量大,DML少。使用資料倉庫模板 聯機事務處理(OLTP,On-line Transaction Processing),資料量少,DML頻繁,並行事務處理多,但是一般都很短。使用一般用途或事務處理模板。
決策支援系統(DDS,Decision support system),典型的操作是全表掃描,長查詢,長事務,但是一般事務的個數很少,往往是一個事務獨佔系統。
轉自:http://blog.csdn.net/rfb0204421/article/details/6873284
http://76287.blog.51cto.com/66287/885475