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