国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

數(shù)據(jù)庫性能預(yù)測的研究與應(yīng)用

2015-05-30 10:48殷文浩
計(jì)算機(jī)時(shí)代 2015年6期
關(guān)鍵詞:公式數(shù)據(jù)庫預(yù)測

殷文浩

摘 要: 數(shù)據(jù)庫性能預(yù)測具有可利用歷史數(shù)據(jù)較少、受外界不確定性因素影響較大的特點(diǎn)。傳統(tǒng)的構(gòu)建數(shù)據(jù)庫方法有采集數(shù)據(jù)周期長、普通人較難準(zhǔn)確掌握、預(yù)測值波動(dòng)性大等問題。為此探討了一種應(yīng)用數(shù)學(xué)公式,只需采集較少數(shù)據(jù)即可方便快速地預(yù)測數(shù)據(jù)庫性能。使用該方法可以在數(shù)據(jù)庫處于正常工作情況下,對(duì)今后一段時(shí)期內(nèi)數(shù)據(jù)庫性能做出較為快速準(zhǔn)確的預(yù)測,有效預(yù)防未來可能出現(xiàn)的性能問題。

關(guān)鍵詞: 數(shù)據(jù)庫; 性能; 預(yù)測; 公式

中圖分類號(hào):TP392 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1006-8228(2015)06-01-03

Abstract: Database performance prediction has the characteristics of less available historical data and great affect of the external uncertain factors. The traditional method of building a database has the problems which data collection cycle is long, ordinary people are difficult to grasp, predictive value is volatile ect. This paper introduces an applied mathematics formula, database performance can be predicted rapidly as long as few data is collected. Thus a more accurate prediction of the database performance during the next period of time is made, that effectively prevents the possible performance problems in the future.

Key words: database; performance; prediction; formula

0 引言

隨著信息技術(shù)的飛速發(fā)展,數(shù)據(jù)庫已經(jīng)被應(yīng)用到社會(huì)的各個(gè)領(lǐng)域,數(shù)據(jù)庫的性能是數(shù)據(jù)庫運(yùn)行好壞的一個(gè)重要技術(shù)指標(biāo)。數(shù)據(jù)庫系統(tǒng)是動(dòng)態(tài)的,含有各種各樣的事務(wù)類型,這使得對(duì)數(shù)據(jù)庫作出準(zhǔn)確的性能預(yù)測非常困難。許多IT專業(yè)人員(DBA、項(xiàng)目經(jīng)理、系統(tǒng)集成或開發(fā)人員)在工作中都會(huì)碰到需要預(yù)測數(shù)據(jù)庫性能的情況。

本文以筆者單位正在使用的業(yè)務(wù)數(shù)據(jù)庫系統(tǒng)為研究對(duì)象,應(yīng)用數(shù)學(xué)預(yù)測公式在系統(tǒng)運(yùn)行性能數(shù)據(jù)的分析基礎(chǔ)上,對(duì)該業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫的性能趨勢(shì)作出預(yù)測。根據(jù)預(yù)測結(jié)果,科學(xué)合理的添加系統(tǒng)資源,滿足了系統(tǒng)穩(wěn)定高效運(yùn)行的需要,化解了數(shù)據(jù)庫性能風(fēng)險(xiǎn),避免了不必要的浪費(fèi)。

1 相關(guān)知識(shí)

1.1 事務(wù)

在預(yù)測性能時(shí),我們需要一個(gè)基本工作單元來溝通和計(jì)算。我們把這種基本工作單元稱作事務(wù)。在數(shù)據(jù)庫領(lǐng)域?qū)κ聞?wù)有各種各樣的定義,為了敘事清楚,我們把事務(wù)定義為單個(gè)邏輯工作單元執(zhí)行的一系列操作,要么完整地執(zhí)行,要么完全不執(zhí)行。事務(wù)處理可以確保除非事務(wù)性單元內(nèi)的所有操作都成功完成,否則不會(huì)永久更新面向數(shù)據(jù)的資源。通過將一組相關(guān)操作組合為一個(gè)要么全部成功要么全部失敗的單元,可以簡化錯(cuò)誤恢復(fù)并使應(yīng)用程序更加可靠。一個(gè)邏輯工作單元要成為事務(wù),必須滿足所謂的ACID(原子性、一致性、隔離性和持久性)屬性。

1.2 到達(dá)率

事務(wù)不僅是一種靜態(tài)的定義,它們還是動(dòng)態(tài)的。事務(wù)到達(dá)一個(gè)計(jì)算系統(tǒng),就像人到達(dá)辦公大樓電梯。我們將到達(dá)率定義為:在給定的時(shí)間內(nèi)到達(dá)的事務(wù)的數(shù)量。我們用到達(dá)率來表示一定時(shí)間內(nèi)事務(wù)的繁忙程度,在一個(gè)系統(tǒng)中,到達(dá)率越高,事務(wù)的活動(dòng)就越多。

