許 冬
[摘 要]數(shù)據(jù)庫系統(tǒng)的性能最終決定數(shù)據(jù)庫的可用性和生命力。大多數(shù)數(shù)據(jù)庫系統(tǒng)在運(yùn)行一段時(shí)間后都會(huì)存在一定的性能問題,主要涉及數(shù)據(jù)庫硬件、數(shù)據(jù)庫服務(wù)器、數(shù)據(jù)庫內(nèi)存、應(yīng)用程序、操作系統(tǒng)、數(shù)據(jù)庫參數(shù)等方面。本文介紹了數(shù)據(jù)庫性能調(diào)整的相關(guān)研究背景、論文選題意義以及數(shù)據(jù)庫性能調(diào)整與優(yōu)化概念、性能評價(jià)指標(biāo)以及數(shù)據(jù)庫優(yōu)化的主要方面;然后,對性能優(yōu)化進(jìn)行了研究,結(jié)合Oracle9i數(shù)據(jù)庫的使用經(jīng)驗(yàn),將SQL語句、Oracle內(nèi)存分配等方面的性能調(diào)整與優(yōu)化問題作為主要研究內(nèi)容,給出了針對新疆鐵通數(shù)據(jù)庫服務(wù)系統(tǒng)性能的調(diào)整策略及優(yōu)化方法。
[關(guān)鍵詞]鐵通 數(shù)據(jù)庫服務(wù)系統(tǒng) 性能 優(yōu)化
一、緒論
數(shù)據(jù)庫應(yīng)用系統(tǒng)性能調(diào)整和優(yōu)化是一迭代過程,從系統(tǒng)的開發(fā)、測試到運(yùn)行不斷優(yōu)化的過程。它主要包括調(diào)整和優(yōu)化硬件配置、應(yīng)用程序、Web服務(wù)器、數(shù)據(jù)庫管理系統(tǒng)、操作系統(tǒng)和網(wǎng)絡(luò)資源等等。通過調(diào)整和優(yōu)化可以提升整個(gè)數(shù)據(jù)庫應(yīng)用系統(tǒng)的性能,使整個(gè)系統(tǒng)達(dá)到理想的運(yùn)行效果,從而降低系統(tǒng)開發(fā)所需成本。
二、數(shù)據(jù)庫服務(wù)系統(tǒng)的功能和問題
(一)數(shù)據(jù)庫服務(wù)系統(tǒng)的功能要求
新疆鐵通數(shù)據(jù)庫服務(wù)系統(tǒng)是一個(gè)非常重要的應(yīng)用系統(tǒng)。為滿足業(yè)務(wù)發(fā)展和提高鐵通服務(wù)質(zhì)量的要求,鐵通服務(wù)網(wǎng)的規(guī)模經(jīng)不斷的升級擴(kuò)容, 不但網(wǎng)絡(luò)規(guī)模越來越大,主機(jī)和數(shù)據(jù)庫的性能和容量也在不斷提高和擴(kuò)大。數(shù)據(jù)庫以運(yùn)行ORACLE為主。由于新疆鐵通數(shù)據(jù)庫服務(wù)系統(tǒng)的重要性,所以對它的功能有以下要求:
(1)系統(tǒng)的高性能要求:每天都會(huì)有大量的數(shù)據(jù)需要進(jìn)行寫入或者是讀出,這就要求數(shù)據(jù)庫服務(wù)系統(tǒng)能夠保證較短的用戶響應(yīng)時(shí)間,較高的數(shù)據(jù)吞吐率,這些歸結(jié)到一點(diǎn)就是要求有很高的性能,尤其是需要防止有人惡意破壞,即要使整個(gè)系統(tǒng)能夠承受這種爆炸性的訪問,保證整個(gè)系統(tǒng)將正常高效運(yùn)行。
(2)數(shù)據(jù)的決對安全保密性:考生的高考志愿信息要求決對的安全可靠,不能被泄露,更改。數(shù)據(jù)庫是企業(yè)信息的核心,其應(yīng)用水平的高低直接影響到企業(yè)管理水平。選擇了一個(gè)高性能的數(shù)據(jù)庫產(chǎn)品不等于就有一個(gè)好的數(shù)據(jù)庫應(yīng)用系統(tǒng),如果數(shù)據(jù)庫系統(tǒng)設(shè)計(jì)不合理,不僅會(huì)增加客戶端和服務(wù)器端程序的編程和維護(hù)的難度,而且還會(huì)影響系統(tǒng)實(shí)際運(yùn)行的性能。
(二)數(shù)據(jù)庫系統(tǒng)性能需求和性能問題
由于鐵通數(shù)據(jù)庫服務(wù)系統(tǒng)的重要性,所以要求系統(tǒng)必須是高可用性數(shù)據(jù)庫。高可用性數(shù)據(jù)庫系統(tǒng)具有四個(gè)基本特征:
(1)可靠性:系統(tǒng)很少出故障,平均故障間隔時(shí)間足夠長;(2)可恢復(fù)性:一旦系統(tǒng)出現(xiàn)故障,系統(tǒng)能夠及時(shí)報(bào)警,并能在短時(shí)間內(nèi)恢復(fù);(3)連續(xù)運(yùn)轉(zhuǎn):系統(tǒng)能夠提供連續(xù)的服務(wù),一旦某一節(jié)點(diǎn)出現(xiàn)故障,系統(tǒng)內(nèi)的其它節(jié)點(diǎn)能立刻接管故障節(jié)點(diǎn)的所有已產(chǎn)生的業(yè)務(wù),不會(huì)出現(xiàn)所有節(jié)點(diǎn)都故障的情況,而且數(shù)據(jù)庫維護(hù)與管理是聯(lián)機(jī)進(jìn)行,不會(huì)停機(jī)。;(4)高性能:系統(tǒng)能夠提供性能優(yōu)良的服務(wù),而且性能的提高不以停機(jī)時(shí)間的增加為代價(jià),通常是通過聯(lián)機(jī)進(jìn)行規(guī)模的擴(kuò)大、調(diào)整和重組來實(shí)現(xiàn)的。(5)可用性是指應(yīng)用程序或服務(wù)在用戶使用它們時(shí)的可用程度。可用性是以系統(tǒng)運(yùn)行和可用時(shí)間的百分比來衡量的,是表征計(jì)算機(jī)系統(tǒng)如何持續(xù)地對客戶進(jìn)行服務(wù)的尺度。
(1)用戶響應(yīng)時(shí)間長,當(dāng)寫入或者讀出大量數(shù)據(jù)時(shí),偶爾出現(xiàn)寫入或者讀取時(shí)間過長的問題,導(dǎo)致,不能同時(shí)滿足大量操作;
(2)系統(tǒng)吞吐量小,內(nèi)存使用太大,并且磁盤I/O操作速度慢。
三、數(shù)據(jù)庫服務(wù)系統(tǒng)性能問題原因分析
(一)共享內(nèi)存小:雖然各個(gè)數(shù)據(jù)庫系統(tǒng)對內(nèi)存的使用方法不盡相同,但為了實(shí)現(xiàn)高效率的訪問,它們都提供了內(nèi)存的共享技術(shù)。調(diào)優(yōu)內(nèi)存的目標(biāo)就是盡可能地提高內(nèi)存中可共享數(shù)據(jù)的命中率。
(二)存儲(chǔ)結(jié)構(gòu)不合理:不管是什么數(shù)據(jù)庫系統(tǒng),在設(shè)計(jì)自己的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)時(shí)都綜合考慮了內(nèi)存調(diào)度的高效性和方便性。比如從邏輯上考慮數(shù)據(jù)塊(BLACK或者PAGE)的大小、區(qū)間(EXTENT或者擴(kuò)展)的分配和增長方式等。
(三)磁盤I/O性能差:磁盤性能應(yīng)該在操作系統(tǒng)級和數(shù)據(jù)庫級進(jìn)行綜合的考慮。為了更好地平衡,在設(shè)計(jì)數(shù)據(jù)庫系統(tǒng)時(shí)應(yīng)根據(jù)應(yīng)用的內(nèi)容設(shè)計(jì)好數(shù)據(jù)的分布方案,特別是應(yīng)重點(diǎn)考慮物理文件頭的爭用問題。驗(yàn)證I/O是否平衡可以通過檢測各種I/O等待情況來判斷。
(四)鎖控制不合理:數(shù)據(jù)庫系統(tǒng)對運(yùn)行時(shí)的數(shù)據(jù)完整性保護(hù)主要是通過各種鎖實(shí)現(xiàn)的,因此各個(gè)數(shù)據(jù)庫系統(tǒng)都提供了類似的鎖機(jī)制。
四、數(shù)據(jù)庫服務(wù)系統(tǒng)性能優(yōu)化
(一)系統(tǒng)性能指標(biāo)和優(yōu)化目標(biāo)
數(shù)據(jù)庫系統(tǒng)性能的判定標(biāo)準(zhǔn)依賴于性能衡量的研究。通常認(rèn)為評價(jià)Oracle數(shù)據(jù)庫系統(tǒng)的性能指標(biāo)主要有以下幾個(gè)方面:
(1)系統(tǒng)吞吐量
吞吐量是指單位時(shí)間內(nèi)數(shù)據(jù)庫完成的SQL語句數(shù)目,以每秒鐘的事務(wù)量表示。提高系統(tǒng)吞吐量可以通過減少服務(wù)時(shí)間在同樣的資源環(huán)境下做更多的工作或通過減少總的響應(yīng)時(shí)間使工作做得更快這兩種方法來實(shí)現(xiàn)。
(2)用戶響應(yīng)時(shí)間
響應(yīng)時(shí)間是指用戶從提交SQL語句開始到獲得結(jié)果集的第一行所需要的時(shí)間,是應(yīng)用做出反應(yīng)的時(shí)間,以毫秒或秒表示。響應(yīng)時(shí)間可以分為系統(tǒng)服務(wù)時(shí)間(CPU時(shí)間)和用戶等待時(shí)間兩項(xiàng)。也就是說,要獲得滿意的用戶響應(yīng)時(shí)間有兩個(gè)途徑:一是減少系統(tǒng)服務(wù)時(shí)間,即提高數(shù)據(jù)庫的吞吐量;二是減少用戶等待時(shí)間,即減少用戶訪問同一數(shù)據(jù)庫資源的沖突率。
(3)數(shù)據(jù)庫命中率
Oracle用戶進(jìn)程所需的所有數(shù)據(jù)都是經(jīng)過緩沖區(qū)高速緩存來存取的。用戶對數(shù)據(jù)的需求能否在內(nèi)存中得到滿足,給出快速的響應(yīng),可用緩沖區(qū)高速緩存命中率來衡量。該比率等于高速緩存命中總數(shù)除以對高速緩存的查找總數(shù)。由于從高速緩存中讀數(shù)據(jù)比從磁盤中讀數(shù)據(jù)的開銷要小得多,因此一般應(yīng)使該命中率足夠高。
(4)內(nèi)存使用情況
內(nèi)存的使用情況主要體現(xiàn)在可共享內(nèi)存、永久性內(nèi)存和運(yùn)行時(shí)內(nèi)存這三者的分配使用上。
(二)優(yōu)化原則的方法
數(shù)據(jù)庫應(yīng)用系統(tǒng)性能調(diào)整和優(yōu)化包括的內(nèi)容比較廣泛。對于各個(gè)系統(tǒng)所采用的軟硬件資源不同,在調(diào)整和優(yōu)化的具體方法上也有不同,在數(shù)據(jù)庫的性能調(diào)優(yōu)過程中需要應(yīng)用程序設(shè)計(jì)人員、應(yīng)用程序開發(fā)人員、數(shù)據(jù)庫管理員以及系統(tǒng)管理員共同完成。
(1)調(diào)整服務(wù)器內(nèi)存分配及相關(guān)參數(shù):內(nèi)存分配是在應(yīng)用系統(tǒng)運(yùn)行過程中優(yōu)化配置的,以O(shè)racle為例,數(shù)據(jù)庫管理員可以根據(jù)數(shù)據(jù)庫運(yùn)行狀況調(diào)整數(shù)據(jù)庫系統(tǒng)全局區(qū)(SGA區(qū))的數(shù)據(jù)緩沖區(qū)、日志緩沖區(qū)和共享池的大小;還可以調(diào)整程序全局區(qū)(PGA區(qū))的大小。合理地分配內(nèi)存資源可以提高高速緩存的性能,降低SQL語句解析的時(shí)間,以及減少頁面調(diào)度及換頁。
(2)調(diào)整磁盤輸入/輸出和數(shù)據(jù)庫物理結(jié)構(gòu):數(shù)據(jù)庫的數(shù)據(jù)最終是存儲(chǔ)在磁盤上的,對數(shù)據(jù)進(jìn)行訪問就是對這些磁盤進(jìn)行讀寫,因此對于這些物理存儲(chǔ)的優(yōu)化是系統(tǒng)優(yōu)化的一個(gè)重要部分。對物理存儲(chǔ)進(jìn)行優(yōu)化雖然并不能夠減少對物理存儲(chǔ)的讀寫次數(shù),但卻可以使這些讀寫盡量并行,減少磁盤讀寫競爭,減少不必要的物理存儲(chǔ)結(jié)構(gòu)擴(kuò)充,從而提高系統(tǒng)性能。
(3)優(yōu)化數(shù)據(jù)庫的操作:確保在應(yīng)用中已充分利用為了提高性能而設(shè)計(jì)的SQL語句以及其中的一些特殊功能。應(yīng)用程序的執(zhí)行最終將歸結(jié)為數(shù)據(jù)庫中的SQL語句執(zhí)行,因此SQL語句的執(zhí)行效率最終決定了數(shù)據(jù)庫的性能。無論是書寫新的還是調(diào)整已有的存在性能問題的SQL語句都要以占用更少的輸入/輸出等資源為主要目標(biāo)。
(三)數(shù)據(jù)庫服務(wù)系統(tǒng)性能優(yōu)化策略
(1)優(yōu)化SQL語句:SQL語句編寫的好壞直接關(guān)系到應(yīng)用程序的執(zhí)行效率,因此,我們根據(jù)前面所介紹的SQL語句的優(yōu)化技巧對系統(tǒng)中原有的SQL語句,尤其是涉及到多表連接且查詢量較大的查詢語句進(jìn)行了仔細(xì)分析,并利用解釋計(jì)劃和SQL語句跟蹤工具,對存在執(zhí)行效率問題的SQL語句進(jìn)行了優(yōu)化重寫。
(2)添加必要和適當(dāng)?shù)乃饕?通過對系統(tǒng)進(jìn)行分析,發(fā)現(xiàn)可以利用索引技術(shù)來加快檢索速度,提高系統(tǒng)性能。首先確定用戶常用的字段,列出全部預(yù)索引字段,然后根據(jù)預(yù)索引字段的選擇性以及前面所介紹的索引創(chuàng)建相關(guān)規(guī)則,在適當(dāng)?shù)淖侄紊显O(shè)置必要的索引。根據(jù)索引創(chuàng)建的相關(guān)規(guī)則可知,字段的選擇性是創(chuàng)建索引的重要參考因素。通常索引字段應(yīng)當(dāng)是定長的,而且長度越短,效率就越高,對具有相同選擇性的索引來說,應(yīng)選擇索引字段較短的那個(gè)?,F(xiàn)在通過手工測量的方法獲得所有預(yù)索引字段的選擇性,從而確定在哪些字段創(chuàng)建索引可能使系統(tǒng)性能達(dá)到最優(yōu)。
(3)合理分布表空間:后臺(tái)進(jìn)程將數(shù)據(jù)庫中的事務(wù)分別寫到聯(lián)機(jī)日志文件、歸檔日志文件、數(shù)據(jù)文件中,這三個(gè)文件之間很容易發(fā)生I/O沖突。因此,數(shù)據(jù)庫中的表及其索引使用的數(shù)據(jù)文件應(yīng)該存放在獨(dú)立的磁盤上,以避免查詢期間的競爭;臨時(shí)表空間與表和索引應(yīng)分開存放;系統(tǒng)表空間與數(shù)據(jù)庫其他部分應(yīng)分開存放;在線重寫日志文件與歸檔重寫日志文件應(yīng)分開存放。一般情況下,90%以上的I/O操作集中在系統(tǒng)表空間、數(shù)據(jù)表空間、索引表空間上,因此將這3個(gè)表空間單獨(dú)存儲(chǔ)在不同的磁盤上。
(4)優(yōu)化Oracle內(nèi)存分配:Oracle數(shù)據(jù)庫管理系統(tǒng)具有內(nèi)存敏感性的特點(diǎn),系統(tǒng)效率可以通過調(diào)整內(nèi)存分配得到很大提升。因此,無論何時(shí),都必須盡可能有效地利用系統(tǒng)內(nèi)存而盡量避免或推遲使用磁盤I/O操作。從查詢語句使用分區(qū)、劃分表空間、聚簇這些優(yōu)化技術(shù)前后的SQL統(tǒng)計(jì)信息中我們發(fā)現(xiàn)一個(gè)非常嚴(yán)重的問題,那就是不管是否運(yùn)用了分區(qū)、劃分表空間,查詢執(zhí)行時(shí)的緩沖區(qū)高速緩存命中率都很低。
SGA是Oracle數(shù)據(jù)庫的心臟,系統(tǒng)運(yùn)行時(shí)Oracle9i Server可以通過調(diào)整以下參數(shù)動(dòng)態(tài)改變緩沖區(qū)高速緩存、共享池、PGA區(qū)域等的大小,以實(shí)現(xiàn)數(shù)據(jù)庫運(yùn)行時(shí)動(dòng)態(tài)調(diào)整其性能。
DB BLOCK SIZE:為減少數(shù)據(jù)鏈接和行遷移,提高磁盤空間的利用率,在設(shè)計(jì)數(shù)據(jù)庫時(shí)就根據(jù)樣例數(shù)據(jù)確定了合適的數(shù)據(jù)塊大小,將其設(shè)為8k,并根據(jù)業(yè)務(wù)現(xiàn)狀和未來發(fā)展趨勢確定了存儲(chǔ)參數(shù)。
SHARED POOL SIZE:系統(tǒng)中共享池的最初大小被設(shè)為32MB,遠(yuǎn)遠(yuǎn)不能滿足實(shí)際需求。為了獲得較好的SQL語句執(zhí)行效率,將該參數(shù)設(shè)置為109051904字節(jié)。
DB CACHE SIZE:系統(tǒng)中該參數(shù)的默認(rèn)大小48MB遠(yuǎn)遠(yuǎn)不能滿足實(shí)際需求。為了將所需的數(shù)據(jù)塊盡可能地緩存到內(nèi)存中,減少磁盤I/O,將它增大為380M,即398458880字節(jié)。
五、總結(jié)
經(jīng)過優(yōu)化調(diào)整后,緩沖區(qū)高速緩存的命中率最低都達(dá)到90%以上,同時(shí),由于高速緩存命中率的大幅度提高使得磁盤讀取數(shù)下降,查詢速度加快了近一倍。內(nèi)存的合理分配是提高系統(tǒng)性能的一個(gè)非常重要的方面。不同優(yōu)化方法的代價(jià)有所不同,針對不同的優(yōu)化方法,在實(shí)際系統(tǒng)中必須根據(jù)具體情況進(jìn)行適當(dāng)?shù)恼壑泻推胶狻?/p>
參考文獻(xiàn)
[1]趙敏?;赟QL Server性能調(diào)整和測評方法[J]計(jì)算機(jī)工程,2000
[2]馬琳?;赟QL Server的AWE內(nèi)存調(diào)整研究[J],計(jì)算機(jī)應(yīng)用研究,2000
[3]薩師煊,王珊。數(shù)據(jù)庫系統(tǒng)概論(第三版)[M],北京:高等教育出版社,2002
[4]李峰,郭玉釵,林宗楷。Oracle數(shù)據(jù)庫性能調(diào)整技術(shù)研究[J],計(jì)算機(jī)學(xué)報(bào),1999
[5]黨會(huì)軍。數(shù)據(jù)庫性能評測與分析[J],北京:國家智能計(jì)算機(jī)研究開發(fā)中心,2002
[6]段靖荒,林子禹,萬豐。J2EE企業(yè)解決方案的平[J]臺(tái)。計(jì)算機(jī)應(yīng)用,2001