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