(太原理工大學 計算機與軟件學院, 太原 030024)
摘要:隨著網絡應用對數據庫的訪問量日益增大,數據庫管理系統(DBMS)受到越來越多的關注。自主計算的研究解決了DBMS內部資源管理的問題,但是無法解決外部負載的管理問題;不同的負載具有不同的商業價值,具有重要商業價值的負載其性能要求應當優先得到滿足。將針對負載自適應技術開展研究,提出一個改進的數據庫負載自適應體系結構框架并作出了測試。結果表明該框架起到了提高用戶滿意率的作用。
關鍵詞:負載自適應; 框架結構; 理論研究
中圖分類號:TP311文獻標志碼:A
文章編號:1001-3695(2008)11-3317-03
Research on architecture for DBMS
QIANG Yan, LI Jing, CHEN Jun-jie
(Institute of Computer Software, Taiyuan University of Technology, Taiyuan 030024, China)
Abstract:With the increment of visit traffic to database from network application, the data base management system(DBMS)has caused extensive concern. The research of autonomic computing has resolved the inside resource administration problem of DBMS, but it has no way to solve the one of outside workload administration.Different workload have different commercial va-lue.Whose function demands the workload which has important commercial value ought to have priority to satisfied.This paper solved the difficult problem with study on workload adaptation, proposed and tested WAAD(workload adaptation architecture for DBMS). The experimental result indicates that this frame can enhance the satisfaction of users.
Key words:workload adaptation; architecture; fundamental research
0引言
數據庫管理系統通過提高相關硬件核心性能(CPU的主頻和數量、內存的容量等)來提高其網絡應用性能,但是硬件技術的發展存在一定的限制,并且通過提高核心硬件性能的方式需付出昂貴的代價。2001年由IBM提出的包含自我配置、自我恢復、自我優化以及自我保護的自主計算概念為在一定資源上優化和提高數據庫管理系統網絡應用性能作出了很大的貢獻[1],但自主計算主要是基于數據庫管理系統內部資源管理來解決這一問題。本文將側重于研究外部負載的控制和管理,以期在一定的硬件資源條件下提高數據庫管理系統網絡應用性能,最大程度地滿足用戶的需求。
例如,同時對數據庫進行訪問的有100個負載(表1)。其中98個負載為聯機事務處理OLTP類型,其執行時間為0.1~0.5 s,其單個負載消耗CPU資源為1~3%,用戶期待執行完畢時間為<1 s;另外2個負載為聯機分析處理OLAP類型,其執行時間在120 s左右,其單個負載消耗CPU資源為40~60%,用戶期待執行完畢時間為<1 800 s。按照不同的執行順序會出現下面幾種情況的用戶滿意率(假設OLTP類型負載為class0,OLAP類型負載為class1):
a)假設全部OLTP類型負載class0先被執行,OLAP類型負載class1后被執行,結果為:前0.3 s內50個負載class0并發執行完畢,CPU資源消耗為2%×50=100%;隨后的0.3 s內剩余的48個負載class0并發執行完畢,CPU資源消耗為2%×48=96%,剩余4%的CPU資源不足支持class1執行;最后的120 s內2個負載class1并發執行完畢,CPU資源消耗為50%×2=100%,即100個負載在用戶期待執行完畢時間內執行了100個負載,用戶滿意率為100/100×100%=100%。
b)假設負載class1先被執行,負載class0后被執行,結果如下:前120 s內2個負載class1并發執行完畢,后面的0.6 s內98個負載class0并發執行完畢,即100個負載在用戶期待時間內執行了0個負載,用戶的滿意率為0/100×100%=0。
c)其他情況class0、class1隨機被執行,根據上述a)b)得其用戶滿意率在0~100%之間波動。
表1負載自適應舉例分析表
類別數量耗時(均值)/sCPU(均值)期待時間
class0980.32%/個<1 s
class1212050%/個<1 800 s
負載自適應技術將以用戶滿意率為目標控制和管理外部負載以得出最優方案。不同的負載具有不同的商業價值,具有重要商業價值的負載被期待賦予高的重要性,其性能要求應當優先得到滿足,盡可能在用戶達到心理期待時間前將用戶期望的結果反饋給用戶,使用戶滿意率達到最大。
目前國內相關研究主要有浙江大學提出的自適應統計信息框架SASM[2]、中國科學院在自主單元的基礎上提出的由自主單元組成的自主計算系統ACE[3];國外相關研究中加拿大皇后大學提出的負載自適應框架結構[3]最具有代表性。
浙江大學胡天磊博士對于并行數據庫負載自適應開展研究,提出了一個用于解決數據庫自治問題的通用元結構—可管理自治數據庫元素[4](manageable autonomic database element,MADE),重點研究了物理數據庫的自動設計、自適應數據庫安全管理以及自適應并行數據庫負載均衡等問題。其研究的目的同樣是為了提高用戶滿意率,但其研究的側重點主要是針對數據庫內部管理的優化。
加拿大皇后大學牛保寧等人[3]針對負載自適應提出了基本框架結構framework for workload adaptation。該框架由負載檢測過程和負載控制過程組成,負載特征化部件、性能預測部件、負載控制部件、系統監測部件參與運作。本文的研究重點是在該框架的基礎上進行改進,并對改進后的框架進行模擬和測試。
1模型研究
11基本框架
數據庫負載自適應技術要求負載預測的準確性、負載聯機處理的在線性以及負載執行結果反饋的及時性。筆者在牛教授提出的基本框架結構framework for workload adaptation(圖1)的基礎上提出了改進的數據庫負載自適應框架體系結構(workload adaptation architecture for DBMS,WAAD)。改進的部分主要是加入了知識庫模塊,其作用在于可以在負載的性能預測方面支持在線、離線聚類分析,為新負載提供更加準確的性能預測結果。隨著負載數目的不斷加大,其新負載性能預測值也將隨之變化,加入知識庫的負載自適應框架將更好地提高負載性能預測的準確性。而牛教授框架中的性能預測未考慮對歷史負載數據的分析、驗證會對預測新負載的性能值帶來的影響。
負載特征化部件(workload characterization)測量負載參數并生成相應的負載預測模型,其目的是理解并確定負載的資源要求和性能之間的關系,從而為負載控制奠定基礎。性能預測部件(performance modeling)通過建立描述系統特性的性能模型來預測系統和應用的性能。性能模型的輸入參數是由負載特征化部件產生的負載特征參數,如資源要求、請求到達速率(arrival rate);輸出參數是對系統和應用性能的預測和資源使用參數。負載控制部件(workload control)確定負載控制方案以滿足應用的性能要求。根據系統底層的支持不同,控制方案可以是直接的資源分配、系統參數的調整以及負載過濾。系統監測部件監視系統的運行,獲取負載運行的性能參數和系統資源的使用情況。這些數據反饋給負載特征化部件用來確定負載的變化,反饋給性能預測部件用來性能模型的動態演化,反饋給負載控制部件用來觸發負載控制的動作。
負載檢測過程探測負載的變化、計算負載特征參數、預測負載的趨勢。負載特征化部件和系統監測部件參與到負載檢測過程中,負載特征化部件根據采集到的負載數據和系統監測部件反饋的信息對負載分類,提取負載特征參數,計算資源要求。負載控制過程的實質是分配資源,也就是確定分配給每個應用或負載類的資源的多少,這需要建立性能模型。當負載變化被檢測到時,負載控制部件決定是否要重新分配資源。如果要重新分配資源,負載控制部件會同性能預測部件產生一個最優方案并執行之。性能預測部件、負載控制部件和系統監測部件參與其負載控制過程的運作。知識庫負責存儲負載特征化、預測和控制中產生的規則和策略,并通過監測部件得到結果來不斷優化知識庫中的規則和策略。
本文提出的改進數據庫負載自適應框架WAAD如圖2所示。知識庫作為本文研究的重點,參與到了WAAD中的各個模塊和過程中。
知識庫參與負載檢測過程,負載檢測過程主要由負載特征化部件和系統檢測部件組成,按照不同部件的不同功能劃分。在負載特征化過程中知識庫用來記錄負載特征化過程中負載從進入數據庫負載自適應框架體系結構WAAD到負載特征化結束的相關數據,如負載自身相關屬性(用戶期待時間、負載的商業價值重要性)、負載特征化信息(負載分類、負載歸類等)。在系統檢測過程中知識庫用來記錄負載在實際執行過程中的詳細數據,如負載執行I/O響應時間、負載執行占用CPU資源的比例、負載執行占用內存資源的數值等。
知識庫參與負載控制過程,負載控制過程主要由性能預測部件和負載控制部件組成。在性能預測部件過程中知識庫記錄負載在負載特征化過程中的分類后的性能資源預測值;在負載控制部件中知識庫用來記錄負載的排隊序列值。
本文中的知識庫通過參與到WAAD各個過程和部件中得到的這些基礎數據。它主要是對負載用來進行在線、離線的分析以便更加準確、快速地對負載性能需求值進行預測,如通過知識庫記錄的負載歷史數據可以不斷地將負載執行實際值與預測值進行對比,然后通過算法來進行修正,不斷提高預測的準確性,即實現自我學習的功能。
12算法分析
知識庫部件參與了WAAD中的負載特征化過程,與負載特征化部件相互協作,完成性能預測的功能。本文在知識庫模塊的基礎上研究了在線、離線的聚類算法來提高新負載的性能預測值。
負載特征化是該框架WAAD的關鍵部件,只有首先對負載進行快速分類才能對負載進行預測和控制。負載的分類一般采用聚類算法,聚類算法中比較典型的就是K-means算法[4]。但在K-means算法中的K值(K表示分類后類的個數)必須提前設定而且不能根據負載的實際情況改變,所以本文在K-means算法的基礎上進行了改進,提出了基于特征向量的聚類算法CFV(cluster based on feature vectorsin autonomic database),使得類的個數即K值能夠根據負載的實際情況動態變化。
CFV算法描述如下:首先根據特征向量分類,然后通過 K-means算法對分類進行驗證,最后按照驗證結果通過增加特征向量以及優化分類對K值進行調整。
CFV算法基本完成了初始負載的分類,其優點是分類后使類內數據的聚合度比較高;缺點是該算法時間消耗比較大。由于客戶端輸入的負載要求實時在線處理,要求負載分類能在線、快速、準確完成。CFV算法無法滿足其快速的要求,筆者又在此基礎上提出了基于特征向量的增量聚類算法ICFV(incremental cluster based on feature vectorsin autonomic database)。
ICFV算法描述為:新增負載進入后,在CFV聚類算法的基礎上,先根據特征向量預測新增負載應該歸入到哪一類,并將該類的中心點即類內負載平均運行時間作為新增負載的運行時間。類中心點的計算公式如下:
Zm=∑nmj=1Smj/nm (m=1,2,3,4;j =1,2,…,nm)
(1)
其中:Zm表示m類中心點;nm表示第m類中包含負載的數目。
當負載運行完后,比較實際運行時間與類中心點的距離,將新增負載歸入到距離最近的類中。當新增負載歸入到相應的類中后,還要檢驗最初的預測與實際的分類是否相同。統計大量的新增負載,如果有部分負載最初的預測與實際的分類不同,也就是說明根據CFV算法的結果分類是不準確的。在這種情況下,就要將原有的負載和新增的負載合并到一起重新運行CFV算法,并將新的聚類結果作為增量聚類算法ICFV的基礎。
綜上所述,負載特征化部件在初始時可以通過CFV聚類算法生成相應的負載預測模型。當新負載進入后,可以通過ICFV聚類算法對新負載進行匹配分類并進行性能預測。
在數據庫負載完成特征化分類和性能預測后,負載進入負載控制部件。在控制部件中可以通過實現對數據庫管理系統DBMS的資源(如CPU使用率、內存使用率)控制,即是設定相關系統資源最高使用峰值,如設定CPU資源的峰值為80%,來保證數據庫管理系統服務器保持穩定的運行狀態,這樣可以消除由于負載的多樣化引起的數據庫管理系統服務器出現的不穩定波動而帶來的損害。
2實驗結果及分析
根據以上的框架體系結構WAAD,初步搭建了一個數據庫負載自適應體系結構框架的軟件模型。針對模擬的100條數據庫負載(表2)進行了實驗,將負載進行WAAD負載自適應控制前后的結果相對照,得到的結果如圖3所示。
表2負載自適應實驗數據
類別數量耗時(均值)/sCPU(均值)/%期待時間
class0900.25 4<1 s
class1100.4 50<2 s
實驗環境:
數據庫服務器:Dell Optiplex 745×1臺(CPU為Intel Core(TM)2 CPU 1.80 GHz,內存為512 MB×2 667 Hz,120 GB硬盤)。
應用計算機:Dell Optiplex 320×3臺(CPU為Intel2.93 GHz,內存為512 MB×667 Hz,80 GB硬盤)。
網絡環境:星型局域網,帶寬100 Mbps。
按照表2計算其均值估計最佳用戶滿意率為92%,最差用戶滿意率為10%。通過圖3可以看出,由于負載被執行的順序不同,其用戶滿意率在8~91%;當進行負載自適應WAAD控制后,其用戶滿意率始終保持在80~90%。WAAD起到了負載控制的作用,并有效地提高了用戶滿意率。
同樣針對表2中模擬的這100個負載,本文在WAAD的負載控制部件中將CPU資源的最優使用率參數調整為85%進行了實驗,將負載進控制前后的結果相對照,結果如圖4所示。
通過圖4可以看出,在負載控制DBMS的CPU資源調整前,DBMS中的CPU使用率隨著負載的變化也在不斷地變化,有時竟達到了100%的峰值,這在DBMS中是極具危害性的。在負載控制DBMS的CPU資源調整后,DBMS中的CPU使用率隨著負載的變化基本保持在85%附近波動,實現了資源的優化控制。
3結束語
本文主要介紹了數據庫負載自適應體系結構框架并進行了測試。從實驗結果表明,以用戶滿意率和資源優化控制兩個方面為目標得到了很好的控制。該框架具有一定的可操作性,但是在資源優化控制和滿意率方面還是存在著一定的矛盾。筆者將在以后的研究中針對這一問題進行深入細致的研究和論證;同時,也將繼續在完善負載自適應過程中的準確性、快速性方面作出努力。
參考文獻:
[1]GANEK A G,CORBI T A. The dawning of the autonomic computing era[J]. IBM Systems Journal,2003,42(1):5-18.
[2]張海俊,史忠植.自主計算軟件工程方法[J].小型微型計算機系統,2006,27(6):1077-1082.
[3]NIU Bao-ning, MARTIN P, POWLEY W,et al. Workload adaptation in autonomic DBMS[C]//Proc of Conference of the Center for Advanced Studies on Collaborative Research. New York:ACM Press, 2006:161-173.
[4]胡天磊.自治數據庫系統的理論與方法研究[D].杭州:浙江大學, 2006.
[5]張建萍,劉希玉.基于聚類分析的K-means算法研究及應用[J].計算機應用研究,2007,24(5):166-168.
[6]BROWN K P, MEHTA M, CAREY M J,et al. Towards automated performance tuning for complex workloads[C]//Proc of the 20th Very Large Data-bases Conference. San Francisco:Morgan Kanfmann Publishers,1994:72-84.
[7]SCHROEDER B,HARCHOL-BALTER B,IYENGAR A,et al.Achieving class-based QoS for transactional workloads[C]//Proc of the 22nd International Conference on Data Engineering. Washington DC:IEEE Compu-ter Society, 2006:153.
[8]趙卓,吳麗平,陳綺,等.基于主動機制的數據庫管理系統的研究[J].計算機工程, 2006,32(6):72-73,79.
[9]MENASC D A, BENNANI M N. On the use of performance models to design self-managing computer systems[C]//Proc of Computer Measurement Group Conference. 2003:7-12.
[10]PACIFICI G, SPREITZER M,TANTAWI A,et al.Performance mana-gement for cluster based Web services[J].IEEE Journal on Selected Areas in Communications,2005,23(12):2333-2343.