異常結(jié)構(gòu)化查詢語言sql語句確定方法及服務(wù)器的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及通信技術(shù)領(lǐng)域,尤指一種異常結(jié)構(gòu)化查詢語言(Structured Query Language, SQL)語句確定方法及服務(wù)器。
【背景技術(shù)】
[0002] SQL語句是一種對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行定義和操作的句法,異常SQL語句(也可以 稱為慢查詢SQL語句或者大SQL語句)是指執(zhí)行速度較慢且對數(shù)據(jù)庫性能影響較大的業(yè)務(wù) SQL語句。當(dāng)用戶使用客戶端執(zhí)行話費余額查詢、套餐使用量查詢等等操作時,客戶端會向 服務(wù)器發(fā)送查詢請求,服務(wù)器根據(jù)接收到的查詢請求使用業(yè)務(wù)SQL語句在數(shù)據(jù)庫中進(jìn)行查 詢,如果出現(xiàn)異常SQL語句,則會占用服務(wù)器大量的系統(tǒng)資源,查詢速度也非常慢,在客戶 端就表現(xiàn)為執(zhí)行相關(guān)業(yè)務(wù)操作的速度較慢,影響用戶體驗。
[0003] 目前,確定異常SQL語句的方法是,當(dāng)服務(wù)器大量的系統(tǒng)資源被消耗并且用戶體 驗不佳時,才會通過分析查出異常SQL語句,常用的分析方法包括以下兩種:
[0004] 第一種,對于影響用戶體驗的相關(guān)業(yè)務(wù),通過相關(guān)業(yè)務(wù)的特征(源地址、客戶端名 稱、相關(guān)業(yè)務(wù)表等)對數(shù)據(jù)庫會話進(jìn)行跟蹤得到跟蹤文件,然后分析跟蹤文件確定相關(guān)的業(yè) 務(wù)SQL語句,進(jìn)一步分析這些相關(guān)的業(yè)務(wù)SQL語句的執(zhí)行計劃、執(zhí)行時間等確定出異常SQL 語句。
[0005] 第二種,對消耗大量的系統(tǒng)資源的業(yè)務(wù)SQL語句,按照執(zhí)行時間、資源消耗量等等 進(jìn)行排序找到排在前面的業(yè)務(wù)SQL,然后分析這些業(yè)務(wù)SQL語句的訪問路徑,判斷這些業(yè)務(wù) SQL的具體業(yè)務(wù),最后確定出異常SQL語句。
[0006] 上述確定異常SQL語句的方法只能在異常SQL語句已經(jīng)影響系統(tǒng)性能和用戶體驗 時,依靠專業(yè)人員進(jìn)行分析才能確定出,無法在異常SQL語句剛出現(xiàn)還沒有影響系統(tǒng)性能 和用戶體驗時進(jìn)行預(yù)測分析。因此需要一種能提前確定異常SQL語句的方法,從而可以預(yù) 防異常SQL語句消耗大量的系統(tǒng)資源和影響用戶體驗。
【發(fā)明內(nèi)容】
[0007] 本發(fā)明實施例提供一種異常SQL語句確定方法及服務(wù)器,用以提前確定異常SQL 語句,從而可以預(yù)防異常SQL語句消耗大量的系統(tǒng)資源和影響用戶體驗。
[0008] 因此,本發(fā)明實施例提供一種異常SQL語句確定方法,包括:
[0009] 獲取每個第一業(yè)務(wù)SQL語句在當(dāng)前采集周期內(nèi)的總執(zhí)行時間和總執(zhí)行次數(shù),將獲 取的總執(zhí)行時間按照從大到小的順序排序,位于第一設(shè)定個數(shù)之前的總執(zhí)行時間對應(yīng)的第 一業(yè)務(wù)SQL語句作為第二業(yè)務(wù)SQL語句;
[0010] 獲取每個所述第二業(yè)務(wù)SQL語句在所述當(dāng)前采集周期之前的第二設(shè)定個數(shù)的選 定采集周期內(nèi)的總執(zhí)行時間和總執(zhí)行次數(shù);
[0011] 根據(jù)每個所述第二業(yè)務(wù)SQL語句在所述當(dāng)前采集周期以及每個所述選定采集周 期內(nèi)的總執(zhí)行時間和總執(zhí)行次數(shù),計算對應(yīng)第二業(yè)務(wù)SQL語句的平均執(zhí)行時間的增長速 率;
[0012] 分別判斷每個所述第二業(yè)務(wù)SQL語句的平均執(zhí)行時間的增長速率是否大于第一 設(shè)定閾值,判定平均執(zhí)行時間的增長速率大于所述第一設(shè)定閾值的第二業(yè)務(wù)SQL語句為異 常SQL語句。
[0013] 具體的,獲取每個第一業(yè)務(wù)SQL語句在當(dāng)前采集周期內(nèi)的總執(zhí)行時間和總執(zhí)行次 數(shù),具體包括:
[0014] 持續(xù)采集每個所述第一業(yè)務(wù)SQL語句的執(zhí)行時間和執(zhí)行次數(shù);
[0015] 將在所述當(dāng)前采集周期到期后采集的每個所述第一業(yè)務(wù)SQL語句的執(zhí)行時間、減 去在所述當(dāng)前采集周期的前一個采集周期到期后采集的對應(yīng)第一業(yè)務(wù)SQL語句的執(zhí)行時 間,得到對應(yīng)第一業(yè)務(wù)SQL語句在所述當(dāng)前采集周期內(nèi)的總執(zhí)行時間;以及
[0016] 將在所述當(dāng)前采集周期到期后采集的每個所述第一業(yè)務(wù)SQL語句的執(zhí)行次數(shù)、減 去在所述當(dāng)前采集周期的前一個采集周期到期后采集的對應(yīng)第一業(yè)務(wù)SQL語句的執(zhí)行次 數(shù),得到對應(yīng)第一業(yè)務(wù)SQL語句在所述當(dāng)前采集周期內(nèi)的總執(zhí)行次數(shù)。
[0017] 具體的,根據(jù)每個所述第二業(yè)務(wù)SQL語句在所述當(dāng)前采集周期以及每個所述選定 采集周期內(nèi)的總執(zhí)行時間和總執(zhí)行次數(shù),計算對應(yīng)第二業(yè)務(wù)SQL語句的平均執(zhí)行時間的增 長速率,具體包括:
[0018] 根據(jù)每個所述第二業(yè)務(wù)SQL語句在所述當(dāng)前采集周期以及每個所述選定采集周 期內(nèi)的總執(zhí)行時間和總執(zhí)行次數(shù),計算對應(yīng)第二業(yè)務(wù)SQL語句在所述當(dāng)前采集周期以及每 個所述選定采集周期內(nèi)的平均執(zhí)行時間;
[0019] 根據(jù)每個所述第二業(yè)務(wù)SQL語句在所述當(dāng)前采集周期以及每個所述選定采集周 期內(nèi)的平均執(zhí)行時間,計算對應(yīng)第二業(yè)務(wù)SQL語句的平均執(zhí)行時間的增長速率。
[0020] 具體的,根據(jù)每個所述第二業(yè)務(wù)SQL語句在所述當(dāng)前采集周期以及每個所述選定 采集周期內(nèi)的平均執(zhí)行時間,計算對應(yīng)第二業(yè)務(wù)SQL語句的平均執(zhí)行時間的增長速率,具 體包括:
[0021] 針對每個所述第二業(yè)務(wù)SQL語句,執(zhí)行:
[0022] 按照時間先后順序?qū)λ霎?dāng)前采集周期和每個所述選定采集周期進(jìn)行編號,建立 編號與對應(yīng)的平均執(zhí)行時間的二元組;
[0023] 根據(jù)建立的二元組利用一元回歸分析方法擬合出當(dāng)前第二業(yè)務(wù)SQL語句的平均 執(zhí)行時間y關(guān)于編號t的一元線性公式y(tǒng)=a+bt ;
[0024] 將b作為所述當(dāng)前第二業(yè)務(wù)SQL語句的平均執(zhí)行時間的增長速率。
[0025] 可選的,還包括:
[0026] 將平均執(zhí)行時間的增長速率小于等于所述第一設(shè)定閾值的第二業(yè)務(wù)SQL語句作 為第三業(yè)務(wù)SQL語句;
[0027] 根據(jù)每個所述第三業(yè)務(wù)SQL語句的一元線性公式分別預(yù)測對應(yīng)第三業(yè)務(wù)SQL語句 在所述當(dāng)前采集周期的下一個采集周期內(nèi)的平均執(zhí)行時間;
[0028] 根據(jù)獲取的每個所述第三業(yè)務(wù)SQL語句在所述當(dāng)前采集周期的下一個采集周期 內(nèi)的總執(zhí)行時間和總執(zhí)行次數(shù),計算對應(yīng)第三業(yè)務(wù)SQL語句的實際的平均執(zhí)行時間;
[0029] 計算每個所述第三業(yè)務(wù)SQL語句在所述當(dāng)前采集周期的下一個采集周期內(nèi)的實 際的平均執(zhí)行時間與預(yù)測的平均執(zhí)行時間的比值,比值大于第二設(shè)定閾值的第三業(yè)務(wù)SQL 為異常SQL語句。
[0030] 具體的,根據(jù)建立的二元組利用一元回歸分析方法擬合出當(dāng)前第二業(yè)務(wù)SQL語句 的平均執(zhí)行時間y關(guān)于編號t的一元線性公式y(tǒng)=a+bt,具體包括:
[0031] 通過下列公式得到b和a :
【主權(quán)項】
1. 一種異常結(jié)構(gòu)化查詢語言SQL語句確定方法,其特征在于,包括: 獲取每個第一業(yè)務(wù)SQL語句在當(dāng)前采集周期內(nèi)的總執(zhí)行時間和總執(zhí)行次數(shù),將獲取的 總執(zhí)行時間按照從大到小的順序排序,位于第一設(shè)定個數(shù)之前的總執(zhí)行時間對應(yīng)的第一業(yè) 務(wù)SQL語句作為第二業(yè)務(wù)SQL語句; 獲取每個所述第二業(yè)務(wù)SQL語句在所述當(dāng)前采集周期之前的第二設(shè)定個數(shù)的選定采 集周期內(nèi)的總執(zhí)行時間和總執(zhí)行次數(shù); 根據(jù)每個所述第二業(yè)務(wù)SQL語句在所述當(dāng)前采集周期以及每個所述選定采集周期內(nèi) 的總執(zhí)行時間和總執(zhí)行次數(shù),計算對應(yīng)第二業(yè)務(wù)SQL語句的平均執(zhí)行時間的增長速率; 分別判斷每個所述第二業(yè)務(wù)SQL語句的平均執(zhí)行時間的增長速率是否大于第一設(shè)定 閾值,判定平均執(zhí)行時間的增長速率大于所述第一設(shè)定閾值的第二業(yè)務(wù)SQL語句為異常 SQL語句。
2. 如權(quán)利要求1所述的方法,其特征在于,獲取每個第一業(yè)務(wù)SQL語句在當(dāng)前采集周期 內(nèi)的總執(zhí)行時間和總執(zhí)行次數(shù),具體包括: 持續(xù)采集每個所述第一業(yè)務(wù)SQL語句的執(zhí)行時間和執(zhí)行次數(shù); 將在所述當(dāng)前采集周期到期后采集的每個所述第一業(yè)務(wù)SQL語句的執(zhí)行時間、減去在 所述當(dāng)前采集周期的前一個采集周期到期后采集的對應(yīng)第一業(yè)務(wù)SQL語句的執(zhí)行時間,得 到對應(yīng)第一業(yè)務(wù)SQL語句在所述當(dāng)前采集周期內(nèi)的總執(zhí)行時間;以及 將在所述當(dāng)前采集周期到期后采集的每個所述第一業(yè)務(wù)SQL語句的執(zhí)行次數(shù)、減去在 所述當(dāng)前采集周期的前一個采集周期到期后采集的對應(yīng)第一業(yè)務(wù)SQL語句的執(zhí)行次數(shù),得 到對應(yīng)第一業(yè)務(wù)SQL語句在所述當(dāng)前采集周期內(nèi)的總執(zhí)行次數(shù)。
3. 如權(quán)利要求1所述的方法,其特征在于,根據(jù)每個所述第二業(yè)務(wù)SQL語句在所述當(dāng) 前采集周期以及每個所述選定采集周期內(nèi)的總執(zhí)行時間和總執(zhí)行次數(shù),計算對應(yīng)第二業(yè)務(wù) SQL語句的平均執(zhí)行時間的增長速率,具體包括: 根據(jù)每個所述第二業(yè)務(wù)SQL語句在所述當(dāng)前采集周期以及每個所述選定采集周期內(nèi) 的總執(zhí)行時間和總執(zhí)行次數(shù),計算對應(yīng)第二業(yè)務(wù)SQL語句在所述當(dāng)前采集周期以及每個所 述選定采集周期內(nèi)的平均執(zhí)行時間; 根據(jù)每個所述第二業(yè)務(wù)SQL語句在所述當(dāng)前采集周期以及每個所述選定采集周期內(nèi) 的平均執(zhí)行時間,計算對應(yīng)第二業(yè)務(wù)SQL語句的平均執(zhí)行時間的增長速率。
4. 如權(quán)利要求3所述的方法,其特征在于,根據(jù)每個所述第二業(yè)務(wù)SQL語句在所述當(dāng)前 采集周期以及每個所述選定采集周期內(nèi)的平均執(zhí)行時間,計算對應(yīng)第二業(yè)務(wù)SQL語句的平 均執(zhí)行時間的增長速率,具體包括: 針對每個所述第二業(yè)務(wù)SQL語句,執(zhí)行: 按照時間先后順序?qū)λ霎?dāng)前采集周期和每個所述選定采集周期進(jìn)行編號,建立編號 與對應(yīng)的平均執(zhí)行時間的二元組; 根據(jù)建立的二元組利用一元回歸分析方法擬合出當(dāng)前第二業(yè)務(wù)SQL語句的平均執(zhí)行 時間y關(guān)于編號t的一元線性公式y(tǒng)=a+bt; 將b作為所述當(dāng)前第二業(yè)務(wù)SQL語句的平均執(zhí)行時間的增長速率。
5. 如權(quán)利要求4所述的方法,其特征在于,還包括: 將平均執(zhí)行時間的增長速率小于等于所述第一設(shè)定閾值的第二業(yè)務(wù)SQL語句作為第 三業(yè)務(wù)SQL語句; 根據(jù)每個所述第三業(yè)務(wù)SQL語句的一元線性公式分別預(yù)測對應(yīng)第三業(yè)務(wù)SQL語句在所 述當(dāng)前采集周期的下一個采集周期內(nèi)的平均執(zhí)行時間; 根據(jù)獲取的每個所述第三業(yè)務(wù)SQL語句在所述當(dāng)前采集周期的下一個采集周期內(nèi)的 總執(zhí)行時間和總執(zhí)行次數(shù),計算對應(yīng)第三業(yè)務(wù)SQL語句的實際的平均執(zhí)行時間; 計算每個所述第三業(yè)務(wù)SQL語句在所述當(dāng)前采集周期的下一個采集周期內(nèi)的實際的 平均執(zhí)行時間與預(yù)測的平均執(zhí)行時間的比值,比值大于第二設(shè)定閾值的第三