本發(fā)明涉及一種數(shù)據(jù)庫(kù)發(fā)布時(shí)間的預(yù)測(cè)方法和系統(tǒng)。
背景技術(shù):
現(xiàn)有的數(shù)據(jù)庫(kù)發(fā)布系統(tǒng)中沒(méi)有相關(guān)數(shù)據(jù)庫(kù)變更時(shí)間窗口預(yù)測(cè)的方法,使得各部門(mén)的開(kāi)發(fā)無(wú)法精確的了解數(shù)據(jù)庫(kù)相關(guān)的信息而判斷合適的發(fā)布時(shí)間。因此在進(jìn)行數(shù)據(jù)庫(kù)變更時(shí)可能會(huì)引發(fā)生產(chǎn)環(huán)境數(shù)據(jù)庫(kù)長(zhǎng)時(shí)間的阻塞,影響線上業(yè)務(wù)的正常使用。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明要解決的技術(shù)問(wèn)題是為了克服現(xiàn)有技術(shù)中缺乏對(duì)數(shù)據(jù)庫(kù)的發(fā)布時(shí)間進(jìn)行預(yù)測(cè),以避免數(shù)據(jù)庫(kù)的變更可能引發(fā)的生產(chǎn)環(huán)境數(shù)據(jù)庫(kù)長(zhǎng)時(shí)間的阻塞,影響線上業(yè)務(wù)的正常使用的缺陷,提供一種數(shù)據(jù)庫(kù)發(fā)布時(shí)間的預(yù)測(cè)方法和系統(tǒng)。
本發(fā)明是通過(guò)以下技術(shù)方案解決上述技術(shù)問(wèn)題的:
一種數(shù)據(jù)庫(kù)發(fā)布時(shí)間的預(yù)測(cè)方法,其特點(diǎn)在于,建立一映射列表,所述映射列表包括所述數(shù)據(jù)庫(kù)的多個(gè)綜合權(quán)重值,以及與每一綜合權(quán)重值一一對(duì)應(yīng)的所述數(shù)據(jù)庫(kù)的多個(gè)發(fā)布時(shí)間,所述預(yù)測(cè)方法包括:
s1、判斷所述數(shù)據(jù)庫(kù)接收的ddl(datadefinitionlanguage,數(shù)據(jù)定義語(yǔ)言)操作類型;
s2、判斷所述ddl操作類型是否會(huì)引起全表掃描,若是,計(jì)算所述數(shù)據(jù)庫(kù)的表容量權(quán)重值與表熱度權(quán)重值的總和;若否,計(jì)算所述數(shù)據(jù)庫(kù)的表熱度權(quán)重值;
其中,所述表熱度權(quán)重值為所述數(shù)據(jù)庫(kù)在一時(shí)間段內(nèi)被訪問(wèn)的頻率所表征的權(quán)重值,所述表容量權(quán)重值為所述數(shù)據(jù)庫(kù)接收所述ddl操作類型的操作后的容量所表征的權(quán)重值;
s3、將步驟s2的結(jié)果作為所述數(shù)據(jù)庫(kù)的綜合權(quán)重值;
s4、查找所述映射列表中與所述綜合權(quán)重值對(duì)應(yīng)的所述數(shù)據(jù)庫(kù)的發(fā)布時(shí)間。
較佳地,步驟s2中判斷所述ddl操作類型是否會(huì)引起全表掃描包括:
s21、在所述數(shù)據(jù)庫(kù)中建立一數(shù)據(jù)表;
s22、向所述數(shù)據(jù)表中插入或修改一條數(shù)據(jù)記錄,并開(kāi)啟io(input/output輸入輸出)檢測(cè);
s23、判斷所述插入或修改的操作是否產(chǎn)生邏輯讀,若是,則所述ddl操作類型會(huì)引起全表掃描,若否,所述ddl操作類型不會(huì)引起全表掃描。
較佳地,所述頻率的計(jì)算方法為:以一時(shí)間間隔計(jì)算user_scans,user_seeks,user_updates操作所述數(shù)據(jù)庫(kù)的次數(shù)之和作為所述數(shù)據(jù)庫(kù)被訪問(wèn)的頻率。
其中,user_scans,user_seeks,user_updates均為數(shù)據(jù)庫(kù)的操作語(yǔ)言,分別指在索引上的遍歷操作,在索引上的查找操作,在索引上的更新操作??梢岳斫?,本方案獲取頻率所執(zhí)行的操作方式不限于上述三種,還可為其它的可以表征頻率的操作。
較佳地,所述容量的計(jì)算方法為:根據(jù)接收所述ddl操作類型的操作后的所述數(shù)據(jù)庫(kù)的行數(shù)和數(shù)據(jù)庫(kù)文件的大小獲得所述數(shù)據(jù)庫(kù)的容量。
較佳地,所述映射列表還包括一熱度權(quán)重映射列表和一容量權(quán)重映射列表,所述熱度權(quán)重映射列表包括所述數(shù)據(jù)庫(kù)被訪問(wèn)的若干頻率和與每一頻率一一對(duì)應(yīng)的表熱度權(quán)重值,所述容量權(quán)重映射列表包括所述數(shù)據(jù)庫(kù)接收所述ddl操作類型的操作后的若干容量和與每一容量一一對(duì)應(yīng)的表容量權(quán)重值。
本發(fā)明還提供一種數(shù)據(jù)庫(kù)發(fā)布時(shí)間的預(yù)測(cè)系統(tǒng),其特點(diǎn)在于,所述系統(tǒng)包括一映射列表,所述映射列表包括所述數(shù)據(jù)庫(kù)的多個(gè)綜合權(quán)重值,以及與每一綜合權(quán)重值一一對(duì)應(yīng)的所述數(shù)據(jù)庫(kù)的多個(gè)發(fā)布時(shí)間,所述系統(tǒng)還包括:
一操作類型判斷模塊,用于判斷所述數(shù)據(jù)庫(kù)接收的ddl操作類型;
一全表掃描判斷模塊,用于判斷所述ddl操作類型是否會(huì)引起全表掃描,若是,計(jì)算所述數(shù)據(jù)庫(kù)的表容量權(quán)重值與表熱度權(quán)重值的總和;若否,計(jì)算所述數(shù)據(jù)庫(kù)的表熱度權(quán)重值;
其中,所述表熱度權(quán)重值為所述數(shù)據(jù)庫(kù)在一時(shí)間段內(nèi)被訪問(wèn)的頻率所表征的權(quán)重值,所述表容量權(quán)重值為所述數(shù)據(jù)庫(kù)接收所述ddl操作類型的操作后的容量所表征的權(quán)重值;
和一查找模塊,用于將所述全表掃描判斷模塊的執(zhí)行結(jié)果作為所述數(shù)據(jù)庫(kù)的綜合權(quán)重值,并在所述映射列表中查找與所述綜合權(quán)重值對(duì)應(yīng)的所述數(shù)據(jù)庫(kù)的發(fā)布時(shí)間。
較佳地,所述全表掃描判斷模塊包括:
一數(shù)據(jù)表建立模塊,用于在所述數(shù)據(jù)庫(kù)中建立一數(shù)據(jù)表;
一數(shù)據(jù)記錄更改模塊,用于向所述數(shù)據(jù)表中插入或修改一條數(shù)據(jù)記錄,并開(kāi)啟io檢測(cè);
和一邏輯讀判斷模塊,用于判斷所述插入或修改的操作是否產(chǎn)生邏輯讀,若是,則所述ddl操作類型會(huì)引起全表掃描,若否,所述ddl操作類型不會(huì)引起全表掃描。
較佳地,所述頻率為:以一時(shí)間間隔計(jì)算user_scans,user_seeks,user_updates操作所述數(shù)據(jù)庫(kù)的次數(shù)之和作為所述數(shù)據(jù)庫(kù)被訪問(wèn)的頻率。
較佳地,所述容量為:根據(jù)接收所述ddl操作類型的操作后的所述數(shù)據(jù)庫(kù)的行數(shù)和數(shù)據(jù)庫(kù)文件的大小獲得所述數(shù)據(jù)庫(kù)的容量。
較佳地,所述映射列表還包括一熱度權(quán)重映射列表和一容量權(quán)重映射列表,所述熱度權(quán)重映射列表包括所述數(shù)據(jù)庫(kù)被訪問(wèn)的若干頻率和與每一頻率一一對(duì)應(yīng)的表熱度權(quán)重值,所述容量權(quán)重映射列表包括所述數(shù)據(jù)庫(kù)接收所述ddl操作類型的操作后的若干容量和與每一容量一一對(duì)應(yīng)的表容量權(quán)重值。
本發(fā)明的積極進(jìn)步效果在于:本發(fā)明根據(jù)數(shù)據(jù)庫(kù)接收到的操作類型,并對(duì)操作類型進(jìn)行分析,計(jì)算數(shù)據(jù)庫(kù)的權(quán)重,從而獲得數(shù)據(jù)庫(kù)的發(fā)布時(shí)間,能夠?qū)?shù)據(jù)庫(kù)的發(fā)布時(shí)間做出合理的預(yù)測(cè),降低了數(shù)據(jù)庫(kù)發(fā)布對(duì)生成環(huán)境的影響,提高了發(fā)布成功率,避免了在不當(dāng)時(shí)刻發(fā)布數(shù)據(jù)庫(kù)導(dǎo)致的數(shù)據(jù)庫(kù)長(zhǎng)時(shí)間的阻塞或數(shù)據(jù)庫(kù)產(chǎn)生的其它故障。
附圖說(shuō)明
圖1為本發(fā)明實(shí)施例1的數(shù)據(jù)庫(kù)發(fā)布時(shí)間的預(yù)測(cè)方法的流程圖。
圖2為本發(fā)明實(shí)施例2的數(shù)據(jù)庫(kù)發(fā)布時(shí)間的預(yù)測(cè)系統(tǒng)的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面通過(guò)實(shí)施例的方式進(jìn)一步說(shuō)明本發(fā)明,但并不因此將本發(fā)明限制在所述的實(shí)施例范圍之中。
實(shí)施例1
本實(shí)施例提供一種數(shù)據(jù)庫(kù)發(fā)布時(shí)間的預(yù)測(cè)方法,如圖1所示。
建立一映射列表,所述映射列表包括一綜合權(quán)重發(fā)布時(shí)間映射列表,所述綜合權(quán)重發(fā)布時(shí)間映射列表包括所述數(shù)據(jù)庫(kù)的多個(gè)綜合權(quán)重值,以及與每一綜合權(quán)重值一一對(duì)應(yīng)的所述數(shù)據(jù)庫(kù)的多個(gè)發(fā)布時(shí)間。所述映射列表還包括一熱度權(quán)重映射列表和一容量權(quán)重映射列表,所述熱度權(quán)重映射列表包括所述數(shù)據(jù)庫(kù)被訪問(wèn)的若干頻率和與每一頻率一一對(duì)應(yīng)的表熱度權(quán)重值,所述容量權(quán)重映射列表包括所述數(shù)據(jù)庫(kù)接收所述ddl操作類型的操作后的若干容量和與每一容量一一對(duì)應(yīng)的表容量權(quán)重值。所述映射列表的形式可舉例如表1所示:
表1映射列表
所述預(yù)測(cè)方法包括:
步驟101、判斷所述數(shù)據(jù)庫(kù)接收的ddl操作類型;
其中,數(shù)據(jù)庫(kù)可為schema數(shù)據(jù)庫(kù)。ddl操作類型不限于插入、創(chuàng)建、查詢、刪除等操作類型。
步驟102、判斷所述ddl操作類型是否會(huì)引起全表掃描,若是,計(jì)算所述數(shù)據(jù)庫(kù)的表容量權(quán)重值與表熱度權(quán)重值的總和;若否,計(jì)算所述數(shù)據(jù)庫(kù)的表熱度權(quán)重值;
其中,所述表熱度權(quán)重值為所述數(shù)據(jù)庫(kù)在一時(shí)間段內(nèi)被訪問(wèn)的頻率所表征的權(quán)重值,所述表容量權(quán)重值為所述數(shù)據(jù)庫(kù)接收所述ddl操作類型的操作后的容量所表征的權(quán)重值;
所述頻率的計(jì)算方法為:以一時(shí)間間隔計(jì)算user_scans,user_seeks,user_updates操作所述數(shù)據(jù)庫(kù)的次數(shù)之和作為所述數(shù)據(jù)庫(kù)被訪問(wèn)的頻率。
所述容量的計(jì)算方法為:根據(jù)接收所述ddl操作類型的操作后的所述數(shù)據(jù)庫(kù)的行數(shù)和數(shù)據(jù)庫(kù)文件的大小獲得所述數(shù)據(jù)庫(kù)的容量。
該時(shí)間間隔可為10秒,頻率可以次/秒計(jì)算。容量可以m(兆)計(jì)算。
步驟102中判斷所述ddl操作類型是否會(huì)引起全表掃描包括:
一、在所述數(shù)據(jù)庫(kù)中建立一數(shù)據(jù)表;
該數(shù)據(jù)表可只有一個(gè)字段,該字段定義為int,notnull,primarykey型,即整型,非空,主鍵。
二、向所述數(shù)據(jù)表中插入或修改一條數(shù)據(jù)記錄,并開(kāi)啟io檢測(cè);
開(kāi)啟io檢測(cè)可通過(guò)語(yǔ)句setstatisticsioon實(shí)現(xiàn)。
三、判斷所述插入或修改的操作是否產(chǎn)生邏輯讀,若是,則所述ddl操作類型會(huì)引起全表掃描,若否,所述ddl操作類型不會(huì)引起全表掃描。
其中,邏輯讀,也即logicreads。若邏輯讀的結(jié)果大于0,則存在全表更新,也即會(huì)引起全表掃描。反之,則不存在全表更新,也即不會(huì)引起全表掃描。
步驟103、將步驟102的結(jié)果作為所述數(shù)據(jù)庫(kù)的綜合權(quán)重值;
步驟104、查找所述映射列表中與所述綜合權(quán)重值對(duì)應(yīng)的所述數(shù)據(jù)庫(kù)的發(fā)布時(shí)間。
該發(fā)布時(shí)間可為具體的時(shí)刻,也可為一時(shí)間段。而針對(duì)不同的操作類型,還可對(duì)數(shù)據(jù)庫(kù)的發(fā)布時(shí)間不做限制,或者采取人工發(fā)布的方式。
此外,還可將數(shù)據(jù)庫(kù)發(fā)布的行為分類是否緊急,針對(duì)緊急的數(shù)據(jù)庫(kù)發(fā)布,則直接按照發(fā)布時(shí)間發(fā)布,并報(bào)告數(shù)據(jù)庫(kù)發(fā)布成功的消息;針對(duì)不緊急的數(shù)據(jù)庫(kù)發(fā)布,則可在發(fā)布時(shí)間內(nèi)在更加合理的時(shí)間段或時(shí)刻進(jìn)行發(fā)布。
比如,本實(shí)施例在實(shí)施時(shí)得到邏輯讀的結(jié)果為0,訪問(wèn)頻率為100次/秒,表熱度權(quán)重值為10。也即數(shù)據(jù)庫(kù)的發(fā)布操作不會(huì)引起全表更新,綜合權(quán)重值為10,發(fā)布時(shí)間為19:00。
可見(jiàn),本實(shí)施例根據(jù)數(shù)據(jù)庫(kù)接收到的操作類型,并對(duì)操作類型進(jìn)行分析,計(jì)算數(shù)據(jù)庫(kù)的權(quán)重,從而獲得數(shù)據(jù)庫(kù)的發(fā)布時(shí)間,能夠?qū)?shù)據(jù)庫(kù)的發(fā)布時(shí)間做出合理的預(yù)測(cè),降低了數(shù)據(jù)庫(kù)發(fā)布對(duì)生成環(huán)境的影響,提高了發(fā)布成功率,避免了在不當(dāng)時(shí)刻發(fā)布數(shù)據(jù)庫(kù)導(dǎo)致的數(shù)據(jù)庫(kù)長(zhǎng)時(shí)間的阻塞或數(shù)據(jù)庫(kù)產(chǎn)生的其它故障。
實(shí)施例2
本實(shí)施例提供一種數(shù)據(jù)庫(kù)發(fā)布時(shí)間的預(yù)測(cè)系統(tǒng),如圖2所示。所述系統(tǒng)包括一映射列表1,所述映射列表包括所述數(shù)據(jù)庫(kù)的多個(gè)綜合權(quán)重值,以及與每一綜合權(quán)重值一一對(duì)應(yīng)的所述數(shù)據(jù)庫(kù)的多個(gè)發(fā)布時(shí)間,所述系統(tǒng)還包括:
一操作類型判斷模塊2,用于判斷所述數(shù)據(jù)庫(kù)接收的ddl操作類型;
一全表掃描判斷模塊3,用于判斷所述ddl操作類型是否會(huì)引起全表掃描,若是,計(jì)算所述數(shù)據(jù)庫(kù)的表容量權(quán)重值與表熱度權(quán)重值的總和;若否,計(jì)算所述數(shù)據(jù)庫(kù)的表熱度權(quán)重值;
其中,所述表熱度權(quán)重值為所述數(shù)據(jù)庫(kù)在一時(shí)間段內(nèi)被訪問(wèn)的頻率所表征的權(quán)重值,所述表容量權(quán)重值為所述數(shù)據(jù)庫(kù)接收所述ddl操作類型的操作后的容量所表征的權(quán)重值;
和一查找模塊4,用于將所述全表掃描判斷模塊的執(zhí)行結(jié)果作為所述數(shù)據(jù)庫(kù)的綜合權(quán)重值,并在所述映射列表中查找與所述綜合權(quán)重值對(duì)應(yīng)的所述數(shù)據(jù)庫(kù)的發(fā)布時(shí)間。
其中,所述全表掃描判斷模塊3包括:
一數(shù)據(jù)表建立模塊31,用于在所述數(shù)據(jù)庫(kù)中建立一數(shù)據(jù)表;
一數(shù)據(jù)記錄更改模塊32,用于向所述數(shù)據(jù)表中插入或修改一條數(shù)據(jù)記錄,并開(kāi)啟io檢測(cè);
和一邏輯讀判斷模塊33,用于判斷所述插入或修改的操作是否產(chǎn)生邏輯讀,若是,則所述ddl操作類型會(huì)引起全表掃描,若否,所述ddl操作類型不會(huì)引起全表掃描。
所述頻率為:以一時(shí)間間隔計(jì)算user_scans,user_seeks,user_updates操作所述數(shù)據(jù)庫(kù)的次數(shù)之和作為所述數(shù)據(jù)庫(kù)被訪問(wèn)的頻率。
所述容量為:根據(jù)接收所述ddl操作類型的操作后的所述數(shù)據(jù)庫(kù)的行數(shù)和數(shù)據(jù)庫(kù)文件的大小獲得所述數(shù)據(jù)庫(kù)的容量。
所述映射列表還包括一熱度權(quán)重映射列表和一容量權(quán)重映射列表,所述熱度權(quán)重映射列表包括所述數(shù)據(jù)庫(kù)被訪問(wèn)的若干頻率和與每一頻率一一對(duì)應(yīng)的表熱度權(quán)重值,所述容量權(quán)重映射列表包括所述數(shù)據(jù)庫(kù)接收所述ddl操作類型的操作后的若干容量和與每一容量一一對(duì)應(yīng)的表容量權(quán)重值。
本實(shí)施例能夠達(dá)到與實(shí)施例1相同的技術(shù)效果。
雖然以上描述了本發(fā)明的具體實(shí)施方式,但是本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,這些僅是舉例說(shuō)明,本發(fā)明的保護(hù)范圍是由所附權(quán)利要求書(shū)限定的。本領(lǐng)域的技術(shù)人員在不背離本發(fā)明的原理和實(shí)質(zhì)的前提下,可以對(duì)這些實(shí)施方式做出多種變更或修改,但這些變更和修改均落入本發(fā)明的保護(hù)范圍。