我們使用希臘字母λ表示到達(dá)率,其單位是某個(gè)時(shí)間內(nèi)的工作數(shù)量,如每秒50個(gè)事務(wù),寫作50trx/s。

1.3 服務(wù)時(shí)間

當(dāng)一個(gè)事務(wù)進(jìn)入服務(wù)器后,CPU會(huì)立即開始處理這個(gè)事務(wù),從開始處理這個(gè)事務(wù)到處理完這個(gè)事務(wù)所花費(fèi)的時(shí)間,通常被稱為服務(wù)時(shí)間并被標(biāo)記為St。例如,如果一個(gè)事務(wù)占用150ms的CPU時(shí)間,其服務(wù)時(shí)間為St=150ms/trx。

1.4 隊(duì)列

通常情況下,我們用繁忙度或者利用率來衡量服務(wù)器的忙碌程度。例如,如果一臺(tái)服務(wù)器的繁忙時(shí)間占65%,那么其利用率為65%。當(dāng)服務(wù)器有70%左右的時(shí)間處于繁忙狀態(tài)時(shí),它不能在事務(wù)到來后立即進(jìn)行處理,這些事務(wù)將被放入到一個(gè)隊(duì)列中一直保存到它被處理為止。

隊(duì)列[2]是一種非常簡單的數(shù)據(jù)結(jié)構(gòu)。它本質(zhì)上是一個(gè)包含一個(gè)頭部和一個(gè)尾部的鏈表。事務(wù)被壓入隊(duì)列(入隊(duì))和彈出隊(duì)列(出隊(duì))。本文論及到的隊(duì)列模型是簡單的先入/先出( FIFO)隊(duì)列。

隊(duì)列長度用來表示有多少積壓的事務(wù)未被處理。當(dāng)一個(gè)事務(wù)在隊(duì)列中等待時(shí),它等待Qt的時(shí)間。單位是每筆事務(wù)的時(shí)間。字母Q表示隊(duì)列的長度,它的單位是簡單的事務(wù)數(shù)量。

通常情況下,當(dāng)一個(gè)服務(wù)器的繁忙率達(dá)到約70%時(shí),就已經(jīng)不能立即處理事務(wù)了,即使服務(wù)器還有30%是空閑的,當(dāng)服務(wù)器變得越來越繁忙時(shí),事務(wù)就會(huì)開始排隊(duì),隊(duì)列長度會(huì)增加,而性能開始下降。

1.5 響應(yīng)時(shí)間

當(dāng)一個(gè)事務(wù)被提交時(shí),它在整個(gè)計(jì)算系統(tǒng)中流動(dòng)并消耗CPU、IO、內(nèi)存和網(wǎng)絡(luò)資源。有時(shí)事務(wù)無需在隊(duì)列中等待,可以立即得到處理,有時(shí)它必須先在隊(duì)列中等待。通常情況下,事務(wù)流在整個(gè)系統(tǒng)中,需多次地排隊(duì)和被處理,直到它完成并退出系統(tǒng)。

在一個(gè)事務(wù)的生命周期內(nèi),如果我們將所有的服務(wù)時(shí)間和排隊(duì)時(shí)間累加起來,就可以判斷出事務(wù)在系統(tǒng)中花費(fèi)的時(shí)間,這個(gè)時(shí)間通常被稱為響應(yīng)時(shí)間[6]。簡單的說,響應(yīng)時(shí)間就是服務(wù)時(shí)間加上排隊(duì)時(shí)間:Rt=St+Qt。

在對(duì)數(shù)據(jù)庫進(jìn)行性能預(yù)測時(shí),響應(yīng)時(shí)間曲線是我們經(jīng)常會(huì)用到的技術(shù)之一。

響應(yīng)時(shí)間曲線如圖1所示,縱軸是響應(yīng)時(shí)間即事務(wù)完成所需要的時(shí)間,橫軸是事務(wù)到達(dá)率即每單位時(shí)間進(jìn)入系統(tǒng)的事務(wù)數(shù)。從圖1可以看出,當(dāng)事務(wù)到達(dá)率達(dá)到一定值時(shí),響應(yīng)時(shí)間呈幾何級(jí)上升(出現(xiàn)拐點(diǎn)),這時(shí)系統(tǒng)將極為緩慢甚至不能工作,因此預(yù)測拐點(diǎn)何時(shí)在什么條件下會(huì)出現(xiàn)是我們預(yù)測工作的重點(diǎn)。

2 預(yù)測

2.1 數(shù)據(jù)收集

