OLAP OLTP的介紹和比較

2022-05-16 23:16:41 字數 4967 閱讀 8545

資料處理大致可以分成兩大類:聯機事務處理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(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),典型的操作是全表掃瞄,長查詢,長事務,但是一般事務的個數很少,往往是乙個事務獨佔系統。

OLAP OLTP的介紹和比較

oltp與olap的介紹 資料處理大致可以分成兩大類 聯機事務處理oltp on line transaction processing 聯機分析處理olap on line analytical processing oltp是傳統的關係型資料庫的主要應用,主要是基本的 日常的事務處理,例如銀行交...

OLAP OLTP的介紹和比較

oltp與olap的介紹 資料處理大致可以分成兩大類 聯機事務處理oltp on line transaction processing 聯機分析處理olap on line analytical processing oltp是傳統的關係型資料庫的主要應用,主要是基本的 日常的事務處理,例如銀行交...

OLAP OLTP的介紹和比較

oltp與olap的介紹 資料處理大致可以分成兩大類 聯機事務處理oltp on line transaction processing 聯機分析處理olap on line analytical processing oltp是傳統的關係型資料庫的主要應用,主要是基本的 日常的事務處理,例如銀行交...