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