【摘 要】數(shù)據(jù)庫系統(tǒng)優(yōu)化是數(shù)據(jù)庫商業(yè)化的前提,按用戶需求開發(fā)的數(shù)據(jù)庫系統(tǒng)不僅要滿足大數(shù)據(jù)量并發(fā)需求,還需要有穩(wěn)定、安全、可靠的性能,采取科學(xué)的數(shù)據(jù)庫系統(tǒng)測試方法,可為優(yōu)化提升數(shù)據(jù)庫性能提供數(shù)據(jù)支持。本文通過分析數(shù)據(jù)庫系統(tǒng)測試方法步驟,結(jié)合實例,為數(shù)據(jù)庫測試優(yōu)化提供思路。
【關(guān)鍵詞】數(shù)據(jù)庫系統(tǒng) 性能優(yōu)化 性能測試
一、引言
自上世紀四十年代世界第一臺計算機問世后,在短短幾十年的發(fā)展歷程中,計算機技術(shù)得到了快速發(fā)展,人們在享受數(shù)據(jù)庫技術(shù)便利的同時,也為數(shù)據(jù)庫系統(tǒng)存在的一系列隱患和問題所困擾,伴隨著數(shù)據(jù)庫系統(tǒng)技術(shù)的升級和發(fā)展,數(shù)據(jù)庫系統(tǒng)安全隱患也時時威脅著人們的“數(shù)據(jù)庫生活”安全。
從性能和安全意義上說,數(shù)據(jù)庫的性能是否穩(wěn)定、可靠是衡量數(shù)據(jù)庫系統(tǒng)優(yōu)劣的主要要素。數(shù)據(jù)庫系統(tǒng)開發(fā)建立后,能否滿足用戶的需求,能否實現(xiàn)用戶在使用、安全、可靠等要求和愿意,必須要進行數(shù)據(jù)庫系統(tǒng)的性能優(yōu)化測試,以先期發(fā)現(xiàn)數(shù)據(jù)庫在使用功能上、交互使用上、數(shù)據(jù)維護管理上是否存在穩(wěn)定性、可靠性、安全性方面的漏洞或缺陷,以較低的技術(shù)成本換取數(shù)據(jù)庫系統(tǒng)改進、完善的方法和技術(shù)措施,為數(shù)據(jù)庫系統(tǒng)轉(zhuǎn)變?yōu)椤俺善贰蓖度胗脩羰褂?,提供技術(shù)支持。
二、關(guān)注的主要問題
作為數(shù)據(jù)庫系統(tǒng)測試,應(yīng)把數(shù)據(jù)庫整個集成系統(tǒng)納入測試關(guān)注的范圍,要根據(jù)目標用戶對數(shù)據(jù)庫系統(tǒng)在性能和安全方面的要求來明確測試目的,確定測試規(guī)約,并對數(shù)據(jù)庫系統(tǒng)進行風(fēng)險評估,關(guān)注數(shù)據(jù)庫系統(tǒng)運行性能和效果,以此確定測試類型。
(一)數(shù)據(jù)庫系統(tǒng)測試的任務(wù)目標
數(shù)據(jù)庫系統(tǒng)測試的主要任務(wù)和目標就是要在測試中了解系統(tǒng)運行的特征數(shù)據(jù)一致性、完整性、安全性等的綜合測試,發(fā)現(xiàn)各類性能要素瓶頸和功能極限,以滿足改進和優(yōu)化數(shù)據(jù)庫系統(tǒng)的要求,達到目標用戶使用需求。
1.整體評估數(shù)據(jù)庫系統(tǒng)。根據(jù)數(shù)據(jù)庫設(shè)計方案要求,對數(shù)據(jù)庫系統(tǒng)性能進行系統(tǒng)性的測試,以衡量數(shù)據(jù)庫系統(tǒng)的整體性能,評價數(shù)據(jù)系統(tǒng)能否滿足用戶需求,同時,找出系統(tǒng)設(shè)計與用戶使用上存在的問題和差距,便于設(shè)計人員對系統(tǒng)進行修正設(shè)計和改進。
2.查找缺陷優(yōu)化設(shè)計方案。根據(jù)系統(tǒng)設(shè)計要求,逐個條件進行臨界極限測試,以發(fā)現(xiàn)設(shè)計缺陷,并根據(jù)用戶對系統(tǒng)要求,對臨界狀態(tài)設(shè)計方案進行修改或重新設(shè)計,以期突破設(shè)計瓶頸,改進系統(tǒng)性能和功能。
3.提升和優(yōu)化系統(tǒng)性能。通過系統(tǒng)性測試和反復(fù)驗證,掌握系統(tǒng)測試數(shù)據(jù),并根據(jù)此數(shù)據(jù),不斷進行調(diào)整和優(yōu)化,以期系統(tǒng)達到最優(yōu)運行狀態(tài)。
4.負載驗證穩(wěn)定性和可靠性。通過一定時間、一定量的數(shù)據(jù)、用戶等模擬加載,從多角度驗證數(shù)據(jù)庫系統(tǒng),有效評價系統(tǒng)運行的穩(wěn)定性和可靠性,為系統(tǒng)提交用戶使用提供驗證數(shù)據(jù)參考。
(二)數(shù)據(jù)庫系統(tǒng)測試應(yīng)把握的問題
1.掌握用戶需求。數(shù)據(jù)庫系統(tǒng)開發(fā)是在用戶需求的基礎(chǔ)上進行的,因此,該數(shù)據(jù)庫系統(tǒng)主要業(yè)務(wù)和次要業(yè)務(wù)是哪些、單位時間內(nèi)訪問量是多少、并發(fā)量是多少等都構(gòu)成了數(shù)據(jù)庫使用性能的重要要素,只有根據(jù)用戶需求進行測試,才能有效保證測試的結(jié)果和結(jié)論是否符合要求。
2.關(guān)注系統(tǒng)的臨界性能。所謂臨界就是系統(tǒng)的功能設(shè)計的有效限值。當(dāng)負荷、負載達到臨界數(shù)值時,系統(tǒng)能夠正常運轉(zhuǎn);當(dāng)負荷、負載超過臨界數(shù)值時,系統(tǒng)隨著負載逐步增加其運行效率或速度逐步降低,但系統(tǒng)仍能保持正常運行,不至于出現(xiàn)系統(tǒng)崩潰和死機現(xiàn)象。此外,還應(yīng)關(guān)注系統(tǒng)是否有隨著時間的延長存在性能衰減的現(xiàn)象。
3.預(yù)有準備應(yīng)急措施。根據(jù)數(shù)據(jù)庫系統(tǒng)設(shè)計指標,制定測試應(yīng)急措施和方案,在對系統(tǒng)進行全面測試過程中,能夠針對不同的意外情況有有效的應(yīng)對措施和方案,測試系統(tǒng)在保持正常運行的條件下,對各種情況處置的可行性和有效性。
4.充分了解業(yè)務(wù)特性。在數(shù)據(jù)庫系統(tǒng)優(yōu)化測試的實踐中,發(fā)生系統(tǒng)性能問題主要集中在中間件服務(wù)器、操作系統(tǒng)、數(shù)據(jù)庫等的參數(shù)設(shè)置上,應(yīng)充分了解業(yè)務(wù)特點,以期在Oracle的內(nèi)存分配和SGA分配上給予合理區(qū)分,否則就行對運行性能帶來極大影響。
5.充分預(yù)估數(shù)據(jù)量。數(shù)據(jù)庫系統(tǒng)開發(fā)是建立在用戶數(shù)據(jù)量不斷增長的基礎(chǔ)上,有些數(shù)據(jù)量甚至呈量級增長,這對數(shù)據(jù)庫的維護管理帶來挑戰(zhàn)。因此,應(yīng)充分預(yù)估數(shù)據(jù)庫容量增長情況,通過反復(fù)多次測試,科學(xué)合理地確定內(nèi)存的最優(yōu)配置。
三、數(shù)據(jù)庫系統(tǒng)優(yōu)化測試步驟
數(shù)據(jù)庫性能優(yōu)化測試通常有強度測試、負載測試、壓力模型測試、多用戶并發(fā)測試、配置測試、大數(shù)據(jù)量測試、可靠性測試等等。測試步驟包括編制測試方案、構(gòu)建測試集群環(huán)境、開發(fā)測試程序、執(zhí)行測試和測試報告分析五個步驟。如下圖解。
(一)編制測試方案
首先是做好對數(shù)據(jù)庫系統(tǒng)文件資料的分析研究工作。結(jié)合業(yè)務(wù)模型和系統(tǒng)開發(fā)框架結(jié)構(gòu),深入分析研究數(shù)據(jù)庫系統(tǒng)介紹說明書、用戶使用手冊、拓撲結(jié)構(gòu)圖、系統(tǒng)配置說明及服務(wù)器配置等等相關(guān)文件資料,對數(shù)據(jù)庫系統(tǒng)開發(fā)和關(guān)鍵數(shù)據(jù)有個較為系統(tǒng)的了解和掌握;其次是做好溝通交流進一步系統(tǒng)開發(fā)的目標、性質(zhì)和用途。通過與用戶、系統(tǒng)開發(fā)技術(shù)人員的溝通,對測試中可能涉及到的相關(guān)問題和要素進行了解和確認;第三,編制測試方案和計劃,綜合所掌握的資料,結(jié)合測試所要達到的目標,擬定測試方法步驟,列出測試指標及關(guān)鍵點性能要求,完成測試方案計劃。
(二)構(gòu)建測試集群環(huán)境
測試集群環(huán)境主要是指數(shù)據(jù)庫系統(tǒng)測試所必備的軟、硬件條件,包括待測試系統(tǒng)運行的操作系統(tǒng)、數(shù)據(jù)庫、中間件,以及用于壓力模型測試的控制臺、發(fā)起工具等測試系統(tǒng),網(wǎng)絡(luò)環(huán)境的建立和網(wǎng)關(guān)、防火墻等應(yīng)用軟件的安裝,同時,進行相關(guān)的基礎(chǔ)數(shù)據(jù)準備工作,以符合測試要求,保證 構(gòu)造數(shù)據(jù)與實際工作環(huán)境數(shù)據(jù)相關(guān)聯(lián)的要求。在建立硬件、軟件應(yīng)用系統(tǒng)和相關(guān)的數(shù)據(jù)準備后,再對環(huán)境可用性進行測試驗證。
(三)開發(fā)測試場景
測試場景是根據(jù)數(shù)據(jù)庫系統(tǒng)用戶業(yè)務(wù)實際運行環(huán)境進行模擬的程序腳本,以通過進行參數(shù)化編程、模擬和調(diào)試等工作,測試系統(tǒng)在實際運行環(huán)境下性能運行情況,發(fā)現(xiàn)實際運行與設(shè)計性能偏差數(shù)據(jù)。
(四)執(zhí)行測試
根據(jù)測試方案,在一定的測試環(huán)境下,按照設(shè)計測試用例運行測試程序,執(zhí)行系統(tǒng)測試條件。
(五)測試報告分析
按測試方案完成測試后,收集整理測試數(shù)據(jù)及相關(guān)監(jiān)測記錄數(shù)據(jù),并對測試運行中系統(tǒng)出現(xiàn)的問題進行對比分析,研究被測試系統(tǒng)存在的性能和問題。
1.理定缺陷和問題。系統(tǒng)的性能問題一般集中在操作系統(tǒng)配置、數(shù)據(jù)庫配置、應(yīng)用程序代碼以及網(wǎng)絡(luò)設(shè)置和條件等,應(yīng)根據(jù)測試數(shù)據(jù)或偶發(fā)情況分析,厘清確定缺陷或問題的性質(zhì)。
2.問題原因分析。根據(jù)查找系統(tǒng)缺陷或問題,進行延伸分析其相互關(guān)聯(lián)關(guān)系及影響區(qū)域和范圍,以針對性地分析出現(xiàn)問題的根源。
3.擬定優(yōu)化方案。根據(jù)系統(tǒng)優(yōu)化目標要求,結(jié)合測試中發(fā)現(xiàn)的問題和分析的原因?qū)ο到y(tǒng)優(yōu)化的影響,擬出優(yōu)化方案。優(yōu)化方案應(yīng)重點關(guān)注資源利用率(對不同系統(tǒng)資源的使用程度,是我們測試和分析瓶頸的主要對象)、吞吐量(對不同系統(tǒng)資源的使用程度,是我們測試和分析瓶頸的主要對象)、并發(fā)(指許多的用戶同時做同樣的一個操作。通過并發(fā)操作,我們可以看到系統(tǒng)是否穩(wěn)定,并發(fā)現(xiàn)系統(tǒng)設(shè)計中的問題)和請求響應(yīng)時間(指從客戶端發(fā)出一個請求,到接收到服務(wù)器端返回的結(jié)果之間的時間)等關(guān)鍵指標。
4.測試優(yōu)化方案。對原測試環(huán)境作出相應(yīng)調(diào)整,并按優(yōu)化方案要求,對系統(tǒng)進行基準測試,即根據(jù)性能基準設(shè)計測試程序要求搭建測試環(huán)境,完成性能測試,比較測試結(jié)果與相同測試程序在相同系統(tǒng)或另外系統(tǒng)上的運行結(jié)果。
5.結(jié)果分析。優(yōu)化方案測試后,對比分析測試結(jié)果,了解優(yōu)化方案與預(yù)定目標間的結(jié)果偏差、問題或缺陷是否得到有效解決、系統(tǒng)在局部或整體上的優(yōu)化程度等,對優(yōu)化效果進行評估,以確定是否再進一步優(yōu)化。
6.驗證測試。在優(yōu)化的基礎(chǔ)上,進行驗證測試,以驗證系統(tǒng)優(yōu)化或局部優(yōu)化的性能和效果。
四、運用LoadRunner實現(xiàn)壓力測試實例
運用LoadRunner 實施壓力測試是一種較為實用的方法。LoadRunner是一種預(yù)測系統(tǒng)行為和性能的工業(yè)標準級負載測試工具。通過模擬呈數(shù)量級用戶實施并發(fā)負載及實時性能監(jiān)測,來確認和查找系統(tǒng)性能問題,能夠?qū)φ麄€用戶部門(或企業(yè))架構(gòu)進行測試。運用該方法測試,可有效縮短測試時間、優(yōu)化系統(tǒng)性能,加快應(yīng)用系統(tǒng)發(fā)布周期。
LoadRunner可在運行測試中監(jiān)控系統(tǒng)及Web服務(wù)器等資源運行數(shù)據(jù),同步分析響應(yīng)時間,對系統(tǒng)性能瓶頸分析和定位具有一定的幫助。其負載測試流程有擬制計劃、創(chuàng)建腳本、定義場景、執(zhí)行場景、執(zhí)行監(jiān)視、分析結(jié)果等五個階段,運行中,可監(jiān)視DataBase Server、Web Server等服務(wù)器的運行,并通過添加性能計數(shù)器來實現(xiàn)監(jiān)視場景。
五、數(shù)據(jù)庫系統(tǒng)優(yōu)化途徑
在系統(tǒng)測試中,結(jié)合結(jié)果報表分析,應(yīng)著重關(guān)注并發(fā)用戶數(shù)量、請求響應(yīng)時間、事務(wù)響應(yīng)時間、TPS、吞吐率、資源利用率、點擊率等關(guān)鍵指標,根據(jù)關(guān)鍵指標數(shù)據(jù)所反映出的問題進行改進,找到優(yōu)化途徑。
1.數(shù)據(jù)庫數(shù)據(jù)過量調(diào)用問題。因應(yīng)用程序反復(fù)調(diào)用數(shù)據(jù)庫數(shù)據(jù),一定程度上影響系統(tǒng)運行性能,調(diào)優(yōu)時應(yīng)從數(shù)據(jù)庫中大量取得所需要的數(shù)據(jù)。
2.數(shù)據(jù)庫連接池資源泄漏問題。數(shù)據(jù)庫連接池因存在缺陷而導(dǎo)致數(shù)據(jù)資源的泄漏,如程序代碼沒有close()連接、缺少finally塊,或close()無法運行等,應(yīng)認真分析程序代碼,查找程序編制中的缺陷和漏洞。在調(diào)優(yōu)時應(yīng)注意兩個問題:
(1)數(shù)據(jù)庫連接管理影響到應(yīng)用程序伸縮性和健壯性等性能指標。負責(zé)分配、管理和釋放數(shù)據(jù)庫連接數(shù)的據(jù)庫連接池數(shù)=每個線程需要連接數(shù)據(jù)庫的平均數(shù)×線程池數(shù)×1.1(即增加10%的峰值負載)。一般情況下每個線程需要連接數(shù)據(jù)庫的平均數(shù)是1。
(2)在最初池大小設(shè)置時,應(yīng)考慮與最大池大小相等。
3.SQL及其索引問題。應(yīng)關(guān)注SQL語句及其索引或鎖定屬性問題,對SQL語句及其索引進行優(yōu)化調(diào)整,可有效提高系統(tǒng)性能。
六、結(jié)束語
數(shù)據(jù)庫系統(tǒng)的優(yōu)化測試是一項復(fù)雜的技術(shù)工作,需要通過較低的成本來模擬真實環(huán)境,測試系統(tǒng)正式上線后的運行性能,并根據(jù)測試結(jié)果按預(yù)定性能目標進行優(yōu)化,以保證用戶軟件系統(tǒng)達到預(yù)定的性能指標。由于系統(tǒng)測試關(guān)注的內(nèi)容較多,技術(shù)繁瑣,優(yōu)化后的系統(tǒng)性能是否滿足用戶需求,是一個相對較長的運行實踐過程,需要有持續(xù)的維護和關(guān)注,不斷積累經(jīng)驗,才能更好地解決系統(tǒng)運行中可能出現(xiàn)的新情況、新問題。
參考文獻:
[1] 董建彬, 田悅新, 馬艷玲. 數(shù)據(jù)庫系統(tǒng)測試方法與技術(shù)探討[J].中國民航飛行學(xué)院學(xué)報, 2008(2).
[2] 姚競英.數(shù)據(jù)庫性能測試的研究[J].電腦知識與技術(shù). 2011(10).
[3] 陳紹英,劉建華,金成姬.LoadRunner 性能測試實戰(zhàn)[M].北京:電子工業(yè)出版社,2007.
[4] 于涌. 軟件性能測試與LoadRunner實戰(zhàn)[M].北京:人民郵電出版社,2008.
[5] 張亞. 數(shù)據(jù)庫系統(tǒng)的性能測試探討[M]北京。電子工業(yè)出版社,2014.
作者簡介:
肖曉枝,女(1973.05.03~),籍貫:安徽,學(xué)歷:本科,職稱:工程師,研究方向:數(shù)據(jù)庫管理,工作單位:福建省產(chǎn)品質(zhì)量檢驗研究院。