發(fā)現(xiàn)低性能的sql語(yǔ)句以及預(yù)測(cè)sql語(yǔ)句性能的方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)庫(kù)領(lǐng)域,尤其涉及一種發(fā)現(xiàn)低性能的SQL語(yǔ)句以及預(yù)測(cè)SQL語(yǔ)句性能的方法和裝置。
【背景技術(shù)】
[0002]在例如銀行運(yùn)維系統(tǒng)的一些系統(tǒng)中,有時(shí)會(huì)發(fā)生超時(shí)等故障。這些故障的原因可能是一些用于查詢的SQL語(yǔ)句性能較差。由于例如銀行運(yùn)維系統(tǒng)的一些系統(tǒng)中可能包含成千上萬(wàn)的SQL語(yǔ)句,找出其中性能較差的SQL語(yǔ)句變得很困難。
[0003]即使數(shù)據(jù)庫(kù)的性能在一段時(shí)間是可以容忍的,但很可能隨著數(shù)據(jù)庫(kù)中數(shù)據(jù)的增多、業(yè)務(wù)的并發(fā)處理的增多,SQL語(yǔ)句執(zhí)行得越來(lái)越慢,最終由于資源瓶頸而導(dǎo)致數(shù)據(jù)庫(kù)崩潰。然而,預(yù)測(cè)在未來(lái)可能會(huì)性能變差、引起數(shù)據(jù)庫(kù)崩潰的SQL語(yǔ)句更加困難。
【發(fā)明內(nèi)容】
[0004]有鑒于此,本發(fā)明一個(gè)實(shí)施例的一個(gè)目的旨在提供一種高效地在數(shù)據(jù)庫(kù)中發(fā)現(xiàn)低性能的SQL語(yǔ)句的方案。
[0005]另外,本發(fā)明另一實(shí)施例的另一目的旨在預(yù)測(cè)未來(lái)性能可能會(huì)變差的SQL語(yǔ)句。
[0006]根據(jù)本發(fā)明的一個(gè)實(shí)施例,提供了一種用于在數(shù)據(jù)庫(kù)中發(fā)現(xiàn)低性能的SQL語(yǔ)句的方法,包括:跟蹤SQL語(yǔ)句的執(zhí)行成本和相關(guān)成本指標(biāo);基于跟蹤到的SQL語(yǔ)句的執(zhí)行成本和相關(guān)成本指標(biāo)的歷史數(shù)據(jù),預(yù)測(cè)SQL語(yǔ)句的成本的動(dòng)態(tài)閾值,以便基于SQL語(yǔ)句的在特定時(shí)刻執(zhí)行成本和相應(yīng)的預(yù)測(cè)出的成本的閾值,發(fā)現(xiàn)低性能的SQL語(yǔ)句。
[0007]在一種具體實(shí)現(xiàn)中,所述跟蹤步驟包括:以固定時(shí)間間隔跟蹤SQL語(yǔ)句的執(zhí)行成本和相關(guān)成本指標(biāo)。
[0008]在一種具體實(shí)現(xiàn)中,所述預(yù)測(cè)步驟包括:以固定時(shí)間間隔從跟蹤到的SQL語(yǔ)句的執(zhí)行成本和相關(guān)成本指標(biāo)的歷史數(shù)據(jù)中預(yù)測(cè)所述成本的動(dòng)態(tài)閾值。
[0009]在一種具體實(shí)現(xiàn)中,所述方法還包括:響應(yīng)于SQL語(yǔ)句的在特定時(shí)刻執(zhí)行成本高于預(yù)測(cè)的在該特定時(shí)刻成本的閾值,判斷該SQL語(yǔ)句在該特定時(shí)刻性能低。
[0010]根據(jù)本發(fā)明的另一實(shí)施例,提供了一種用于預(yù)測(cè)SQL語(yǔ)句的性能的方法,包括:跟蹤SQL語(yǔ)句的性能指標(biāo)和相關(guān)數(shù)據(jù)量、并發(fā)量;基于跟蹤到的SQL語(yǔ)句的性能指標(biāo)和相關(guān)數(shù)據(jù)量、并發(fā)量的歷史數(shù)據(jù),確定性能指標(biāo)隨數(shù)據(jù)量和并發(fā)量變化的趨勢(shì);響應(yīng)于輸入的數(shù)據(jù)量和并發(fā)量,基于該性能指標(biāo)隨數(shù)據(jù)量和并發(fā)量變化的趨勢(shì),輸出在該數(shù)據(jù)量和并發(fā)量下的性能指標(biāo)。
[0011]在一種具體實(shí)現(xiàn)中,所述性能指標(biāo)是SQL語(yǔ)句的執(zhí)行成本。
[0012]在一種具體實(shí)現(xiàn)中,所述跟蹤步驟包括:以固定時(shí)間間隔跟蹤SQL語(yǔ)句的性能指標(biāo)和相關(guān)數(shù)據(jù)量、并發(fā)量。
[0013]在一種具體實(shí)現(xiàn)中,所述確定步驟包括:以固定時(shí)間間隔動(dòng)態(tài)地從SQL語(yǔ)句的性能指標(biāo)和相關(guān)數(shù)據(jù)量、并發(fā)量的歷史數(shù)據(jù)中確定性能指標(biāo)隨數(shù)據(jù)量和并發(fā)量變化的趨勢(shì)。
[0014]根據(jù)本發(fā)明的一個(gè)實(shí)施例,提供了一種用于在數(shù)據(jù)庫(kù)中發(fā)現(xiàn)低性能的SQL語(yǔ)句的裝置,包括:跟蹤單元,被配置為跟蹤SQL語(yǔ)句的執(zhí)行成本和相關(guān)成本指標(biāo);預(yù)測(cè)單元,被配置為基于跟蹤到的SQL語(yǔ)句的執(zhí)行成本和相關(guān)成本指標(biāo)的歷史數(shù)據(jù),預(yù)測(cè)SQL語(yǔ)句的成本的動(dòng)態(tài)閾值,以便基于SQL語(yǔ)句的在特定時(shí)刻執(zhí)行成本和相應(yīng)的預(yù)測(cè)出的成本的閾值,發(fā)現(xiàn)低性能的SQL語(yǔ)句。
[0015]在一種具體實(shí)現(xiàn)中,所述跟蹤單元被配置為以固定時(shí)間間隔跟蹤SQL語(yǔ)句的執(zhí)行成本和相關(guān)成本指標(biāo)。
[0016]在一種具體實(shí)現(xiàn)中,所述預(yù)測(cè)單元被配置為以固定時(shí)間間隔從跟蹤到的SQL語(yǔ)句的執(zhí)行成本和相關(guān)成本指標(biāo)的歷史數(shù)據(jù)中預(yù)測(cè)所述成本的動(dòng)態(tài)閾值。
[0017]在一種具體實(shí)現(xiàn)中,所述裝置還包括:判斷單元,被配置為響應(yīng)于SQL語(yǔ)句的在特定時(shí)刻執(zhí)行成本高于預(yù)測(cè)的在該特定時(shí)刻成本的閾值,判斷該SQL語(yǔ)句在該特定時(shí)刻性能低。
[0018]根據(jù)本發(fā)明的另一實(shí)施例,提供了一種用于預(yù)測(cè)SQL語(yǔ)句的性能的裝置,包括:跟蹤單元,被配置為跟蹤SQL語(yǔ)句的性能指標(biāo)和相關(guān)數(shù)據(jù)量、并發(fā)量;確定單元,被配置為基于跟蹤到的SQL語(yǔ)句的性能指標(biāo)和相關(guān)數(shù)據(jù)量、并發(fā)量的歷史數(shù)據(jù),確定性能指標(biāo)隨數(shù)據(jù)量和并發(fā)量變化的趨勢(shì);輸出單元,被配置為響應(yīng)于輸入的數(shù)據(jù)量和并發(fā)量,基于該性能指標(biāo)隨數(shù)據(jù)量和并發(fā)量變化的趨勢(shì),輸出在該數(shù)據(jù)量和并發(fā)量下的性能指標(biāo)。
[0019]在一種具體實(shí)現(xiàn)中,所述性能指標(biāo)是SQL語(yǔ)句的執(zhí)行成本。
[0020]在一種具體實(shí)現(xiàn)中,所述跟蹤單元被配置為以固定時(shí)間間隔跟蹤SQL語(yǔ)句的性能指標(biāo)和相關(guān)數(shù)據(jù)量、并發(fā)量。
[0021]在一種具體實(shí)現(xiàn)中,所述確定單元被配置為以固定時(shí)間間隔動(dòng)態(tài)地從SQL語(yǔ)句的性能指標(biāo)和相關(guān)數(shù)據(jù)量、并發(fā)量的歷史數(shù)據(jù)中確定性能指標(biāo)隨數(shù)據(jù)量和并發(fā)量變化的趨勢(shì)。
[0022]由于本發(fā)明的實(shí)施例基于跟蹤到的SQL語(yǔ)句的執(zhí)行成本和相關(guān)成本指標(biāo)的歷史數(shù)據(jù),預(yù)測(cè)SQL語(yǔ)句的成本的動(dòng)態(tài)閾值,以便基于SQL語(yǔ)句的在特定時(shí)刻執(zhí)行成本和相應(yīng)的預(yù)測(cè)出的成本閾值,發(fā)現(xiàn)低性能的SQL語(yǔ)句,因此,它能夠高效地發(fā)現(xiàn)低性能的SQL語(yǔ)句。
[0023]另外,由于本發(fā)明的另一實(shí)施例基于跟蹤到的SQL語(yǔ)句的性能指標(biāo)和相關(guān)數(shù)據(jù)量、并發(fā)量的歷史數(shù)據(jù),確定性能指標(biāo)隨數(shù)據(jù)量和并發(fā)量變化的趨勢(shì),并響應(yīng)于輸入的數(shù)據(jù)量和并發(fā)量,輸出在該數(shù)據(jù)量和并發(fā)量下的性能指標(biāo),這樣,就有可能預(yù)測(cè)在未來(lái)數(shù)據(jù)庫(kù)中數(shù)據(jù)增多、業(yè)務(wù)的并發(fā)處理增多的情況下可能會(huì)性能變差、引起數(shù)據(jù)庫(kù)查詢系統(tǒng)崩潰的SQL語(yǔ)句。
【附圖說(shuō)明】
[0024]本發(fā)明的其它特點(diǎn)、特征、優(yōu)點(diǎn)和益處通過(guò)以下結(jié)合附圖的詳細(xì)描述將變得更加顯而易見(jiàn)。
[0025]圖1示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的發(fā)現(xiàn)低性能的SQL語(yǔ)句的方法的流程圖。
[0026]圖2示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的包括動(dòng)態(tài)跟蹤的SQL語(yǔ)句執(zhí)行成本曲線、和預(yù)測(cè)出的SQL語(yǔ)句的執(zhí)行成本的動(dòng)態(tài)閾值的曲線的界面。
[0027]圖3示出了根據(jù)本發(fā)明另一實(shí)施例的用于預(yù)測(cè)SQL語(yǔ)句的性能的方法的流程圖。
[0028]圖4示出了根據(jù)本發(fā)明另一實(shí)施例的顯示了 SQL語(yǔ)句執(zhí)行成本隨數(shù)據(jù)量和并發(fā)量變化趨勢(shì)、以及從輸入的數(shù)據(jù)量和并發(fā)量預(yù)測(cè)在該數(shù)據(jù)量和并發(fā)量下的執(zhí)行成本的界面。
[0029]圖5示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的發(fā)現(xiàn)低性能的SQL語(yǔ)句的裝置的框圖。
[0030]圖6示出了根據(jù)本發(fā)明另一實(shí)施例的用于預(yù)測(cè)SQL語(yǔ)句的性能的裝置的框圖。
[0031]圖7示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的發(fā)現(xiàn)低性能的SQL語(yǔ)句的設(shè)備的框圖。
[0032]圖8示出了根據(jù)本發(fā)明另一實(shí)施例的用于預(yù)測(cè)SQL語(yǔ)句的性能的設(shè)備的框圖。
【具體實(shí)施方式】
[0033]下面,將結(jié)合附圖詳細(xì)描述本發(fā)明的各個(gè)實(shí)施例。
[0034]圖1所示的方法能夠用來(lái)發(fā)現(xiàn)低性能的SQL語(yǔ)句。
[0035]執(zhí)行成本是SQL語(yǔ)句以單塊讀時(shí)間為單位表示的總執(zhí)行時(shí)間。它能夠從數(shù)據(jù)庫(kù)的快照中通過(guò)現(xiàn)有技術(shù)的方法得出。它是最能夠體現(xiàn)SQL語(yǔ)句的性能是否良好的一個(gè)指標(biāo)。但是,孤立地判斷執(zhí)行成本沒(méi)有意義。同樣的一個(gè)執(zhí)行成本,在有些情況下可能是可以接受的,在有些情況下可能就變成不可接受的,因此要結(jié)合成本閾值來(lái)進(jìn)行判斷。本發(fā)明的實(shí)施例通過(guò)預(yù)測(cè)SQL語(yǔ)句的執(zhí)行成本的動(dòng)態(tài)的閾值,能夠?qū)崟r(shí)地用來(lái)發(fā)現(xiàn)低性能的SQL語(yǔ)句。
[0036]在步驟SlOl中,以固定時(shí)間間隔(例如I小時(shí))跟蹤SQL語(yǔ)句的執(zhí)行成本和相關(guān)成本指標(biāo)(執(zhí)行成本和相關(guān)成本指標(biāo)都可以從數(shù)據(jù)庫(kù)的快照中得出)。成本指標(biāo)是指與成本有關(guān)的用于動(dòng)態(tài)建模的其它指標(biāo),例如數(shù)據(jù)量、并發(fā)量、CPU時(shí)間等指標(biāo)。數(shù)據(jù)量包括數(shù)據(jù)庫(kù)數(shù)據(jù)量,例如表大小或表行數(shù)。并發(fā)量可以是SQL語(yǔ)句對(duì)應(yīng)的業(yè)務(wù)的并發(fā)量,例如交易量;也可以是數(shù)據(jù)庫(kù)的并發(fā)量,例如下列中的一個(gè)或多個(gè):活動(dòng)會(huì)話數(shù)、數(shù)