一種提高應(yīng)用系統(tǒng)在關(guān)系數(shù)據(jù)庫的空間與時間效率的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及關(guān)系數(shù)據(jù)庫的查詢緩存優(yōu)化技術(shù)領(lǐng)域,具體涉及一種通過機(jī)器學(xué)習(xí)提高應(yīng)用系統(tǒng)在關(guān)系數(shù)據(jù)庫的空間與時間效率的方法。
【背景技術(shù)】
[0002]數(shù)據(jù)查詢緩存在各種關(guān)系數(shù)據(jù)庫上普遍都有實(shí)現(xiàn),實(shí)現(xiàn)過程基本是,查詢數(shù)據(jù)時,通過解析查詢語句,判斷要查詢的數(shù)據(jù)庫是否存在于緩存中,如果存在則直接從緩存中讀取數(shù)據(jù)并返回;如果數(shù)據(jù)不存在于緩存中,則從數(shù)據(jù)文件中讀取數(shù)據(jù),并保存到緩存中用于下次的數(shù)據(jù)查詢。在這個實(shí)現(xiàn)的過程中,由于沒有判斷數(shù)據(jù)的讀取頻率、讀取的字段、條件等,在每次讀取數(shù)據(jù)時,都要進(jìn)行數(shù)據(jù)的緩存,所以關(guān)系數(shù)據(jù)庫每次都要維護(hù)一次緩存的操作,如果緩存空間不足,還每次要進(jìn)行LFU的替換算法,這導(dǎo)致在每次查詢時,數(shù)據(jù)緩存的空間與時間效率較低,需要進(jìn)行改進(jìn)。
【發(fā)明內(nèi)容】
[0003]本發(fā)明通過預(yù)先機(jī)器學(xué)習(xí),從而得出緩存閥值計算公式用于數(shù)據(jù)查詢時的閥值計算,判斷是否要對數(shù)據(jù)進(jìn)行緩存,從而優(yōu)化了傳統(tǒng)數(shù)據(jù)庫在查詢是每次都要進(jìn)行緩存的問題,減少了數(shù)據(jù)緩存的空間與每次緩存時的中斷替換時間,提高了數(shù)據(jù)查詢的效率。
[0004]本發(fā)明解決上述技術(shù)問題的技術(shù)方案是:
[0005]通過分析特定應(yīng)用系統(tǒng)的查詢語句,把查詢語句分解為解析樹,通過解析樹把查詢語句按查詢字段、查詢表、查詢條件,相應(yīng)應(yīng)用MLFU、LFU、FP-gr oup th算法,按查詢字段、查詢表、查詢條件作為輸入,通過回歸算法計算得出查詢語句的緩存閥值計算公式;在應(yīng)用系統(tǒng)進(jìn)行查詢時,通過閥值計算公式,判斷查詢的數(shù)據(jù)是否可能在緩存空間中、或是否需要緩存到空間上。
[0006]對應(yīng)用系統(tǒng)特定的查詢語句的分析、通過機(jī)器學(xué)習(xí)用回歸算法得出緩存閥值計算公式后實(shí)現(xiàn)數(shù)據(jù)查詢的優(yōu)化,分為查詢語句機(jī)器學(xué)習(xí)與查詢緩存策略兩部分。
[0007]在查詢語句機(jī)器學(xué)習(xí)時,需把應(yīng)用系統(tǒng)的所有查詢語句獲取到,并對所有的查詢語句按查詢字段、查詢表、查詢條件分解為解析樹。
[0008]在所有查詢語句分解為解析樹后,查詢字段、查詢表、查詢條件分別應(yīng)用MLFU、LFU、FP-Groupth算法,分別計算出各種查詢字段、查詢表、查詢條件在所有查詢語句中的比率,并按從高到低的順序排序;
[0009]分析查詢字段、查詢表、查詢條件的數(shù)量,對于大于一定比率的查詢語句,表示是經(jīng)常要使用到的,在進(jìn)行打分時,設(shè)置為I,低于一定比率的查詢語句,表示不經(jīng)常使用到,在打分時設(shè)置為0,這樣三種情況,得出了從O到7的8種分?jǐn)?shù);
[0010]通過查詢字段、查詢表、查詢條件的占所有查詢結(jié)果的比率,與最終的O到7的打分,形成最終的回歸分析基礎(chǔ)數(shù)據(jù),從而得出按查詢字段、查詢表、查詢條件作為輸入的查詢語句是否需要緩存的閥值計算公式,用于數(shù)據(jù)查詢時的緩存參考。
[0011]在通過機(jī)器學(xué)習(xí)得出緩存閥值計算公式后,把計算公式寫入到緩存系統(tǒng)中,在數(shù)據(jù)查詢輸入語句時,系統(tǒng)先對查詢語句按查詢字段、查詢表、查詢條件進(jìn)行分解成解析樹,并獲取查詢字段、查詢表、查詢條件的在所有查詢語句中的占比,輸入緩存閥值計算公式,得出查詢語句的緩存閥值;
[0012]當(dāng)緩存閥值小于應(yīng)用系統(tǒng)指定的定值時,表示查詢語句相對比較少使用到,所以此查詢語句查詢的數(shù)據(jù)不需要緩存,在緩存空間上也不會存在,數(shù)據(jù)直接從數(shù)據(jù)文件上讀取,并返回給用戶;
[0013]當(dāng)緩存閥值大于等于應(yīng)用系統(tǒng)指定的定值時,表示查詢語句會經(jīng)常使用到,此查詢語句的數(shù)據(jù)需緩存到空間上,用于以后的數(shù)據(jù)查詢,此時,會在緩存空間上查詢數(shù)據(jù)是否已經(jīng)緩存,如果緩存,更新最后使用時間并把數(shù)據(jù)返回給用戶;如果沒有緩存,需從數(shù)據(jù)文件上直接讀取,并判斷緩存空間是否足夠放此數(shù)據(jù),如果緩存空間不夠,需把緩存空間上的數(shù)據(jù)按LFU算法,把最久沒使用的數(shù)據(jù)替換出去,用于最新的數(shù)據(jù)的緩存,緩存操作完成后,更新最后使用時間并把數(shù)據(jù)返回給用戶,從而實(shí)現(xiàn)數(shù)據(jù)的查詢操作。
[0014]本發(fā)明方法是通過對特定應(yīng)用系統(tǒng)的查詢語句進(jìn)行分析,因?yàn)樘囟ǖ膽?yīng)用系統(tǒng)查詢語句是基本固定的,通過對查詢語句按查詢字段、查詢表、查詢條件,按MLFU、LFU、FP-Groupth等算法,用機(jī)器學(xué)習(xí)的方法,回歸計算得出數(shù)據(jù)緩存閥值的計算公式,在每次數(shù)據(jù)查詢時,首先對查詢語句進(jìn)行分析并計算出緩存閥值,如果閥值低于緩存值,則數(shù)據(jù)直接從數(shù)據(jù)文件中讀取并返回,如果閥值大于等于緩存值,則判斷數(shù)據(jù)是否已經(jīng)存在,如果已經(jīng)緩存,直接讀取,如果未緩存,則從數(shù)據(jù)塊中讀取數(shù)據(jù)后,并保存到空間上,如果空間不足,則按LFU的原則進(jìn)行替換,從而避免了所有的數(shù)據(jù)都要進(jìn)行替換,就算讀取次數(shù)很小的數(shù)據(jù)也要做一次緩存、或可能替換緩存中的數(shù)據(jù)的操作,從而極大提高了數(shù)據(jù)緩存時的空間與時間的效率。通過此方法,本發(fā)明優(yōu)化了傳統(tǒng)數(shù)據(jù)庫在查詢是每次都要進(jìn)行緩存的問題,從而減少了數(shù)據(jù)緩存的空間與每次緩存時的中斷替換時間,提高了數(shù)據(jù)查詢的效率。
【附圖說明】
[0015]下面結(jié)合附圖對本發(fā)明進(jìn)一步說明:
[0016]圖1是本發(fā)明數(shù)據(jù)查詢緩存流程圖;
[0017]圖2是本發(fā)明與現(xiàn)有方法關(guān)系數(shù)據(jù)庫緩存的空間對比圖;
[0018]圖3是本發(fā)明與現(xiàn)有方法關(guān)系數(shù)據(jù)庫緩存的時間對比圖。
【具體實(shí)施方式】
[0019]見圖1所示,本發(fā)明的實(shí)現(xiàn)主要包括兩部分,機(jī)器學(xué)習(xí)與數(shù)據(jù)查詢,兩部分的具體步驟如下:
[0020]一、機(jī)器學(xué)習(xí):
[0021]步驟一、獲取特定應(yīng)用系統(tǒng)的所有查詢語句;
[0022]步驟二、對所有的查詢語句、按查詢的字段、查詢的表、查詢的條件進(jìn)行分析,形成解析樹,對于MLFU、LFU、FP-Groupth三種算法,計算出各自的在所有查詢語句中的占比;
[0023]步驟三、通過對比各查詢語句的占比,通過打分,把所有查詢語句的打分設(shè)置為O至7;
[0024]步驟四、通過步驟二與步驟三,在線性回歸上最終得出緩存閥值的計算公工,用于緩存時的閥值計算,如:
[0025]f(x)=81.3463*x+2.0715*y+21.9744*z_0.1356
[0026]二、數(shù)據(jù)查詢緩存過程:
[0027]步驟一、輸入應(yīng)用系統(tǒng)查詢語句,并對查詢語句按查詢字段、查詢表、查詢條件進(jìn)行分析,形成解析樹;
[