Oracle技術分享系列二:OLTP和OLAP系統及其性能調優重點

閱讀指引:詳細系統介紹請閱讀文末參考閱讀,本文主要是知識點概要,是給讀者的take away notes。轉載請標明出處。

引言:從事數據庫的工作,首先應該知道Oracle數據庫一開始是怎麼產生的,解決了什麼問題。這與本文分享的兩類系統息息相關。

數據處理大致可以分成兩大類:

  • OLTP(on-line transaction processing)聯機事務處理,又叫在線交易系統
  • OLAP(On-Line Analytical Processing)聯機分析處理,又叫DW (Data Warehouse)數據倉庫系統

OLTP是傳統的關係型數據庫的主要應用,workload類型主要是基本的、日常的事務處理,如淘寶購物,銀行交易等。OLAP是數據倉庫系統的主要應用,主要workload類型是批量操作(batch job),如BI,分析決策系統,支持複雜的分析操作,側重決策支持,並且提供直觀易懂的查詢結果。

主要區別:

OLTP系統用戶數量多,併發量高,比如淘寶上很多人同時搶購,但是涉及的數據量少,每個人購買的物品都不會太多,增刪查改的數據量都較少。OLTP 系統性能調優關注重點:

  • 強調連接池的使用
  • 強調數據庫內存效率,注意各種泄漏,如遊標泄漏、會話泄漏、鎖泄漏
  • 綁定變量的使用
  • 強調併發操作;

推薦閱讀:官方文檔《SQL Tuning Guide》Improving Real-World Performance Through Cursor Sharing
以及Oracle Real-World Performance Team製作的相關視頻(在油管上,需要翻牆)。

OLAP一般是用來跑報表的,幫助分析決策,所以一般只有少數幾個用戶,比如BA在使用,但是涉及的數據量巨大,因爲可能在做這個月或者這一年的數據統計分析等。OLAP 系統強調SQL執行時長,強調磁盤I/O,強調並行執行與分區的使用等。OLAP 系統性能調優關注重點:

第一步:打基礎

  • 使用Set-base思維處理數據
  • 數據模型的設計:儘量使用星型模型
  • 使用ELT (Extract Load Transform) 代替ETL:將數據放在最適合處理數據的地方處理
  • 再通過以下四點得到比較好的執行計劃
    • 約束條件的使用:非空和非強制約束條件的使用
    • 數據類型的正確性與一致性
    • 統計數據的準確性
    • 分區的使用

第二步:進階使用不同的加速技術

  • 並行執行的使用
  • 壓縮技術的使用
  • 集羣的使用
  • 星型轉換(Star Transformation)
  • 布隆過濾(Bloom Filters)
  • Database In-Memory的使用
  • Exadata

重要:前面第一步基礎不打好,後面再用多先進的技術都是徒勞!
重要:前面第一步基礎不打好,後面再用多先進的技術都是徒勞!
重要:前面第一步基礎不打好,後面再用多先進的技術都是徒勞!

重要的事情說三遍!

不是所有的數據庫都能同時勝任這兩種系統的。在雲時代,Oracle與其競爭對手競爭對手AWS都分別針對這兩種系統推出了自己的數據庫雲服務:

  • OLTP: Oracle ATP (Autonomous Transaction Processing) vs Amazon Aurora
  • OLAP/DW: Oracle ADW (Autonomous Data warehouse) vs Amazon Redshift

然而真實情況是,很多用戶,尤其是中小型企業,出於IT經費或者系統設計的考慮,沒法用兩個獨立的系統跑不同的負載。通常他們的負載都是混合的,既一臺服務器上既要跑OLAP又要跑OLTP。營業時間做完交易,停止營業以後就要跑報表。這時候需要數據庫整合服務。這就是Oracle優勢。我們說Oracle是全能的數據庫,適用於多種場景,能同時兼顧OLTP和OLAP系統。而Exadata是Oracle爲廣大客戶提供的最佳解決方案。

參考閱讀:OLAP、OLTP的介紹和比較

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