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