數(shù)據(jù)收集[5]是進(jìn)行數(shù)據(jù)庫性能預(yù)測的必備工作之一,收集到的原始數(shù)據(jù)還必須經(jīng)過必要的轉(zhuǎn)換才能成為對(duì)預(yù)測有用的數(shù)據(jù)。在進(jìn)行數(shù)據(jù)收集時(shí)不能過于頻繁,否則會(huì)對(duì)收集對(duì)象的性能產(chǎn)生負(fù)面影響。

在需要收集的數(shù)據(jù)中最重要的有兩項(xiàng),CPU使用率和數(shù)據(jù)庫的工作負(fù)載,這里我們假設(shè)操作系統(tǒng)為UNIX,數(shù)據(jù)庫為Oracle。在Oracle數(shù)據(jù)庫中并沒有工作負(fù)載這個(gè)性能指標(biāo)字段,我們可以用Oracle內(nèi)部統(tǒng)計(jì)信息“用戶調(diào)用”(user call)來表示工作負(fù)載(即到達(dá)率)。

“user call”是一個(gè)隨時(shí)間而增加的值,要得到工作負(fù)載數(shù)據(jù),必須獲取一個(gè)初始統(tǒng)計(jì)信息快照(S0)和結(jié)束統(tǒng)計(jì)信息快照(S1),將兩者之差除以兩次快照之間的時(shí)間(T)就可以得到其到達(dá)率(λ)。

2.3 使用公式進(jìn)行預(yù)測

筆者單位某業(yè)務(wù)系統(tǒng)平時(shí)用于處理企業(yè)登記、變更和年檢等業(yè)務(wù),由于經(jīng)濟(jì)快速發(fā)展,企業(yè)數(shù)量不斷增加,系統(tǒng)處理的業(yè)務(wù)量以每年40%的速度逐年遞增,導(dǎo)致系統(tǒng)的負(fù)荷也不斷加重。領(lǐng)導(dǎo)擔(dān)心數(shù)據(jù)庫系統(tǒng)會(huì)承受不住,因此需要對(duì)現(xiàn)有數(shù)據(jù)庫系統(tǒng)做一次性能預(yù)測,并提供解決方案。

首先運(yùn)行前文所提到的數(shù)據(jù)收集腳本,收集到數(shù)據(jù)庫在正常情況下事務(wù)的平均到達(dá)率是6.11trx/s,CPU平均利用率是35%,CPU的數(shù)量是12,將這些數(shù)字代入基本預(yù)測公式:

假設(shè)CPU處理一個(gè)事物的服務(wù)時(shí)間St始終保持不變,得出當(dāng)平均到達(dá)率為6.11trx/s時(shí),每個(gè)事務(wù)的平均響應(yīng)時(shí)間為0.69s,以此作為一個(gè)基線填入表2的第一行,然后每次將平均到達(dá)率增加20%代入公式,計(jì)算出平均響應(yīng)時(shí)間如表2。

圖1是根據(jù)表2得到的響應(yīng)時(shí)間曲線圖[3],橫軸是到達(dá)率,縱軸是預(yù)測的響應(yīng)時(shí)間。根據(jù)表2可以得知,當(dāng)利用率在70-80%時(shí),響應(yīng)時(shí)間開始顯著增加,這時(shí)到達(dá)率大約是13,這正是圖形上開始進(jìn)入曲線肘部的時(shí)刻。

我們根據(jù)圖表預(yù)測的數(shù)據(jù)得到以下兩點(diǎn)結(jié)論。

⑴ 當(dāng)負(fù)載增加超過一倍時(shí),系統(tǒng)的反應(yīng)將變得緩慢。

⑵ 當(dāng)負(fù)載增加接近兩倍時(shí),系統(tǒng)將變的幾乎不可用。

根據(jù)以上結(jié)論,再結(jié)合業(yè)務(wù)量每年增加40%的事實(shí),領(lǐng)導(dǎo)可以得知到第三年時(shí)系統(tǒng)會(huì)變得緩慢,到第四年時(shí)系統(tǒng)將變的幾乎不可用。

2.4 應(yīng)對(duì)措施效果預(yù)測

為了防止系統(tǒng)變慢,可以通過更換系統(tǒng)或添加CPU來解決,前者效果好但花費(fèi)較大,后者節(jié)省費(fèi)用但效果未知。此時(shí)可以利用預(yù)測公式[3]對(duì)添加CPU后的效果做出預(yù)測,為應(yīng)對(duì)措施的選擇給出理論上的依據(jù)。

該系統(tǒng)數(shù)據(jù)庫服務(wù)器有16個(gè)插槽,已經(jīng)使用了12個(gè),還可以添加4個(gè)使CPU總數(shù)達(dá)到16,即M=16。

