說說OLTP和OLAP

在數據庫查詢中,存在兩種典型的查詢場景,一種是OLTP ,On-Line Transaction Processing,一種是 On-Line Analytical Processing,分別對應聯機事物處理和聯機查詢分析兩種不同類型。這兩種查詢類型的區分,對於基於數據庫優化和調整有很大的差異,而OLTP和OLAP往往會混合在一起,做爲一個整體呈現在用戶的面前,因此在實際的系統優化過程中,必須採用“庖丁解牛”的方式進行深入的解剖,明白要理,才能展開相應的優化,提升數據庫查詢效率。

UEP做爲公司系統設備管理的基礎平臺,常期致力於性能數據查詢優化,主要解決管理系統設備上報性能數據的查詢和分析功能,隨着管理設備數量增加,必然會導致整體數據量的增加,對於性能數據查詢效率帶來較大的影響。

在UEP性能模塊設計和實現過程中,對於OLTP和OLAP其實並沒有做嚴格區分,通常會採用相同的方法進行處理,但是從數據庫層面看,這些查詢特點是不同的,此處就使用無線產品設備舉例說明各自的典型場景。


OLTP典型場景:查詢指定位置的一個小區計數器或者指標


該場景下,提交到數據庫請求特點是小而精,這種特點的查詢效率提升,重點需要考慮SQL語句解析時間、索引策略、數據庫物理讀取、存儲設備IOPS。

SQL語句解析時間:使用數據庫緩存中的信息進行軟解析,而不是每次查詢時進行硬解析,儘量採用能夠讓數據庫SQL重用的SQL寫法;

索引策略:數據庫索引的有效性和健康狀態,需要關注數據庫索引的效率,絕對要避免數據庫全表掃描操作,保持數據庫索引B+數平衡;

數據庫物理讀取:消除數據庫的物理讀取,對於磁盤物理讀取,通常速度都會非常慢,數據庫對於熱點數據都會進行緩存,如果在緩存中的數據,會直接走邏輯讀,整體執行速度會快很多;

存儲設備IOPS:對於硬件和整個文件系統來看,這樣的小讀取次數會非常多,整個文件系統和硬件需要按照高IOPS的方式進行設計。


OLAP典型場景:查詢當前系統全網所有小區計數器或者指標


該場景下,提交到數據庫請求特點是大而少,此類查詢往往對應對於全網質量監控和評估,發起次數不會很頻繁,但是每一個查詢請求,都會對於數據庫帶來不小壓力。這種查詢效率提升,重點需要考慮數據存儲方式、數據讀取方式、數據庫物理讀取、存儲設備和文件系統TPS。


數據存儲方式:數據儲存方式,要儘量按照訪問獲取需要的數據範圍來進行數據的邏輯和物理儲存,把無關的數據分離開,比如,通過數據庫提供的表空間、表、分區等技術做好數據存儲規劃,便於數據庫高速讀取;


數據讀取方式:結合數據的存儲特點,確定相應的訪問方式,在這種場景下,索引掃描可能已經不是最高效的訪問方式,可以考慮全表掃描、並行執行等方式來加快速度的讀取速度,同時需要關注數據庫參數配置,以最大努力的方式,進行數據讀取,同時儘量一次性的多讀取數據,減少數據庫總的讀取次數。


存儲設備和文件系統TPS:此種場景發起的數據庫請求不是太頻繁,系統在加大每次IO讀取的數據量後,會導致系統IO總量增加,也就是要求系統TPS能力比較強,在指定時間內導致最大的數據讀取量,該數據量爲每秒IO次數*每次讀取數據量,這個值越大,執行的速度就會越快。從磁盤讀取原理看,如果參與這個讀取的磁盤數量越多,那麼TPS的能力就必定更強。但是在實際的存儲系統和文件系統中,要完全清除參與的磁盤數量已經不太可能,磁盤陣列系統的RAID方式、磁盤陣列系統自身的文件存儲和優化方式、操作系統多路軟件設計和LVM卷管理策略、操作系統文件系統的存儲和優化都會相互疊加。因此,一個唯一可能的方式時,按照相關的原理介紹,進行相關的配置操作,想象存儲系統可能的執行方式,構造一種可以滿足該場景的配置方式,提交到實際系統中進行測試,根據測試效果進行相應的持續改進。


OLAP和OLTP混合場景:查詢當前指定一個分組下面所有小區計數器或者指標

該場景下介於OLATP和OLTP的混合型場景,即類似於OLTP,也類似與OLAP系統,因此此種場景必須按照具體的網絡中小區數量、分組中小區數量做對比分析,可能會採用結合上述2種方式的優化策略進行優化。

通過上述分析,筆者認爲OLTP和OLAP在實際的數據庫系統,比如運營商設備性能數據查詢系統中都會有典型的應用場景,因此對於這些應用場景,在考慮對於用戶透明的基礎上,比如採用不同的優化策略和方式進行優化,這樣才能更好的利用好數據庫系統,採用大一統的模式進行優化,往往會導致顧此失彼的局面,使整體系統優化陷入誤區。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章