oltp與olap的介紹
資料處理大致可以分成兩大類:聯機事務處理oltp(on-line transaction processing)、聯機分析處理olap(on-line analytical processing)。oltp是傳統的關係型資料庫的主要應用,主要是基本的、日常的事務處理,例如銀行交易。olap是資料倉儲系統的主要應用,支援複雜的分析操作,側重決策支援,並且提供直觀易懂的查詢結果。
oltp系統強調資料庫記憶體效率,強調記憶體各種指標的命令率,強調繫結變數,強調併發操作;
olap系統則強調資料分析,強調sql執行市場,強調磁碟i/o,強調分割槽等。
oltp與olap之間的比較:
分割槽技術在olap系統中的重要性主要體現在資料庫管理上,比如資料庫載入,可以通過分割槽交換的方式實現,備份可以通過備份分割槽表空間實現,刪除資料可以通過分割槽進行刪除,至於分割槽在效能上的影響,它可以使得一些大表的掃瞄變得很快(只掃瞄單個分割槽)。另外,如果分割槽結合並行的話,也可以使得整個表的掃瞄會變得很快。總之,分割槽主要的功能是管理上的方便性,它並不能絕對保證查詢效能的提高,有時候分割槽會帶來效能上的提高,有時候會降低。
並行技術除了與分割槽技術結合外,在oracle 10g中,與rac結合實現多節點的同時掃瞄,效果也非常不錯,可把乙個任務,如select的全表掃瞄,平均地分派到多個rac的節點上去。
在olap系統中,不需要使用繫結(bind)變數,因為整個系統的執行量很小,分析時間對於執行時間來說,可以忽略,而且可避免出現錯誤的執行計畫。但是olap中可以大量使用位圖索引,物化檢視,對於大的事務,盡量尋求速度上的優化,沒有必要像oltp要求快速提交,甚至要刻意減慢執行的速度。
繫結變數真正的用途是在oltp系統中,這個系統通常有這樣的特點,使用者併發數很大,使用者的請求十分密集,並且這些請求的sql 大多數是可以重複使用的。
對於olap系統來說,絕大多數時候資料庫上執行著的是報表作業,執行基本上是聚合類的sql 操作,比如group by,這時候,把優化器模式設定為all_rows是恰當的。 而對於一些分頁操作比較多的**類資料庫,設定為first_rows會更好一些。 但有時候對於olap 系統,我們又有分頁的情況下,我們可以考慮在每條sql 中用hint。 如:
select a.* from table a;
分開設計與優化
在設計上要特別注意,如在高可用的oltp環境中,不要盲目地把olap的技術拿過來用。
如分割槽技術,假設不是大範圍地使用分割槽關鍵字,而採用其它的字段作為where條件,那麼,如果是本地索引,將不得不掃瞄多個索引,而效能變得更為低下。如果是全域性索引,又失去分割槽的意義。
並行技術也是如此,一般在完成大型任務時才使用,如在實際生活中,翻譯一本書,可以先安排多個人,每個人翻譯不同的章節,這樣可以提高翻譯速度。如果只是翻譯一頁書,也去分配不同的人翻譯不同的行,再組合起來,就沒必要了,因為在分配工作的時間裡,乙個人或許早就翻譯完了。
位圖索引也是一樣,如果用在oltp環境中,很容易造成阻塞與死鎖。但是,在olap環境中,可能會因為其特有的特性,提高olap的查詢速度。mv也是基本一樣,包括觸發器等,在dml頻繁的oltp系統上,很容易成為瓶頸,甚至是library cache等待,而在olap環境上,則可能會因為使用恰當而提高查詢速度。
對於olap系統,在記憶體上可優化的餘地很小,增加cpu 處理速度和磁碟i/o 速度是最直接的提高資料庫效能的方法,當然這也意味著系統成本的增加。
比如我們要對幾億條或者幾十億條資料進行聚合處理,這種海量的資料,全部放在記憶體中操作是很難的,同時也沒有必要,因為這些資料快很少重用,快取起來也沒有實際意義,而且還會造成物理i/o相當大。 所以這種系統的瓶頸往往是磁碟i/o上面的。
對於olap系統,sql 的優化非常重要,因為它的資料量很大,做全表掃瞄和索引對效能上來說差異是非常大的。
其他
oracle 10g以前的版本建庫過程中可供選擇的模板有:
data warehouse (資料倉儲)
general purpose (通用目的、一般用途)
new database
transaction processing (事務處理)
oracle 11g的版本建庫過程中可供選擇的模板有:
一般用途或事務處理
定製資料庫
資料倉儲
個人對這些模板的理解為:
聯機分析處理(olap,on-line analytical processing),資料量大,dml少。使用資料倉儲模板
聯機事務處理(oltp,on-line transaction processing),資料量少,dml頻繁,並行事務處理多,但是一般都很短。使用一般用途或事務處理模板。
決策支援系統(dds,decision support system),典型的操作是全表掃瞄,長查詢,長事務,但是一般事務的個數很少,往往是乙個事務獨佔系統。
oltp和olap的區別
聯機事務處理oltp(on-line transaction processing) 主要是執行基本日常的事務處理,比如資料庫記錄的增刪查改。比如在銀行的一筆交易記錄,就是乙個典型的事務。
oltp的特點一般有:
1.實時性要求高。我記得之前上大學的時候,銀行異地匯款,要隔天才能到賬,而現在是分分鐘到賬的節奏,說明現在銀行的實時處理能力大大增強。
2.資料量不是很大,生產庫上的資料量一般不會太大,而且會及時做相應的資料處理與轉移。
3.交易一般是確定的,比如銀行訪問款的金額肯定是確定的,所以oltp是對確定性的資料進行訪問
4.高併發,並且要求滿足acid原則。比如兩人同時操作乙個銀行卡賬戶,比如大型的購物**秒殺活動時上萬的qps請求。
聯機分析處理olap(on-line analytical processing) 是資料倉儲系統的主要應用,支援複雜的分析操作,側重決策支援,並且提供直觀易懂的查詢結果。典型的應用就是複雜的動態的報表系統。
olap的特點一般有:
1.實時性要求不是很高,比如最常見的應用就是天級更新資料,然後出對應的資料包表。
2.資料量大,因為olap支援的是動態查詢,所以使用者也許要通過將很多資料的統計後才能得到想要知道的資訊,例如時間序列分析等等,所以處理的資料量很大;
3.olap系統的重點是通過資料提供決策支援,所以查詢一般都是動態,自定義的。所以在olap中,維度的概念特別重要。一般會將使用者所有關心的維度資料,存入對應資料平台。
總結:
oltp即聯機事務處理,就是我們經常說的關聯式資料庫,增刪查改就是我們經常應用的東西,這是資料庫的基礎;tpcc(transaction processing performance council)屬於此類。
olap即聯機分析處理,是資料倉儲的核心部心,所謂資料倉儲是對於大量已經由oltp形成的資料的一種分析型的資料庫,用於處理商業智慧型、決策支援等重要的決策資訊;資料倉儲是在資料庫應用到一定程式之後而對歷史資料的加工與分析,讀取較多,更新較少,tpch屬於此類。
隨著大資料時代的到來,對於olap,列儲存模式或者說nosql模式比傳統意義的行儲存模式可能更具優勢。
OLTP與OLAP的區別和聯絡
oltp on line transaction processing 翻譯為聯機事務處理,olap on line analytical processing 翻譯為聯機分析處理,從字面上來看oltp是做事務處理,olap是做分析處理。從對資料庫操作來看,oltp主要是對資料的增刪改,olap是對...
OLTP與OLAP區別與聯絡
資料庫系統一般分為兩種型別,一種是面向前台應用的,應用比較簡單,但是重吞吐和高併發的oltp型別 一種是重計算的,對大資料集進行統計分析的olap型別。greenplum屬於後者,下面簡單介紹下兩種資料庫系統的特點。oltp on line transaction processing,聯機事務處理...
OLTP與OLAP的區別
聯機事務處理oltp on line transaction processing 主要是執行基本日常的事務處理,比如資料庫記錄的增刪查改。比如在銀行的一筆交易記錄,就是乙個典型的事務。oltp的特點一般有 1.實時性要求高。我記得之前上大學的時候,銀行異地匯款,要隔天才能到賬,而現在是分分鐘到賬的...