Oracle資料庫效能的最佳化

來源:互聯網
上載者:User

      隨著網路應用和電子商務的不斷髮展,各個網站的訪問量越來越大,如何使有限的電腦系統資源為更多的使用者服務。如何保證使用者的響應速度和服務品質。這些問題都屬於伺服器效能最佳化的範疇。作為較成功的資料庫廠商,Oracle公司資料庫的效能最佳化是如何進行的

   最佳化策略

   為了保證Oracle資料庫運行在最佳的效能狀態下,在資訊系統開發之前就應該考慮資料庫的最佳化策略。最佳化策略一般包括伺服器作業系統參數調整、資料庫參數調整、網路效能調整、應用程式SQL語句分析及設計等幾個方面,其中應用程式的分析與設計是在資訊系統開發

   分析評價Oracle資料庫效能主要有資料庫輸送量、資料庫使用者回應時間兩項指標。資料庫使用者回應時間又可以分為系統服務時間和使用者等待時間兩項,即:

   資料庫使用者回應時間=系統服務時間+使用者等待時間

   因此,獲得滿意的使用者回應時間有兩個途徑:一是減少系統服務時間,即提高資料庫的輸送量;二是減少使用者等待時間,即減少使用者訪問同一資料庫資源的衝突率。

   資料庫效能最佳化包括如下幾個部分:

   1. 調整資料結構的設計 這一部分在開發資訊系統之前完成,程式員需要考慮是否使用Oracle資料庫的資料分割函數,對於經常訪問的資料庫表是否需要建立索引等。

   2. 調整應用程式結構設計 這一部分也是在開發資訊系統之前完成的。程式員在這一步需要考慮應用程式使用什麼樣的體繫結構,是使用傳統的Client/Server兩層體繫結構,還是使用Browser/Web/Database的三層體繫結構。不同的應用程式體繫結構要求的資料庫資源

   3. 調整資料庫SQL語句 應用程式的執行最終將歸結為資料庫中的SQL語句執行,因此SQL語句的執行效率最終決定了Oracle資料庫的效能。 Oracle公司推薦使用Oracle語句最佳化器(Oracle Optimizer)和行鎖管理器(Row-Level Manager)來調整最佳化SQL語句。

   4. 調整伺服器記憶體配置 記憶體配置是在資訊系統運行過程中最佳化配置的。資料庫管理員根據資料庫的健全狀態不僅可以調整資料庫系統全域區(SGA區)的資料緩衝區、日誌緩衝區和共用池的大小,而且還可以調整程式全域區(PGA區)的大小。

   5. 調整硬碟I/O 這一步是在資訊系統開發之前完成的。資料庫管理員可以將組成同一個資料表空間的資料檔案放在不同的硬碟上,做到硬碟之間I/O 負載平衡。

   6. 調整作業系統參數 例如:運行在Unix作業系統上的 Oracle資料庫,可以調整 Unix資料緩衝區的大小、每個進程所能使用的記憶體大小等參數。

   實際上,上述資料庫最佳化措施之間是相互聯絡的。Oracle 資料庫效能惡化的表現基本上都是使用者回應時間比較長,需要使用者長時間的等待。而效能惡化的原因卻是多種多樣的,有時是多個因素共同造成了效能惡化的結果,這就需要資料庫管理員有比較全面的電腦知識,能夠敏感地察覺到影響資料庫效能的主要原因所在。另外,良好的資料庫管理工具對於最佳化 效能最佳化工具

    Oracle資料庫常用的資料庫效能最佳化工具有:

   1. Oracle資料庫線上資料字典 Oracle線上資料字典能夠反映出Oracle的動態運行情況,對於調整資料庫效能是很有協助的。

   2. 作業系統工具 例如使用Unix作業系統的Vmstat、 Iostat等命令可以查看到系統級記憶體和硬碟I/O的使用方式,這些工具能夠協助管理員弄清楚系統瓶頸出現在什麼地方。

   3. SQL語言跟蹤工具(SQL Trace Facility)

   SQL語言跟蹤工具可以記錄SQL語句的執行情況,管理員可以使用虛擬表來調整執行個體,並使用SQL語句追蹤檔案調整應用程式效能。SQL語言跟蹤工具將結果輸出成一個作業系統

    4. Oracle Enterprise Manager(OEM) 這是一個圖形的使用者管理介面,使用者可以使用它方便地進行資料庫管理而不必記住複雜的Oracle資料庫管理的命令。

   5. Explain Plan??SQL語言最佳化命令 使用這個命令可以協助程式員寫出高效的

   系統效能評估

   資訊系統的類型不同,需要關注的資料庫參數也是不同的。資料庫管理員需要根據自

   1. 線上交易處理資訊系統(OLTP) 這種類型的資訊系統一般需要有大量的Insert、 Update操作,典型的系統包括民航機票發售系統、銀行儲蓄系統等。OLTP系統需要保證資料庫的並發性、可靠性和終端使用者的速度,這類系統使用的Oracle資料庫需主要考慮以下參數:

   資料庫復原段是否足夠。

   是否需要建立Oracle資料庫索引、聚集、散列。

   系統全域區(SGA)大小是否足夠。

   SQL語句是否高效。

   2. 資料倉儲系統(Data Warehousing) 這種資訊系統的主要任務是從Oracle的海量資料中進行查詢,以得到資料之間的某些規律。資料庫管理員需要為這種類型的Oracle資料

   是否採用B*?索引或者Bitmap索引。

   是否採用並行SQL查詢以提高查詢效率。

   是否採用PL/SQL函數編寫預存程序。

   有必要的話,需要建立並行資料庫以提高資料庫的查詢效率。

