陳震
(福州外語外貿學院,福建 福州 350202)
基于輕量數據挖掘方法的數據庫鎖表優化研究
陳震
(福州外語外貿學院,福建 福州 350202)
數據庫系統負擔著重要的事務處理任務,為了保證在負載過大時也可以提供事務處理能力,必須加強數據庫系統,并且對其性能進行合理優化.通過DBA分析性能數據,并且優化系統是十分困難的辦法,隨著使用時間增長,系統負載波動與結構越來越復雜,利用數據庫具備的系統進行自動優化,是解決當前問題的有效途徑.本文分析了輕量數據挖掘如何優化數據庫系統,并且著重研究了數據庫鎖表管理辦法,使用性能優化數據,建立了基于鎖表預測系統的神經網絡預測器.經過實驗證明,數據庫系統可以得到16%的性能提升.
輕量數據;數據挖掘;鎖表優化
大型信息系統需要DBMS進行統一調控,信息系統已經開始向網絡化轉移,用戶可能在任何時間進行并發操作,加大了DBMS系統的負載.為了解決負載情況,釋放系統資源,需要對數據庫系統進行優化,提高系統反應速度,及時處理查詢工作,這也是數據庫系統最為重要的一項功能.由于DBA人工優化手段無法適應日益復雜的數據庫系統,所以建立自我調節的數據庫鎖表系統十分重要,通過鎖表測試神經網絡,適當調整相關參數,優化系統性能,提高系統執行效率.
神經元網絡是將簡單神經元按照規則連接,通過網絡化模擬大腦結構,采取學習算法收集信息,將知識存儲在網絡單元之間.神經網絡與傳統AI相比,具備較強的直觀感與抗噪能力,根據不同的網絡模型與算法,可以做到分類、優化、識別、預測和控制,進行數據挖掘時,主要使用前向神經網絡分類規則.神經網絡也存在一些缺點,黑箱性是其中最難以理解的學習過程,所以我們要建立完善的白化機制,并且根據規則確定權值矩陣,為數據挖掘提供有效手段.解決方案有兩種,其一是使用系統輔助,在神經網絡運行階段,將輸入與輸出通過輔助系統處理,然后反向關聯,完成神經元網絡自動推理.此類方法可以將網絡運行與解釋分為兩套系統,但是建設投資較大,靈活性低,所以在網絡中使用訓練好的規則,是當前數據挖掘中較為常見的方法.
在網絡中進行數據挖掘,其目的主要有兩點,即結構分解與非線性映射.結構分解主要以隱層節點與輸出點作為目標,將網絡分為單層子網,在簡單的子網結構中挖掘信息.比較常見的算法是KT與MofM,但是KT算法通用性較差,并且對網絡環境有一定要求,演算過程較為復雜,容易引起組合爆炸.為了解決這個問題,在處于大規模網絡時,必須對網絡結構進行刪減,去除冗余節點.去除網絡多余部分時,可以通過兩段法進行調整,通過預處理修整動態部分,構造出聯接情況不同的拓撲結構,清除多余節點.如果初始網絡存在錯誤,就可以通過結構學習法進行處理,將隱層結點生成與網絡刪除變為動態控制,構建出簡潔方便的結構.
在使用非線性映射進行網絡提取時,通過網絡輸出與輸入數據進行操作,避免網絡隱層結構提升演算難度.根據相似權值提出的CSW算法,是非常典型的算法,但是目前在數據挖掘領域還存在很多問題,為了降低算法的復雜度,必須加強提取規則的適用性與理解性.在制定神經網絡提取規則時,可以通過評估標準與訓練提高網絡性能,這也是今后研究的重點方向.
數據庫性能由多種因素決定,其中查詢優化、信息更新、負載學習、資源分配等因素都會造成一定影響.其中資源分配是非常重要的部分,合理的分配可以大幅度加強系統性能,資源包括硬件與軟件兩種,硬件區域包括內存、CPU、網絡設備等,軟件包括緩沖、鎖表、后臺等.為了對鎖表進行優化處理,必須了解鎖表原理,根據運行機制提高系統性能,構建合理的優化模型.
2.1 數據加鎖粒度
數據庫系統內容龐大,為了保證數據不出現偏差,在更新前必須進行加鎖.系統可根據不同系統提供相應級別的鎖粒度,方便系統進行記錄與儲存,鎖粒度由數據大小決定,例如一條記錄更新時,需要加行級鎖,但是大量數據更新時,就需要加表級鎖.在用戶同一時段大量操作時,都會選擇小粒度鎖,防止加鎖沖突,一旦行級鎖數量過多,超過鎖表最大容量,系統就會自動轉換一個行級鎖為表級鎖,節約鎖表空間.表級鎖粒度較大,容易降低系統并發度,行級鎖粒度小,但是對內存空間消耗過多,這是一個固定的矛盾,只能合理安排儲存方案,根據負載情況進行優化,使系統性能平穩運行.
2.2 內存資源分配
為了接納并發用戶提出的加鎖要求,需要根據內存增加鎖表大小,單純增加鎖表大小并不能帶來優勢,甚至可能帶來負面影響.沒有使用的內存空間完全可以應用在數據緩存之中,增大緩沖區可以提高存取命中率.鎖表數量減少時,可以適當減小鎖表大小,留出內存空間,擴大緩沖區域,提高系統整體性能.
2.3 解決死鎖問題
一旦在同一時段內有大量并發數據進行存取,就可能導致死鎖現象發生,目前解決死鎖問題的方案有兩種,分別為檢測和預防.大多數DBMS都采取檢測方法,發現死鎖后,如果事務工作量較少,就需要回轉事務,使停止的事務重新執行.系統需要定期進行檢測,如果間隔過長,就會導致一些死鎖存留,降低系統響應速度,如果間隔過短,就會浪費死鎖檢測開銷,降低系統性能.死鎖檢測必須根據運行情況確定,并及時進行調整,確保系統高效運行.
2.4 加鎖超時參數
SQL執行時,需要設置加鎖超時參數,參數主要用于規定加鎖時間,如果規定時間內沒有獲得鎖資源,就需要將SQL語句回轉.超時參數設置需要犧牲SQL執行力,確保并發度不被影響,保證系統總吞吐量.在設置參數時,必須參考數據沖突狀況,如果數據沖突少,就表示SQL語句有更多數據加鎖機會,所以將參數設置為較長的時間比較有利,如果時間過短,可能導致無法進行數據加鎖,SQL語句自動退出,浪費執行資源.
3.1 優化架構
優化系統主體模塊為:數據采集、訓練、規則引擎、預測器等,具體架構如圖一所示.

