資料庫索引創建方法和裝置與流程
2023-06-11 17:03:41 1

本發明涉及資料庫技術,特別是涉及一種資料庫索引創建方法和裝置。
背景技術:
目前的應用程式大部分都使用資料庫來存儲底層數據,在應用程式運行過程中經常需要做大量的數據查詢操作。當資料庫數據量較大時,大量的數據查詢操作就會存在查詢性能差的問題。例如,查詢特定數據結果需要時間過長,從而導致需要較長時間才能將數據結果返回客戶端,極端情況下,當在一定時間內無法執行完查詢時,會導致資料庫超時錯誤,客戶端無法獲取數據結果從而出現錯誤頁面。另外,查詢特定數據需要大量的伺服器i/o操作,因此也會給資料庫伺服器帶來較大的負載壓力。
在資料庫表創建之初,由於數據量比較小,此時不會出現查詢性能問題,但是,在程序運行一段時間之後,隨著資料庫數據量的增加,在進行大量的數據查詢時就會存在上述查詢性能差的問題。
由此可見,當應用程式在資料庫表中的數據大量增長以後,運行時會存在上述查詢性能問題。
技術實現要素:
有鑑於此,本發明的主要目的在於提供一種資料庫索引創建方法和裝置,可以提高應用程式的數據查詢性能。
為了達到上述目的,本發明提出的技術方案為:
一種資料庫索引創建方法,包括:
當發生數據查詢操作或預設的統計周期結束時,對數據查詢操作統計數據進行分析,確定出數據查詢操作次數滿足預設自動創建索引條件的查詢欄位組合;
對於每個沒有相應數據表索引的所述查詢欄位組合,根據該查詢欄位組合建立數據表索引。
一種資料庫索引創建裝置,包括:
數據分析模塊,用於在發生數據查詢操作或預設的統計周期結束時,對數據查詢 操作統計數據進行分析,確定出數據查詢操作次數滿足預設自動創建索引條件的查詢欄位組合;
索引創建模塊,用於對於每個沒有相應數據表索引的所述查詢欄位組合,根據該查詢欄位組合建立數據表索引。
綜上所述,本發明提出的資料庫索引創建方法和裝置,通過監測各種查詢欄位組合對應的查詢次數,來觸發利用查詢次數達到一定條件的查詢欄位組合,自動創建相應的數據表索引。這樣,對於操作頻繁的查詢可以直接利用所建立的索引獲取數據,從而可以大幅度提高應用程式的數據查詢性能。
附圖說明
圖1為本發明實施例一的方法流程示意圖;
圖2為本發明實施例一的裝置結構示意圖。
具體實施方式
為使本發明的目的、技術方案和優點更加清楚,下面將結合附圖及具體實施例對本發明作進一步地詳細描述。
本發明的核心思想是:對應用程式在運行過程中進行的數據查詢操作進行採集,對所採集的數據查詢操作數據進行分析,針對查詢次數高的查詢條件,自動地在數據表上創建相應的索引,以便提高數據查詢效率。
圖1為本發明實施例一的資料庫索引創建方法流程示意圖,如圖1所示,該實施例主要包括:
步驟101、當發生數據查詢操作或預設的統計周期結束時,對數據查詢操作統計數據進行分析,確定出數據查詢操作次數滿足預設自動創建索引條件的查詢欄位組合。
本步驟,用於根據數據查詢操作的統計數據,來確定出查詢次數達到一定條件的查詢欄位組合,以便基於此,建立相應的數據表索引,以提高數據查詢性能。
在實際應用中,本步驟所述分析的觸發可以是事件觸發也可以是周期觸發,即所述分析的執行時機可以為發生數據查詢操作時或者是每個統計周期結束時。下面分別就這兩種觸發情況下所述分析的具體實現進行舉例說明:
較佳地,當發生數據查詢操作時,可以採用下述方法對數據查詢操作統計數據進行分析:
步驟1011a、獲取所述數據查詢操作中的查詢欄位組合。
本步驟中,需要從數據查詢操作中解析出所包含的查詢欄位組合,具體地,即從查詢條件中獲取所涉及的查詢欄位以及查詢欄位之間的關聯關係,該數據查詢操作中的查詢欄位組合即通過這些查詢欄位以及之間的關聯關係(包括欄位的先後順序和關聯詞)進行限定。
步驟1012a、計算在所述統計周期內以所述查詢欄位組合為查詢條件的數據查詢操作次數。
本步驟中,需要計算每種查詢欄位組合在當前周期內對應的數據查詢操作次數,以便及時監測到對應的查詢次數較多的查詢欄位組合。
當對應的查詢次數較多時,說明以該查詢欄位組合為查詢條件的查詢需求多,因此,據此創建相應的數據表索引,可以有效提高查詢效率,改善大量數據查詢時的查詢性能。
步驟1013a、判斷所述數據查詢操作次數是否滿足所述自動創建索引條件。
較佳地,當所述統計周期結束時,對數據查詢操作統計數據進行分析包括:
步驟1011b、在所述統計周期結束時,獲取本周期中各數據查詢操作中的查詢欄位組合,對於每種查詢欄位組合,計算本周期中以該查詢欄位組合為查詢條件的數據查詢操作次數。
步驟1012b、判斷每個所述數據查詢操作次數是否滿足所述自動創建索引條件。
在實際應用中,本領域技術人員可以較為簡單的方式設置所述自動創建索引條件,即所述數據查詢操作次數大於預設閾值。
較佳地,為了提高對用於創建數據表索引的查詢欄位組合的選擇的準確性,可以將自動創建索引條件設置為如下形式:
所述數據查詢操作次數大於預設閾值並且所述查詢欄位組合在前n個所述統計周期內的數據查詢操作次數均大於所述閾值。
這裡,將綜合當前周期及此前的n個統計周期內的數據查詢操作次數,來進行選擇。當一種查詢欄位組合不具有普遍性而僅是一個短期時間內的頻繁行為時,為其創建索引進沒有意義的,因此,採用上述自動創建索引條件,可以避免將其選擇為用於創建數據表索引的查詢欄位組合。所述n可由本領域技術人員根據實際需要設置。
或者,將自動創建索引條件設置為:
所述數據查詢操作次數大於預設閾值並且所述查詢欄位組合在當前累積時間 段內的指定統計周期的數據查詢操作次數的均值大於所述閾值。
其中,所述指定統計周期為當前累積時間段內除周期tmin和周期tmax之外的其他統計周期,所述累積時間段由m個統計周期組成,所述周期tmin為當前累積時間段內所述查詢欄位組合的數據查詢操作次數最少的統計周期,所述周期tmax為當前累積時間段內所述查詢欄位組合的數據查詢操作次數最多的統計周期。具體地,所述m可由本領域技術人員根據實際需要設置。
在上述自動創建索引條件中,需要將當前一時間段內(即當前累積時間段內)數據查詢操作次數最少的統計周期和數據查詢操作次數最多的統計周期的數據去除,以確保所確定出的滿足條件的查詢欄位組合的高頻查詢特性具有普遍性,減少不必要的數據表索引的建立。
本發明所述統計周期的長度可由本領域技術人員根據實際需要設置,例如可以是若干小時、天、周或月等,在此不再贅述。
步驟102、對於每個沒有相應數據表索引的所述查詢欄位組合,根據該查詢欄位組合建立數據表索引。
本步驟中,對於步驟101中確定出的查詢欄位組合,如果此前沒有基於其創建相應的數據表索引,則會觸髮根據其創建相應的數據表索引。
圖2為與上述方法相對應的資料庫索引創建裝置結構示意圖,如圖2所示,該裝置包括:
數據分析模塊,用於在發生數據查詢操作或預設的統計周期結束時,對數據查詢操作統計數據進行分析,確定出數據查詢操作次數滿足預設自動創建索引條件的查詢欄位組合;
索引創建模塊,用於對於每個沒有相應數據表索引的所述查詢欄位組合,根據該查詢欄位組合建立數據表索引。
較佳地,所述數據分析模塊,用於當發生數據查詢操作時,獲取所述數據查詢操作中的查詢欄位組合;計算在當前預設統計周期內以所述查詢欄位組合為查詢條件的數據查詢操作次數;判斷所述數據查詢操作次數是否滿足所述自動創建索引條件。
較佳地,所述數據分析模塊,用於在所述統計周期結束時,獲取本周期中各數據查詢操作中的查詢欄位組合,對於每種查詢欄位組合,計算本周期中以該查詢欄位組合為查詢條件的數據查詢操作次數,並判斷每個所述數據查詢操作次數是否滿足所述自動創建索引條件。
較佳地,所述自動創建索引條件包括:
所述數據查詢操作次數大於預設閾值;或者,
所述數據查詢操作次數大於預設閾值並且所述查詢欄位組合在前n個所述統計周期內的數據查詢操作次數均大於所述閾值;或者,
所述數據查詢操作次數大於預設閾值並且所述查詢欄位組合在當前累積時間段內的指定統計周期的數據查詢操作次數的均值大於所述閾值;所述指定統計周期為當前累積時間段內除周期tmin和周期tmax之外的其他統計周期,其中,所述累積時間段由m個統計周期組成,所述周期tmin為當前累積時間段內所述查詢欄位組合的數據查詢操作次數最少的統計周期,所述周期tmax為當前累積時間段內所述查詢欄位組合的數據查詢操作次數最多的統計周期。
綜上所述,以上僅為本發明的較佳實施例而已,並非用於限定本發明的保護範圍。凡在本發明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的保護範圍之內。