參數的調整

   1. CPU參數

    CPU是伺服器的一項重要資源,伺服器良好的工作狀態表現為在工作高峰時CPU的使用率高於90%。如果空閑時間CPU使用率就在90%以上,說明伺服器缺乏CPU資源;如果工作高峰時CPU使用率仍然很低,則說明伺服器CPU 資源還比較充足。

   使用操作命令可以看到CPU的使用方式,一般Unix作業系統的伺服器,可以使用 sar-u命令查看CPU的使用率;NT作業系統的伺服器,可以使用NT的效能管理器來查看CPU的使

   資料庫管理員可以通過查看v$sysstat資料字典中的 “CPU used by this session ”統計項得知Oracle資料庫使用的CPU時間;查看“OS User level CPU time”統計項得知作業系統使用者狀態下的CPU時間;查看“OS System call CPU time” 統計項得知作業系統系統狀態下的CPU時間,作業系統總的CPU時間就是使用者狀態和系統狀態時間之和。如果Oracle資料庫使用的CPU時間占作業系統總CPU時間的90%以上,就說明伺服器CPU基本上被Oracle資料庫使用著,這是合理的,反之,則說明伺服器CPU被其他程式佔用過多,Oracle資料庫無法

    2. 記憶體參數

   記憶體參數的調整主要是指Oracle資料庫的系統全域區(SGA)的調整。SGA主要由3部分構成:共用池、資料緩衝區、日誌緩衝區。

   共用池由兩部分構成:共用SQL區和資料字典緩衝區。共用SQL區是存放使用者SQL命令

   結束語

   Oracle資料庫的效能最佳化調整是一個系統工程,涉及的方面很多。資料庫管理員需要綜合運用上面介紹的規律,認真分析Oracle在運行過程當中出現的各種問題,以保證Oracle資料庫啟動並執行高效率。還需要指出的是,上面給出的語句只是測得Oracle運行過程的某一個時間點的情況,資料庫管理員不能僅僅根據一個點的情況就斷定資料庫運行效能的好壞,只有多運行一些時間點才能對資料庫健全狀態做出一個綜合評估。

   由於單個時間點的監測是很麻煩的,且對於多個時間點的監測更是一項煩瑣的工作,為此,筆者開發了Oracle資料庫效能監測軟體ORATUNE。這個軟體不僅能夠定時從資料庫中讀取各種參數並自動計算出各種比例,而且還能自動根據這些比例的好壞建議資料庫管理員修改

   ORATUNE已經在清華大學、華北電力集團等多個單位得到了應用,對Oracle資料庫的效能最佳化調整起到了良好的作用。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.