圖一 優化架構圖
性能數據采集模塊主要負責監視收集鎖表參數,性能數據在訓練過程中通過預測器處理,在優化階段通過規則引擎二次處理.通過收集到的數據,對預測器進行基本訓練,大量數據訓練可以提高系統性能,并且根據預測器制定鎖表參數,提高神經網絡預期性能.規則引擎承擔全部優化過程,通過專家知識對鎖表進行調整優化,通過規則集轉變為形式化數據,規則引擎負責運行.選擇規則集調整參數,通過預測器確定調整幅度,規則引擎由ABLE語言進行描述.預測器的主要功能為預測系統性能,根據收集到的大量數據進行訓練,挖掘數據中存在的知識,經過訓練后可以提高預測能力,輔助規則引擎改變參數,并且提出調整幅度.
3.2 鎖表性能指標
鎖表性能主要定義為死鎖率與平均鎖時間,死鎖率由10000個樣本組成,平均鎖時間是加鎖時間總和除以加鎖數量得到的平均數,參數可以在DBMS中獲得.鎖表性能由熱點訪問、并發事務、鎖表大小、數據分布等情況決定.
3.3 訓練數據收集
鎖表性能受死鎖檢測、鎖表大小、SQL語句鎖、容納總量等參數影響,為了找出性能與參數之間的關系,需要進行針對性實驗.每個實驗分別考察不同參數的影響情況,設置缺省值,對考察參數進行小范圍調整,將參數與鎖表性能的關系聯系起來.由于參數組合窮盡難度極大,所以在獲得基本數據后(10000組樣本),可以通過預測器學習與固化關系,通過預測器的輔助能力確定組合參數.
4.1 實驗準備
為了確保算法有效,通過實驗進行確認,服務器采取IBMSystemx3650M4(7915R51)雙插槽服務器,該服務器擁有XeonE5-2650v22.6GH的CPU,內存容量為8GBECC DDR3,操作系統為WindowsServer,實驗采取DB2進行模擬,通過TPC-C負載,規模為1GB.實驗過程主要分為三階段:初始化、預熱、優化.為了保證迭代數據規模與特性相同,必須在運行前導入相同的數據文件,方便對比優化效果.數據庫系統必須進行預熱,基本為6-8分鐘負載運行,保證性能指標處于穩定狀態.運行自我優化算法,根據參數調整建議,進行局部調整.由于DB2并不能進行動態修改,所以需要在關閉DBMS后進行修改,根據參數值設置系統,啟動DBMS后,測量數據庫優化效果.
4.2 優化結果
根據實驗統計,優化前系統吞吐量為3460tpmC,此數據由系統缺省參數得出.在使用本方案后,吞吐量上升為3985tpmc,系統性能與優化前相比有16%的提高,通過IBM ConfigurationWizard進行優化后,可達4280tpmC.由于IBM ConfigurationWizard進行系統調整時,將鎖表參數、緩沖區、后臺進程與其它關鍵因素都進行了綜合優化,優化結果要明顯好于單獨進行數據庫鎖表優化.通過實驗結果可以看出,對數據庫鎖表進行優化可以提高系統性能,為了全面優化系統,需要將DBMS子系統分別進行優化,確保子系統性能提升,保證系統良好運行.
本文根據數據庫的自我優化能力,以輕量數據挖掘方法為基本依據,進行了數據庫鎖表優化.同時以神經網絡為原形,制作模型預測器,在基礎數據中學習改進,并且具備較強的預測能力,為參數調整提供具體依據.數據庫鎖表需要利用規則引擎進行優化,根據引擎調整相關參數與方向,并且從預測器中獲得調整幅度以及精準的調整參數,提高系統運行能力.根據實驗證明,系統性能有很大提高,未來將逐步對負載波動與數據變化進行分析,加強預測器性能,同時進行算法擴展,使其性能得到大幅度提升,解決系統優化問題.
〔1〕王奕首,史彥軍,滕弘飛.用改進的散射搜索法求解帶平衡約束的圓形Packing問題 [J].計算機學報,2012,32(6):1214-1221.
〔2〕王曉晴,唐加福.基于分散搜索的零部件跨單元生產的單元管理方法[J].機械工程學報,2010(10):125-131.
〔3〕Weikum G,Monkeberg A,Hasse C,etal.Self-tuning databasetechnologyandinformationservices:fromwishful thinkingtoviableengineering[C].ProceedingsofInternationalConferenceVery Large Databases(VLDB).Hong Kong,China:VLDBEn-dowment,2012(01):20-31.
〔4〕鄒志文,朱金偉.數據挖掘算法研究與綜述[J].計算機工程與設計,2010(9):234-236.
〔5〕劉明亮,李雄飛,孫濤,等.數據挖掘技術標準綜述[J].計算機科學,2010(6):5-9.
〔6〕王剛,黃麗華,張成洪,等.數據挖掘分類算法研究綜述[J].科技導報,2012(12):73-75.
〔7〕張雪江,朱向陽,鐘秉林,等.基于退火演化算法的知識獲取機制的研究[J].控制理論與應用,2011(1):93-98.
TP311.13
A
1673-260X(2014)12-0023-02