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