當前位置:
首頁 > 最新 > 關於Oracle資料庫性能優化,你可能已經走了彎路!

關於Oracle資料庫性能優化,你可能已經走了彎路!

OLTP是傳統的關係型資料庫的主要應用,主要是基本的、日常的事務處理,以完成當前小事務處理為目的,例如銀行交易系統和網購系統。

1.OLTP性能關注指標 OLTP

全稱為聯機事務處理(Online Transaction Processing),其特點是事務性非常高,一般都是高可用的在線系統,以小的事務以及小的查詢為主,其每秒執行的Transaction以及Execute SQL的數量是其性能指標的主要指標。資料庫每秒處理的Transaction達到幾百以上,Select 語句的執行量每秒上千至萬。典型的OLTP系統有電子商務系統和銀行。

2.OLTP系統的瓶頸點

OLTP系統最容易出現瓶頸的地方就是CPU資源與IO資源。

(1) CPU資源主要消耗在邏輯讀總量、自定義的函數或者存儲過程上這樣的系統中單個語句執行速度雖然很快,但是執行次數非常多,同樣會導致很大的邏輯讀總量。要減少單個語句的邏輯讀,或者是減少執行次數。自定義函數、decode等的頻繁使用,也會消耗大量的CPU資源用戶這些調用的解析,要盡量避免調用自定義的函數和計算過程。

(2) 磁碟子系統在OLTP環境中,它的瓶頸取決於它的IOPS處理能力.

因為在OLTP環境中,磁碟物理讀一般都是db file sequential read,也就是單塊讀,雖然數據量不大,但是操作非常次數非常頻繁。超過磁碟的IOPS的時候系統比如面臨IO的性能問題。

3.OLTP系統的優化策略

OLTP常用的設計與優化方式為:Cache技術、B-tree索引技術、綁定變數和熱塊爭用處理

(1) Cache技術使得數據可以從內存獲取,相對於從磁碟子系統獲得數據有數量級上的響應優勢,Oracle data buffer、應用伺服器的buffer以及Web cache優化是提高OLTP系統的好對策。

(2) B-tree索引優先考慮。簡潔語句格式,減少語句解析,盡量減少表關聯,盡量減少分散式事務,基本不使用分區技術、物化視圖技術、並行技術及點陣圖索引。

(3) OLTP 系統的SQL語句提交非常頻繁,所以資料庫的變更也非常頻繁。儘可能讓數據塊保存在內存當中,對於SQL來說,儘可能使用變數綁定技術來達到SQL 重用,減少物理I/O 和重複的SQL 解析。

(4) 注意熱塊問題爭用。 當資料庫有爭用是,Oracle使用Latch來機制串列化用戶的操作。Latch機制保證了資料庫的數據一致性,但是Latch機制會導致用戶等待,獲取這個數據塊的用戶越多,Latch等待就越明顯,當Latch數量分配不足時候,CPU就會進行頻繁的SPIN,到達閥值以後,語句暫時進入休眠,就會導致CPU進行上下文切換(contex switch),這時候CPU要保存當前進程的運行時信息如堆棧、信號量等數據結構,引入後續進程的狀態信息,處理完成後再切換回原來的進程。這將消耗巨大的CPU開銷。這種熱塊爭用可能是數據塊,也可能是回滾端塊。 對於數據塊來講,通常是資料庫的數據分布不均勻導致,如果是索引的數據塊,可以考慮創建反向索引來達到重新分布數據的目的,對於回滾段數據塊,可以適當多增回滾段來減少這種爭用。

二、OLAP系統的優化思路:

OLAP是數據倉庫系統的主要應用,主要是統計分析業務,提供對歷史數據進行多維度的統計分析,主要服務於決策支持。

1.OLAP系統性能關注指標

OLAP也叫DSS決策支持系統,等同於數據倉庫。OLAP的業務操作往往非常複雜,執行語句雖然不多,但是單條語句的耗時長,讀取數據量大,IO子系統的吞吐量(帶寬)是重要考核標準。

2.OLAP系統的瓶頸點

OLAP操作往往對上百萬甚至上億條記錄進行統計分析,數據讀取量上GB甚至幾十GB以上,受限於資料庫內存,通過 Cache來緩存基本沒有效果。

此時需要突破的瓶頸是IO子系統的吞吐量,而該吞吐量首先受限於磁碟的個數或者磁碟系統的陣列策略。

3.OLAP系統的優化策略

在OLAP系統中,常使用分區技術、並行技術。

(1) 分區技術在OLAP系統中的獲益主要體現在資料庫管理上,分區主要的功能是管理上的方便性,它並不能絕對保證查詢性能的提高,有時候分區會帶來性能上的提高,有時候會降低。下列情況可以使得效率提升。如表分區可以減少表掃描的IO,結合併行的話,全表掃描的效率也提高。

(2) 並行技術如RAC中的多節點的同時掃描,把任務分布在多個RAC的節點。

(3) 由於Cache作用效果不大,OLAP在內存上可優化的餘地很小,增加CPU 處理速度和磁碟I/O 速度或者數量,或者優化磁碟陣列都能直接的提高資料庫性能,提高帶寬等。但成本大,需要額外硬體投入。

三、針對Oracle性能優化,個人的一點建議:

1.分區技術要慎用,對分區索引有性能提高的促進。但是對不使用分區索引的語句時分區技術並無性能提高,甚至造成性能降低,如全局索引和本地索引。

2.並行技術適用於大型的任務時才有性能提高,小事務的並行計算甚至會導致性能下降,因為事務並行分配同樣需要開銷資源。

3.綁定變數的策略適用於OLTP系統,不適用於OLAP系統中。OLAP系統因為整個系統的語句執行數量很小,分析時間遠遠小於執行時間。OLTP系統通常用戶並發數很大,用戶的請求十分密集,通過使用綁定變數可以使得SQL實現重用。

4.為避免阻塞和死鎖,不建議用在OLTP環境中使用點陣圖索引。物化視圖和觸發器也類似,在DML頻繁的OLTP系統上,很容易成為瓶頸,甚至是Library Cache等待;而點陣圖索引適用在OLAP則可能會因為使用恰當而提高查詢性能。OLTP注重的是快速提交處理,OLAP注重的是大吞吐處理。

5.對於OLAP系統,SQL語句邏輯優化貢獻大,因為它的數據量很大,是否全表掃描和索引是否有效利用都將導致性能迥然不同。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 科通潮藝 的精彩文章:

TAG:科通潮藝 |