我們將原系統(tǒng)St=0.69,以及原系統(tǒng)開始變慢時(shí)的到達(dá)率λ=13.442代入公式可得:

U===0.579

Rt===0.690

我們發(fā)現(xiàn)當(dāng)添加了4個(gè)CPU后,系統(tǒng)繁忙度從0.773下降到0.579,響應(yīng)時(shí)間從0.723s下降到0.690s,系統(tǒng)沒有變慢。

我們?cè)侔言到y(tǒng)變的不可用時(shí)的到達(dá)率λ=18.330代入上述公式可得系統(tǒng)繁忙度從1.054下降到0.790,響應(yīng)時(shí)間從幾乎無響應(yīng)下降到0.706s,系統(tǒng)幾乎沒有變慢。

根據(jù)上述預(yù)測結(jié)果可以得知,該業(yè)務(wù)系統(tǒng)只需升級(jí)CPU就可以完全滿足未來五年的業(yè)務(wù)發(fā)展需要。

2.5 實(shí)際效果

由于商事登記制度改革,新登記企業(yè)的數(shù)量呈現(xiàn)井噴式增長,原數(shù)據(jù)庫系統(tǒng)提前一年達(dá)到了滿負(fù)荷運(yùn)行狀態(tài),系統(tǒng)繁忙度接近1,響應(yīng)時(shí)間接近4秒。為了防止系統(tǒng)繼續(xù)變慢,保障商事登記制度改革順利推進(jìn),我們根據(jù)前期預(yù)測結(jié)果,為數(shù)據(jù)庫添加了4個(gè)CPU。添加CPU后,再次對(duì)數(shù)據(jù)庫系統(tǒng)進(jìn)行跟蹤測試,結(jié)果發(fā)現(xiàn)系統(tǒng)繁忙度下降到0.58,響應(yīng)時(shí)間下降到0.6s,完全符合預(yù)測,順利解決了數(shù)據(jù)庫的瓶頸問題。

3 結(jié)束語

本文介紹了到達(dá)率、服務(wù)時(shí)間、響應(yīng)時(shí)間等一些數(shù)據(jù)庫性能預(yù)測的基本知識(shí)和概念[1],討論了一些常用的預(yù)測公式并且就這些理論的具體運(yùn)用進(jìn)行了較詳細(xì)的研究和論述。本文的研究結(jié)果在筆者單位的數(shù)據(jù)庫系統(tǒng)上得到了成功應(yīng)用,保障了數(shù)據(jù)庫平穩(wěn)運(yùn)行,避免了盲目的升級(jí)替換,節(jié)約了寶貴的項(xiàng)目經(jīng)費(fèi),實(shí)現(xiàn)了較好的經(jīng)濟(jì)和社會(huì)效益。

由于在數(shù)據(jù)庫實(shí)際預(yù)測工作中經(jīng)常會(huì)遇到樣本采集數(shù)量不足、采集時(shí)間不平均或采集方式不對(duì)等因素干擾,造成數(shù)據(jù)庫性能預(yù)測不準(zhǔn),因此,下一步考慮引進(jìn)Erlang C公式來進(jìn)一步加強(qiáng)數(shù)據(jù)庫性能預(yù)測的準(zhǔn)確性和抗干擾性。

參考文獻(xiàn):

[1] 陳虹.模型預(yù)測控制[M].科學(xué)出版社,2013.

[2] 席裕庚.預(yù)測控制(第2版)[M].國防工業(yè)出版社,2013.

[3] 李海翔.數(shù)據(jù)庫查詢優(yōu)化器的藝術(shù)[M].機(jī)械工業(yè)出版社,2014.

[4] 李少遠(yuǎn).全局工況系統(tǒng)預(yù)測控制及其應(yīng)用[M].科學(xué)出版社,2008.

[5] 加西亞-莫利納著,楊冬青等譯.數(shù)據(jù)庫系統(tǒng)實(shí)現(xiàn)[M].機(jī)械工業(yè)出版

社,2010.

[6] 博克斯著,王成璋等譯.時(shí)間序列分析:預(yù)測與控制[M].機(jī)械工業(yè)出版

社,2011.

猜你喜歡
公式數(shù)據(jù)庫預(yù)測
無可預(yù)測
選修2-2期中考試預(yù)測卷(A卷)
選修2-2期中考試預(yù)測卷(B卷)
組合數(shù)與組合數(shù)公式
排列數(shù)與排列數(shù)公式
等差數(shù)列前2n-1及2n項(xiàng)和公式與應(yīng)用
數(shù)據(jù)庫
數(shù)據(jù)庫
數(shù)據(jù)庫
數(shù)據(jù)庫