oracle資料庫調優描述(一).txt

to_be_Dba發表於2013-01-04

效能是我們評估一個系統是否可用的一個標準。一個效能良好的系統能夠提高工作效率,而效能差的系統甚至會令人無法忍受。
為了改善系統效能,需要進行調優。

通常來說,OLTP系統中我們主要考慮的並非響應時間(這個很容易錯),而是系統的吞吐量。通常我們要的結果應該是在現有環境下能夠容納更多的使用者併發,而OLAP系統一般併發較少,需要的是響應時間更快。而CPU、I/O等因素和響應時間是正相關的。如果響應時間過慢,通常可以從CPU、I/O、記憶體、網路幾方面進行考慮,找到主要矛盾(瓶頸),並重點解決。隨著效能指標的優化,資料庫完成同一件事所執行的步驟、訪問的資料、連線的次數少了,響應時間自然會減少。

oracle將資料庫的效能問題分為sql問題、例項問題。
DBA應該知道自己管理的系統負載高峰在哪個(哪些)時段。在系統中手工或自動設定的基線baselines可以在問題發生時方便我們進行比較,從而知道系統的瓶頸所在。理想情況下基線中包含了應用、資料庫、作業系統、網路及I/O統計資訊。
在問題環境和基線資訊比較時需要分清問題主次、症狀和根源,從根源上解決。

例項調優有三種方式:改變應用或應用被使用的方法、改變oracle資料庫、改變硬體配置。
相比之下sql調優則更加精細,方法更多、要求更高。

oracle提供了ADDM、AWR、SQL TUNING ADVISOR、SQLACCESS ADVISOR、端對端應用跟蹤、系統告警、企業管理器相關檢測工具等。v$開頭的效能檢視也可以作為我們調優的助手。


調優時需要考慮成本和收益,某些問題可以通過更換硬體的方式得到效能提升,但可能並沒有從根源上解決問題。dba需要用最小的代價使資料庫更好地執行。
前面提到了OLTP和OLAP的要求不同,但特定系統的要求可能有差異。在進行調優工作前就需要首先了解系統的特點和調優目標,在系統的承載能力範圍內儘量使效能線性變化。

如果是在系統規劃、選型時期,應該綜合考慮cpu、記憶體、i/o、網路,選擇適合的結構。系統設計時應用盡量簡單、資料模型應該考慮未來的可擴容、表及索引的設計合理、少用檢視,考慮使用者連線方式是否恰當、變數管理時合理使用遊標(繫結變數)。

具體來說,應用的設計中,資料長度要充足、評估系統負載可以根據相似的系統進行、測試階段綜合運用多種方式確保效能、新系統上線時避免一次性大量的資料遷移或長時間緩慢的遷移。


生產系統上效能問題通常是使用者反映給dba的,這時需要搞清楚問題的範圍、影響的時間、發生前有無異常操作(通常是有的),還有就是儘可能全地瞭解系統配置和採用的相關監控手段。

oracle官方提供的10個最常見的導致效能問題的原因
1.連線管理方式問題
2.遊標和共享池問題
3.sql書寫問題
4.初始化引數設定問題
5.獲取資料庫I/O問題(應該根據網路頻寬設計資料流,即I/O,而不是根據各個磁碟的大小)
6.線上重做日誌設定問題
7.空閒佇列、空閒佇列組、事務槽缺失或回滾段太小導致快取區buffer cache中的資料塊順序讀
8.大規模的全表掃描
9.大量的遞迴sql(對SYS的大量呼叫)
10.部署或遷移問題

在緊急情況下,即使知道問題原因也可能無法快速解決,可以考慮將瓶頸發生部分的應用停掉,確保其他部分正常,再找到最好的方法,測試後實施。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26451536/viewspace-752088/,如需轉載,請註明出處,否則將追究法律責任。

相關文章