本發(fā)明涉及數(shù)據(jù)處理的,尤其涉及一種數(shù)據(jù)庫索引更新方法、裝置、服務器及存儲介質(zhì)。
背景技術(shù):
1、數(shù)據(jù)庫作為存儲和處理業(yè)務數(shù)據(jù)的重要組成部分,隨著業(yè)務的不斷開展,數(shù)據(jù)庫中的數(shù)據(jù)量將會越來越多。若在初始業(yè)務數(shù)據(jù)量少時沒有建立數(shù)據(jù)庫索引,會導致后期業(yè)務數(shù)據(jù)量增大之后,對應的字段操作變慢,影響業(yè)務功能使用。建立數(shù)據(jù)庫索引后,隨著時間推移業(yè)務出現(xiàn)開發(fā)人員和業(yè)務需求的變化,數(shù)據(jù)庫的字段操作亦會產(chǎn)生變化,導致根據(jù)歷史字段操作而建立的部分數(shù)據(jù)庫索引變成無效索引,且部分業(yè)務功能下線之后,對應的數(shù)據(jù)庫索引可能將不再使用而變成無效索引,無效索引會導致索引浪費,影響數(shù)據(jù)庫表的操作性能。
技術(shù)實現(xiàn)思路
1、本發(fā)明提供一種數(shù)據(jù)庫索引更新方法、裝置、服務器及存儲介質(zhì),其主要目的在于提供一種根據(jù)數(shù)據(jù)庫的字段操作更新數(shù)據(jù)庫索引的方法,以解決無效索引影響數(shù)據(jù)庫表操作性能的技術(shù)問題。
2、為實現(xiàn)上述目的,本發(fā)明提供一種數(shù)據(jù)庫索引更新方法,所述方法包括:
3、獲取數(shù)據(jù)庫的sql語句集;
4、對所述sql語句集中的每個sql語句根據(jù)對應的sql語句類型進行分析,提取每個sql語句的數(shù)據(jù)庫表字段,統(tǒng)計所有提取的數(shù)據(jù)庫表字段得到字段使用信息,根據(jù)sql語句的語法結(jié)構(gòu)從所述sql語句集中的每個sql語句中提取數(shù)據(jù)庫表名,統(tǒng)計所有提取的數(shù)據(jù)庫表名得到表使用信息;
5、聚合所述字段使用信息和所述表使用信息得到匯總信息表,按照使用次數(shù)由高到低對所述匯總信息表中的數(shù)據(jù)庫表名和數(shù)據(jù)庫表字段進行排序,按照預設(shè)比例提取所述匯總信息表中排序靠前的數(shù)據(jù)庫表名和數(shù)據(jù)庫表字段得到待更新表名和待更新字段;
6、根據(jù)所述待更新表名和所述待更新字段,對數(shù)據(jù)庫索引進行更新。
7、可選地,所述獲取數(shù)據(jù)庫的sql語句集,包括:
8、獲取所述數(shù)據(jù)庫對應的sql語句記錄表;
9、從所述sql語句記錄表提取多個sql語句并生成所述sql語句集。
10、可選地,所述對所述sql語句集中的每個sql語句根據(jù)對應的sql語句類型進行分析,提取每個sql語句的數(shù)據(jù)庫表字段,包括:
11、將所述sql語句集中的sql語句按照sql語句類型進行分類;
12、根據(jù)sql語句類型對應的語句組成結(jié)構(gòu)分析各分類sql語句中的數(shù)據(jù)庫表字段所在位置,根據(jù)數(shù)據(jù)庫表字段所在位置提取每個sql語句中的數(shù)據(jù)庫表字段。
13、可選地,所述根據(jù)sql語句類型對應的語句組成結(jié)構(gòu)分析各分類sql語句中的數(shù)據(jù)庫表字段所在位置,根據(jù)數(shù)據(jù)庫表字段所在位置提取每個sql語句中的數(shù)據(jù)庫表字段,包括:
14、當所述sql語句分類為查詢語句時,判斷所述查詢語句是否為select*語句;
15、若否,根據(jù)查詢語句組成結(jié)構(gòu)提取所述查詢語句中select和from之間的字段得到所述查詢語句中的數(shù)據(jù)庫表字段;
16、若是,根據(jù)select*查詢語句的組成結(jié)構(gòu)獲取查詢表名,基于所述查詢表名從所述數(shù)據(jù)庫中獲取對應的數(shù)據(jù)表,提取所述數(shù)據(jù)表中的字段作為所述查詢語句中的數(shù)據(jù)庫表字段;
17、當所述sql語句分類為非查詢語句時,根據(jù)所述sql語句所屬的sql語句類型對應的語句組成結(jié)構(gòu)提取sql語句中的數(shù)據(jù)庫表字段。
18、可選地,所述統(tǒng)計所有提取的數(shù)據(jù)庫表字段得到字段使用信息,包括:
19、根據(jù)所述sql語句集中的每個sql語句的使用時間劃分多個歷史時段;
20、統(tǒng)計每個歷史時段中的sql語句提取的數(shù)據(jù)庫表字段的使用次數(shù);
21、對多個歷史時段中數(shù)據(jù)庫表字段的使用次數(shù)進行總計得到數(shù)據(jù)庫表字段的總使用次數(shù);
22、基于數(shù)據(jù)庫表字段的總使用次數(shù)和每個歷史時段中數(shù)據(jù)庫表字段的使用次數(shù)生成字段使用信息。
23、可選地,所述統(tǒng)計所有提取的數(shù)據(jù)庫表名得到表使用信息,包括:
24、根據(jù)所述sql語句集中的每個sql語句的使用時間劃分多個歷史時段;
25、統(tǒng)計每個歷史時段中的sql語句提取的數(shù)據(jù)庫表名的使用次數(shù);
26、對多個歷史時段中數(shù)據(jù)庫表名的使用次數(shù)進行總計得到數(shù)據(jù)庫表名的總使用次數(shù);
27、基于數(shù)據(jù)庫表名的總使用次數(shù)和每個歷史時段中數(shù)據(jù)庫表名的使用次數(shù)生成表使用信息。
28、可選地,所述根據(jù)所述待更新表名和所述待更新字段,對數(shù)據(jù)庫索引進行更新,包括:
29、將所述待更新表名和所述待更新字段與所述數(shù)據(jù)庫索引中的索引字段進行匹配;
30、刪除所述數(shù)據(jù)庫索引中未匹配到所述待更新表名和所述待更新字段的索引字段;
31、根據(jù)未匹配到所述索引字段的待更新表名和待更新字段生成新增索引字段并插入所述數(shù)據(jù)庫索引中。
32、為了解決上述問題,本發(fā)明還提供一種數(shù)據(jù)庫索引更新裝置,所述數(shù)據(jù)庫索引更新裝置包括:
33、語句獲取模塊,用于獲取數(shù)據(jù)庫的sql語句集;
34、分析統(tǒng)計模塊,用于對所述sql語句集中的每個sql語句根據(jù)對應的sql語句類型進行分析,提取每個sql語句的數(shù)據(jù)庫表字段,統(tǒng)計所有提取的數(shù)據(jù)庫表字段得到字段使用信息,根據(jù)sql語句的語法結(jié)構(gòu)從所述sql語句集中的每個sql語句中提取數(shù)據(jù)庫表名,統(tǒng)計所有提取的數(shù)據(jù)庫表名得到表使用信息;
35、匯總提取模塊,用于聚合所述字段使用信息和所述表使用信息得到匯總信息表,按照使用次數(shù)由高到低對所述匯總信息表中的數(shù)據(jù)庫表名和數(shù)據(jù)庫表字段進行排序,按照預設(shè)比例提取所述匯總信息表中排序靠前的數(shù)據(jù)庫表名和數(shù)據(jù)庫表字段得到待更新表名和待更新字段;
36、索引更新模塊,用于根據(jù)所述待更新表名和所述待更新字段,對數(shù)據(jù)庫索引進行更新。
37、為了解決上述問題,本發(fā)明還提供一種服務器,所述服務器包括:
38、至少一個處理器;以及,
39、與所述至少一個處理器通信連接的存儲器;其中,
40、所述存儲器存儲有可被所述至少一個處理器執(zhí)行的指令,所述指令被所述至少一個處理器執(zhí)行,以使所述至少一個處理器能夠執(zhí)行如上所述的數(shù)據(jù)庫索引更新方法。
41、為了解決上述問題,本發(fā)明還提供一種計算機可讀存儲介質(zhì),所述計算機可讀存儲介質(zhì)中存儲有計算機程序,所述計算機程序被處理器執(zhí)行時實現(xiàn)上述所述的數(shù)據(jù)庫索引更新方法。
42、本發(fā)明基于數(shù)據(jù)庫的sql語句集分析數(shù)據(jù)庫中表和字段的使用情況,根據(jù)分析結(jié)果統(tǒng)計數(shù)據(jù)庫中表和字段的使用次數(shù),根據(jù)數(shù)據(jù)庫中表和字段的使用次數(shù)提取數(shù)據(jù)庫中常用的表名和字段,根據(jù)數(shù)據(jù)庫中常用的表名和字段更新數(shù)據(jù)庫索引,從而實現(xiàn)數(shù)據(jù)庫索引的更新優(yōu)化,提升數(shù)據(jù)庫表的字段操作流暢性。
1.一種數(shù)據(jù)庫索引更新方法,其特征在于,所述方法包括:
2.如權(quán)利要求1所述的數(shù)據(jù)庫索引更新方法,其特征在于,所述獲取數(shù)據(jù)庫的sql語句集,包括:
3.如權(quán)利要求1所述的數(shù)據(jù)庫索引更新方法,其特征在于,所述對所述sql語句集中的每個sql語句根據(jù)對應的sql語句類型進行分析,提取每個sql語句的數(shù)據(jù)庫表字段,包括:
4.如權(quán)利要求3所述的數(shù)據(jù)庫索引更新方法,其特征在于,所述根據(jù)sql語句類型對應的語句組成結(jié)構(gòu)分析各分類sql語句中的數(shù)據(jù)庫表字段所在位置,根據(jù)數(shù)據(jù)庫表字段所在位置提取每個sql語句中的數(shù)據(jù)庫表字段,包括:
5.如權(quán)利要求1所述的數(shù)據(jù)庫索引更新方法,其特征在于,所述統(tǒng)計所有提取的數(shù)據(jù)庫表字段得到字段使用信息,包括:
6.如權(quán)利要求1所述的數(shù)據(jù)庫索引更新方法,其特征在于,所述統(tǒng)計所有提取的數(shù)據(jù)庫表名得到表使用信息,包括:
7.如權(quán)利要求1所述的數(shù)據(jù)庫索引更新方法,其特征在于,所述根據(jù)所述待更新表名和所述待更新字段,對數(shù)據(jù)庫索引進行更新,包括:
8.一種數(shù)據(jù)庫索引更新裝置,其特征在于,所述數(shù)據(jù)庫索引更新裝置包括:
9.一種服務器,其特征在于,所述服務器包括:
10.一種計算機可讀存儲介質(zhì),存儲有計算機程序,其特征在于,所述計算機程序被處理器執(zhí)行時實現(xiàn)如權(quán)利要求1至7中任意一項所述的數(shù)據(jù)庫索引更新方法。