基于內(nèi)外參數(shù)的數(shù)據(jù)庫連接池監(jiān)控和管理的方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)庫管理領(lǐng)域,具體地,涉及一種基于內(nèi)外參數(shù)的數(shù)據(jù)庫連接池監(jiān)控和管理的方法和裝置。
【背景技術(shù)】
[0002]隨著互聯(lián)網(wǎng)業(yè)務(wù)的增長,系統(tǒng)的交易量隨之增長,系統(tǒng)處理壓力增大,數(shù)據(jù)庫操作的瓶頸開始顯現(xiàn)。對于數(shù)據(jù)庫的操作,數(shù)據(jù)庫連接資源的管理非常重要。如果數(shù)據(jù)庫連接資源能夠多維度監(jiān)控并合理的分配和管理,則可以有效的提升數(shù)據(jù)庫的操作效率。現(xiàn)有的應(yīng)用系統(tǒng)通常使用數(shù)據(jù)庫連接池對數(shù)據(jù)庫連接資源進(jìn)行管理。目前,數(shù)據(jù)庫連接池主要有以下不足:
1、數(shù)據(jù)庫連接池的監(jiān)控單一?,F(xiàn)有的數(shù)據(jù)庫連接池僅針對數(shù)據(jù)庫的連接是否被占用進(jìn)行監(jiān)控。如果數(shù)據(jù)庫連接已被應(yīng)用(某個線程)占用,則該連接不能被其他應(yīng)用操作(線程)使用,此時連接池認(rèn)為該數(shù)據(jù)庫連接繁忙。然而,該占用的數(shù)據(jù)庫連接的數(shù)據(jù)操作可能并不頻繁,以致此時數(shù)據(jù)庫的訪問壓力并不大,實(shí)際上不需要創(chuàng)建新的數(shù)據(jù)庫連接以提高效率。其次MaxIdleTime (最大空閑時間)空閑的連接超時后才被回收,空閑時間較長,監(jiān)控單一造成資源不能及時釋放。因此,數(shù)據(jù)庫連接的監(jiān)控機(jī)制單一,導(dǎo)致數(shù)據(jù)庫連接資源浪費(fèi)。
[0003]2、數(shù)據(jù)庫連接池分配規(guī)則單一,不夠有效。傳統(tǒng)的數(shù)據(jù)庫連接池包含連接數(shù)最大值(MAX)和初始值(INIT)兩個參數(shù)。如果此時交易量峰值到來,數(shù)據(jù)庫連接池連接很快就把連接占用,必須等數(shù)據(jù)庫操作完或者是連接超時時才能釋放,很容易造成數(shù)據(jù)庫連接不夠用。數(shù)據(jù)庫的連接數(shù)管理不夠合理,不夠靈活、有效。其次初始值(INIT)長時間不用也是造成連接資源的浪費(fèi)。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的目的在于,針對上述問題,提出一種基于內(nèi)外參數(shù)的數(shù)據(jù)庫連接池監(jiān)控和管理的方法和裝置,以實(shí)現(xiàn)避免數(shù)據(jù)庫連接資源浪費(fèi)的優(yōu)點(diǎn)。
[0005]為實(shí)現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案是:
一種基于內(nèi)外參數(shù)的數(shù)據(jù)庫連接池監(jiān)控和管理的方法,包括監(jiān)測數(shù)據(jù)庫服務(wù)器的外部參數(shù),對數(shù)據(jù)庫服務(wù)器繁忙程度進(jìn)行初步判斷的步驟;
獲取數(shù)據(jù)庫連接上SQL語句的平均連接吞吐量和數(shù)據(jù)庫連接池連接的空閑時間比的步驟;
以及
接收到應(yīng)用獲取數(shù)據(jù)庫連接請求時,根據(jù)上述獲取的平均連接吞吐量和空閑時間比,按照MAX管理參數(shù)分發(fā)策略進(jìn)行分配數(shù)據(jù)庫連接數(shù)和釋放數(shù)據(jù)庫連接數(shù),并根據(jù)業(yè)務(wù)高峰自動調(diào)整連接池的最大連接數(shù)和MaxIdleTime (最大空閑時間)初始值,返回給應(yīng)用使用的步驟。
[0006]優(yōu)選的,所述數(shù)據(jù)庫連接池連接的空閑時間比為,根據(jù)SQL語句的提交時間和返回時間記錄SQL語句的處理時間和空閑時間,根據(jù)SQL語句的處理時間和空閑時間計(jì)算得出。
[0007]優(yōu)選的,還包括,將上述平均連接吞吐量與設(shè)定的平均連接吞吐量閥值相比較的步驟,如獲取的平均連接吞吐量大于設(shè)定的平均連接吞吐量閥值,則認(rèn)為數(shù)據(jù)庫連接繁忙;如果獲取的平均連接吞吐量小于該設(shè)定的平均連接吞吐量閥值,則認(rèn)為數(shù)據(jù)庫連接不繁忙;
以及將上述獲取的空閑時間比與設(shè)定的空閑時間比閥值相比較的步驟,如獲取的空閑時間比小于設(shè)定的空閑時間比閥值,說明數(shù)據(jù)庫連接壓力較大;如果獲取的空閑時間比大于設(shè)定的空閑時間比閥值,說明數(shù)據(jù)庫連接當(dāng)前壓力較小。
[0008]優(yōu)選的,所述MAX管理參數(shù)分發(fā)策略,具體為根據(jù)上述平均連接吞吐量和空閑時間比組合形成公式、決策樹或規(guī)則引擎,并根據(jù)形成的公式、決策樹或規(guī)則引擎分配數(shù)據(jù)庫連接。
[0009]優(yōu)選的,所述數(shù)據(jù)庫服務(wù)器的外部參數(shù)包括,數(shù)據(jù)庫服務(wù)器已被使用的連接數(shù)和數(shù)據(jù)庫服務(wù)器的硬件資源利用率。
[0010]優(yōu)選的,形成的公式具體為:
V=Vl*a+V2 *b+V3*c+V4*d+V5*e+V6*f
a、b、c、d、e、f是各個參數(shù)的權(quán)重,VI代表平均連接吞吐量,V2代表空閑時間比,V3、V4、V5和V6代表監(jiān)測數(shù)據(jù)庫服務(wù)器的外部參數(shù),如果V大于0就增加連接,如V小于0就減少連接。
[0011]同時本發(fā)明技術(shù)方案還公開了一種基于內(nèi)外參數(shù)的數(shù)據(jù)庫連接池監(jiān)控和管理裝置,包括監(jiān)控模塊和連接池管理模塊,
所述監(jiān)控模塊,監(jiān)控?cái)?shù)據(jù)庫服務(wù)器的外部參數(shù),以及數(shù)據(jù)庫連接上SQL語句的平均連接吞吐量和數(shù)據(jù)庫連接池連接的空閑時間比;
所述連接池管理模塊,接收應(yīng)用的獲取數(shù)據(jù)庫連接請求,并從監(jiān)控模塊獲取監(jiān)控?cái)?shù)據(jù),按照MAX管理參數(shù)分發(fā)策略進(jìn)行分配數(shù)據(jù)庫連接數(shù)和釋放數(shù)據(jù)庫連接數(shù),并根據(jù)業(yè)務(wù)高峰自動調(diào)整連接池的最大連接數(shù)和MaxIdleTime初始值,返回給應(yīng)用使用。
[0012]優(yōu)選的,所述數(shù)據(jù)庫連接池連接的空閑時間比為,根據(jù)SQL語句的提交時間和返回時間記錄SQL語句的處理時間和空閑時間,根據(jù)SQL語句的處理時間和空閑時間計(jì)算得出。
[0013]優(yōu)選的,所述監(jiān)控模塊,將平均連接吞吐量與設(shè)定的平均連接吞吐量閥值相比較,如獲取的平均連接吞吐量大于設(shè)定的平均連接吞吐量閥值,則認(rèn)為數(shù)據(jù)庫連接繁忙;如果獲取的平均連接吞吐量小于該設(shè)定的平均連接吞吐量閥值,則認(rèn)為數(shù)據(jù)庫連接不繁忙;
以及將上述獲取的空閑時間比與設(shè)定的空閑時間比閥值相比較,如獲取的空閑時間比小于設(shè)定的空閑時間比閥值,說明數(shù)據(jù)庫連接壓力較大;如果獲取的空閑時間比大于設(shè)定的空閑時間比閥值,說明數(shù)據(jù)庫連接當(dāng)前壓力較小。
[0014]優(yōu)選的,所述MAX管理參數(shù)分發(fā)策略,具體為根據(jù)上述平均連接吞吐量和空閑時間比組合形成公式、決策樹或規(guī)則引擎,并根據(jù)形成的公式、決策樹或規(guī)則引擎分配數(shù)據(jù)庫連接。
[0015]本發(fā)明的技術(shù)方案具有以下有益效果: 本發(fā)明的技術(shù)方案,通過對平均連接吞吐量和空閑時間比進(jìn)行監(jiān)控,對數(shù)據(jù)庫連接進(jìn)行多維度監(jiān)控,從而準(zhǔn)確的掌握數(shù)據(jù)庫的繁忙程度,從而利用數(shù)據(jù)庫的連接資源,而利用MAX管理參數(shù)分發(fā)策略進(jìn)行分配數(shù)據(jù)庫連接數(shù)和釋放數(shù)據(jù)庫連接數(shù),避免數(shù)據(jù)庫最小激活連接數(shù)(INIT)設(shè)置太大造成資源浪費(fèi),設(shè)置太小又沒有什么意義,本技術(shù)方案把INIT參數(shù)去掉,當(dāng)應(yīng)用使用數(shù)據(jù)庫連接時就創(chuàng)立連接,不使用數(shù)據(jù)庫連接時就釋放連接。達(dá)到了避免數(shù)據(jù)庫連接資源浪費(fèi)的目的。
[0016]下面通過附圖和實(shí)施例,對本發(fā)明的技術(shù)方案做進(jìn)一步的詳細(xì)描述。
【附圖說明】
[0017]圖1為本發(fā)明實(shí)施例所述的數(shù)據(jù)庫連接池監(jiān)控和管理裝置的原理框圖;
圖2為本發(fā)明實(shí)施例所述的采用現(xiàn)有技術(shù)的數(shù)據(jù)庫連接分配示意圖;
圖3為本發(fā)明實(shí)施例所述的采用本發(fā)明技術(shù)方案的數(shù)據(jù)庫連接分配示意圖。
【具體實(shí)施方式】
[0018]以下結(jié)合附圖對本發(fā)明的優(yōu)選實(shí)施例進(jìn)行說明,應(yīng)當(dāng)理解,此處所描述的優(yōu)選實(shí)施例僅用于說明和解釋本發(fā)明,并不用于限定本發(fā)明。
[0019]一種基于內(nèi)外參數(shù)的數(shù)據(jù)庫連接池監(jiān)控和管理的方法,包括
監(jiān)測數(shù)據(jù)庫服務(wù)器的外部參數(shù),對數(shù)據(jù)庫服務(wù)器繁忙程度進(jìn)行初步判斷的步驟;
獲取數(shù)據(jù)庫連接上SQL語句的平均連接吞吐量和數(shù)據(jù)庫連接池連接的空閑時間比的步驟;
以及
接收到應(yīng)用獲取數(shù)據(jù)庫連接請求時,根據(jù)上述獲取的平均連接吞吐量和空閑時間比,按照MAX管理參數(shù)分發(fā)策略進(jìn)行分配數(shù)據(jù)庫連接數(shù)和釋放數(shù)據(jù)庫連接數(shù),并根據(jù)業(yè)務(wù)高峰自動調(diào)整連接池的最大連接數(shù)和MaxIdleTime初始值,返回給應(yīng)用使用的步驟。
[0020]數(shù)據(jù)庫連接池連接的空閑時間比為,根據(jù)SQL語句的提交時間和返回時間記錄SQL語句的處理時間和空閑時間,根據(jù)SQL語句的處理時間和空閑時間計(jì)算得出。
[0021]如圖1所示,一種數(shù)據(jù)庫連接池監(jiān)控和管理裝置,括監(jiān)控模塊和連接池管理模塊, 其中:監(jiān)控模塊,對數(shù)據(jù)庫連接和硬件資源進(jìn)行多維度監(jiān)控,得出監(jiān)控?cái)?shù)據(jù)。同時接收連接池管理模塊的申請請求,通過監(jiān)控結(jié)果,將監(jiān)控?cái)?shù)據(jù)返回給連接池管理模塊。
[0022]監(jiān)控模塊監(jiān)控的數(shù)據(jù)具體為,監(jiān)控?cái)?shù)據(jù)庫連接上SQL語句的平均連接吞吐量(QPS)o
[0023]統(tǒng)計(jì)數(shù)據(jù)庫平均連接的QPS。QPS等于一分鐘內(nèi)數(shù)據(jù)庫連接提交的sql語句數(shù)/60s/連接數(shù)
平均連接統(tǒng)計(jì)QPS大于某個閾值,例如:30 sql/s,則認(rèn)為數(shù)據(jù)庫連接繁忙;如果小于該閾值,例如:30 sql/s,則認(rèn)為數(shù)據(jù)庫連接就不繁忙。
[0024]監(jiān)控?cái)?shù)據(jù)庫連接池連接的空閑時間比(大事務(wù)場景)。
[0025]根據(jù)SQL的提交時間和返回時間記錄SQL的處理時間和空閑時間,計(jì)算空閑時間比。
[0026]空閑時間比=空閑時間/總時間。如果空閑時間比小于某個閾值,例如:30%,說明系統(tǒng)數(shù)據(jù)庫連接壓力較大;如果空閑時間比大于某個閾值,例如:30%,說明數(shù)據(jù)庫連接當(dāng)前壓力較小。
[0027]空閑時間如下:
I_數(shù)據(jù)操作_I —空閑時間—I_數(shù)據(jù)操作_I —空閑時間—I。
[0028]平均連接吞吐量和空閑時間比為數(shù)據(jù)庫的內(nèi)部參數(shù)。
[0029]監(jiān)控的外部參數(shù)如下:
1、數(shù)據(jù)庫服務(wù)器已被使用的連接數(shù):
監(jiān)控?cái)?shù)據(jù)庫的連接數(shù)作為進(jìn)一步判斷數(shù)據(jù)庫連接繁忙程度的依據(jù)。當(dāng)數(shù)據(jù)庫啟動時初始化是最大連接數(shù)是靜態(tài)的,這個最大靜態(tài)數(shù)據(jù)庫連接數(shù)在動態(tài)使用時并不能說明就是最大值,它肯定比這個靜態(tài)的最大值要小,這個是全局的最大值。監(jiān)控?cái)?shù)據(jù)庫連接數(shù)沒有達(dá)到數(shù)據(jù)庫動態(tài)連接數(shù)最大值,繼續(xù)分配資源。已經(jīng)達(dá)到動態(tài)連接數(shù)最大值就不再分配數(shù)據(jù)庫連接。
[0030]2、數(shù)據(jù)庫服務(wù)器的硬件資源利用率:
硬件資源利用率包括但不限于以下幾種:
CPU資源:多核整體利用率大于70%,則認(rèn)為系統(tǒng)繁忙;
內(nèi)存資源:數(shù)據(jù)庫進(jìn)程內(nèi)存大于80% ;則認(rèn)為系統(tǒng)繁忙;
磁盤10資源:監(jiān)控