鄒元杰
摘 要:理解數據庫性能調整與優(yōu)化架構是一個很重要的環(huán)節(jié),對它們的理解將有助人們在優(yōu)化數據庫性能的過程中明確什么是性能調整與優(yōu)化、評價性能的指標有哪些、數據庫優(yōu)化應該從哪些方面進行以及優(yōu)化方法有哪些等。
關鍵詞:數據庫;性能調整;優(yōu)化架構
1性能調整與優(yōu)化概述
性能調整是通過優(yōu)化應用程序、修改系統(tǒng)參數和系統(tǒng)配置(硬件調整)來改變系統(tǒng)性能。性能調整包括硬件配置、操作系統(tǒng)與數據庫管理系統(tǒng)配置,以及對訪問這些組件的應用的詳細分析與優(yōu)化。
性能優(yōu)化是指進行有目的地調整組件以改善性能,使得數據庫的吞吐量最大限度地增加,相應的響應時間達到最小化。數據庫性能優(yōu)化的基本原則是:通過盡可能少的磁盤訪問獲得所需要的數據。性能調整與優(yōu)化的過程在某種程度上說是循環(huán)的,要達到性能優(yōu)化的目的,通常需要進行適當的性能調整,然后再查看優(yōu)化結果,如此反復,直到達到滿意的效果為止。
2數據庫系統(tǒng)性能評價指標
通常評價Oracle數據庫性能的指標主要有系統(tǒng)吞吐量、數據庫用戶響應時間、數據庫命中率、內存使用情況以及所需的磁盤I/0量。
2.1系統(tǒng)吞吐量
吞吐量是指單位時間內數據庫完成的SQL語句數目,以每秒鐘的事務量(tps)表示。為了使系統(tǒng)能夠達到它的最高吞吐量,將不得不犧牲系統(tǒng)性能的其他方面,如系統(tǒng)響應時間、容錯能力等 。
提高系統(tǒng)吞吐量有兩種方法:
①減少服務時間使得在同樣的資源環(huán)境下做更多的工作;
②減少總的響應時間使工作做得更快。
2.2用戶響應時間
響應時間是指用戶從提交SQL語句開始到獲得結果集的第一行所需要的時間,是應用做出反應的時間,以毫秒或秒表示。在任何一個系統(tǒng)中,吞吐量和響應時間作為調整目標通常是互相對立的。獲得滿意的用戶響應時間有兩個途徑:一是減少系統(tǒng)服務時間,即提高數據庫的吞吐量;二是減少用戶等待時間,即減少用戶訪問同一數據庫資源的沖突率 。
2.3數據庫命中率
這一比率是高速緩存命中總數除以自Oracle實例啟動后對高速緩存的查找總數。緩沖區(qū)高速緩存的命中率,對性能至關重要。由于從高速緩存中讀數據比從磁盤中讀數據的開銷要小得多,因此一般應使其盡可能高一些。
2.4內存使用情況
內存的使用情況主要體現在可共享內存、永久性內存和運行時內存這三者的分配使用上。實現內存合理使用,一般考慮的主要調整目標有兩條:
①使投資得到最大回報。把時間和精力用于解決很有可能產生最大利益的問題上;
②使爭用減到最小。瓶頸的特點在于延遲和等待,盡可能地消除或減少它。
2.5磁盤I/O
數據庫中發(fā)生的每個動作幾乎都將產生某種類型的I/O活動,該活動可以是邏輯的(在內存中),也可以是物理的(在磁盤上)。通過降低不必要的I/O開銷可以增加用戶任務獲得的吞吐量,縮短用戶響應時間 。其中,磁盤I/O操作是數據庫性能最重要的方面,是計算機最大的開銷。因此,通過減少不必要的磁盤I/O,可以大大提高系統(tǒng)性能。
3數據庫性能優(yōu)化的主要方面
無論哪一個數據庫管理系統(tǒng)都會出現數據庫運行效率問題,要使數據庫的性能達到最大化,需從操作系統(tǒng)、硬件性能、數據庫結構、Oracle資源配置、Oracle實例性能和SQL 語句執(zhí)行等方面進行綜合考慮,這些方面是相互依賴的。
3.1調整與優(yōu)化數據庫設計
在開發(fā)信息系統(tǒng)之前,首要的任務是數據庫設計人員提供一個合理的數據庫設計方案。若數據庫結構設計有問題,Oracle系統(tǒng)本身提供的優(yōu)化技術不可能使得數據庫性能達到一個滿意的效果。在設計階段對數據庫設計進行論證和調整優(yōu)化,將保證后期開發(fā)維護中各種優(yōu)化技術發(fā)揮應有的作用,使得以更小的代價實現系統(tǒng)性能的最大的提升。
3.2調整應用程序結構設計
不同的應用程序體系結構對數據庫資源要求不同。目前,常用的應用程序結構有C/S兩層體系結構、B/S三層體系結構和多層體系結構。選擇使用哪種體系結構參考的指標主要包括:應用系統(tǒng)的規(guī)模、用戶數量、使用的數據庫數量、對網絡安全性和流量的要求等。
3.3優(yōu)化應用程序
SQL語句消耗了70%至90%的數據庫資源,而應用程序對數據庫的操作最終表現為SQL語句對數據庫的操作,通過對劣質SQL語句以及訪問數據庫方法的調整,可以顯著地改善一個系統(tǒng)的性能,對提高數據庫內存區(qū)的命中率、減少I/O訪問、減少對網絡帶寬占用等有著非常重要的意義。
3.4調整數據庫內存分配
內存分配是在信息系統(tǒng)運行過程中進行的,通過調整內存,提高緩沖區(qū)的命中率,將大大影響系統(tǒng)的性能。最佳的調整時機是在數據庫文件物理調整和磁盤I/O調整之前進行。
3.5調整與優(yōu)化磁盤I/O
影響磁盤I/O性能的主要原因有磁盤競爭、I/O次數過多和數據塊空間的分配管理等,為了避免與I/O相關的性能瓶頸,監(jiān)控磁盤I/O并對其進行調整非常重要。
3.6配置和調整操作系統(tǒng)性能
Oracle數據庫服務器的整體性能很大程度上依賴于操作系統(tǒng)的性能,如果操作系統(tǒng)不能提供優(yōu)越的性能,那么無論怎么調整數據庫也不能發(fā)揮其應有的性能。實施操作系統(tǒng)級調整的主要目的是減少內存交換,減少分頁,使SGA可留駐內存 ??梢詮囊韵聨讉€方面著手:
①為Oracle規(guī)劃系統(tǒng)資源;
②調整計算機系統(tǒng)中的內存配置;
③為Oracle數據庫服務器設置操作系統(tǒng)進程優(yōu)先級;
④對OS參數進行設置。
3.7配置與調整數據庫服務器硬件性能
與數據庫有關的硬件設計主要包括CPU、內存、磁盤子系統(tǒng)和網絡這四個部分 。許多典型的性能問題是由不充足的或配置失當的硬件組件導致的,其中計算機內存和CPU嚴重影響數據庫系統(tǒng)的能力。硬件調整是為要求的工作量提供足夠的硬件資源的行動,包括數據庫大小估計與容量規(guī)劃。
4優(yōu)化方法
在Oracle環(huán)境下,數據庫性能優(yōu)化調整原則上按以下幾步進行:
4.1有條理的采用各種監(jiān)測手段收集數據,發(fā)現性能問題。
4.2做出令人信服的調整(一次只建議改動一兩處)。
4.3收集統(tǒng)計信息,得到調整后的性能。
4.4重復以上操作直至性能調整滿意為止。