本發明涉及數據庫管理領域,尤指一種數據庫中存儲空間的管理方法和裝置。
背景技術:
數據庫最重要的組成部分是數據表。根據數據庫管理內容,數據表可以有多個,不同之間的數據表之間可以關聯使用。數據庫中可以有關鍵字、主鍵、索引等來維護管理的內容。
當針對一個表的刪除操作次數很多時,表以及表相關的索引占用的空間就會產生不連續性,會產生大量碎片化的空間。那么在產生大量碎片化的空間后,再針對此表的增刪改查操作效率都會變低。
技術實現要素:
為了解決上述技術問題,本發明提供了一種數據庫中存儲空間的管理方法和裝置,通過對存儲空間的管理,提高數據表的響應速度。
為了達到本發明目的,本發明提供一種數據庫中存儲空間的管理方法,包括:
在對數據庫中進行數據表中的表項進行刪除操作后,記錄碎片數據在存儲空間對應的數據塊信息,其中所述碎片數據是在每次刪除操作后所述數據表所產生的;計算所述數據表在存儲空間中碎片占用的數據塊總和;根據所述碎片占用的數據塊總和,判斷是否執行存儲空間的釋放;如果執行存儲空間的釋放的操作,則釋放所述數據表的碎片在存儲空間中占用的數據塊。
其中,所述計算所述數據表在存儲空間中碎片占用的數據塊總和,包括:
在預先設置的時間內,當對所述數據表的刪除操作次數達到預先設置的次數閾值時,計算所述數據表在存儲空間中碎片占用的數據塊總和。
其中,所述根據所述碎片占用的數據塊總和,判斷是否執行存儲空間的釋放,包括:
獲取所述數據表在存儲空間占用的數據塊總和;根據所述碎片占用的數據塊總和以及所述碎片占用的數據塊總和,判斷是否執行存儲空間的釋放。
其中,所述釋放所述數據表的碎片在存儲空間中占用的數據塊,包括:
獲取所述碎片占用的數據塊中未被占用的數據塊;對所述未被占用的數據塊執行存儲空間釋放的操作。
其中,,所述釋放所述數據表的碎片在存儲空間中占用的數據塊之后,還包括:
根據釋放的數據塊的數量,對所述數據表在存儲空間中碎片占用的數據塊總和進行更新。
一種數據庫中存儲空間的管理裝置,包括:
記錄模塊,用于在對數據庫中進行數據表中的表項進行刪除操作后,記錄碎片數據在存儲空間對應的數據塊信息,其中所述碎片數據是在每次刪除操作后所述數據表所產生的;計算模塊,用于計算所述數據表在存儲空間中碎片占用的數據塊總和;判斷模塊,用于根據所述碎片占用的數據塊總和,判斷是否執行存儲空間的釋放;釋放模塊,用于如果執行存儲空間的釋放的操作,則釋放所述數據表的碎片在存儲空間中占用的數據塊。
其中,所述計算模塊具體用于:
在預先設置的時間內,當對所述數據表的刪除操作次數達到預先設置的次數閾值時,計算所述數據表在存儲空間中碎片占用的數據塊總和。
其中,所述判斷模塊包括:
第一獲取單元,用于獲取所述數據表在存儲空間占用的數據塊總和;
判斷單元,用于根據所述碎片占用的數據塊總和以及所述碎片占用的數據塊總和,判斷是否執行存儲空間的釋放。
其中,所述釋放模塊包括:
第二獲取單元,用于獲取所述碎片占用的數據塊中未被占用的數據塊;
釋放單元,用于對所述未被占用的數據塊執行存儲空間釋放的操作。
其中,,所述裝置還包括:
在釋放所述數據表的碎片在存儲空間中占用的數據塊后,根據釋放的數據塊的數量,對所述數據表在存儲空間中碎片占用的數據塊總和進行更新。
與現有技術相比,本發明提供的實施例,通過對數據表刪除操作產生的碎片占用的數據塊進行統計,得到碎片占用的數據塊總和,再利用碎片占用的數據塊總和,來計算是否對該數據表的碎片進行整理,從而優化數據表的存儲空間,減少碎片化數據的占有比例,提高數據表的響應速度。
本發明的其它特征和優點將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實施本發明而了解。本發明的目的和其他優點可通過在說明書、權利要求書以及附圖中所特別指出的結構來實現和獲得。
附圖說明
附圖用來提供對本發明技術方案的進一步理解,并且構成說明書的一部分,與本申請的實施例一起用于解釋本發明的技術方案,并不構成對本發明技術方案的限制。
圖1為本發明提供的數據庫中存儲空間的管理方法的流程圖;
圖2為本發明提供的數據庫中存儲空間的管理方法應用實例的流程圖;
圖3為本發明提供的數據庫中存儲空間的管理裝置的結構圖。
具體實施方式
為使本發明的目的、技術方案和優點更加清楚明白,下文中將結合附圖對本發明的實施例進行詳細說明。需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互任意組合。
在附圖的流程圖示出的步驟可以在諸如一組計算機可執行指令的計算機系統中執行。并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執行所示出或描述的步驟。
圖1為本發明提供的數據庫中存儲空間的管理方法的流程圖。圖1所示方法包括:
步驟101、在對數據庫中進行數據表中的表項進行刪除操作后,記錄碎片數據在存儲空間對應的數據塊信息,其中所述碎片數據是在每次刪除操作后所述數據表所產生的;
步驟102、計算所述數據表在存儲空間中碎片占用的數據塊總和;
步驟103、根據所述碎片占用的數據塊總和,判斷是否執行存儲空間的釋放;
步驟104、如果執行存儲空間的釋放的操作,則釋放所述數據表的碎片在存儲空間中占用的數據塊。
本發明提供的方法實施例,通過對數據表刪除操作產生的碎片占用的數據塊進行統計,得到碎片占用的數據塊總和,再利用碎片占用的數據塊總和,來計算是否對該數據表的碎片進行整理,從而優化數據表的存儲空間,減少碎片化數據的占有比例,提高數據表的響應速度。
下面對本發明提供的方法實施例作進一步說明:
當針對一個數據表的刪除操作很多時,表以及表相關的索引占用的空間就會產生不連續性,會產生大量碎片化的空間,從而造成對此表的增刪改查操作效率都會變低,因此,當檢測到一段時間內刪除操作次數過多時,就需要觸發碎片整理的操作。
在本發明實施例中,在預先設置的時間內,當對所述數據表的刪除操作次數達到預先設置的次數閾值時,計算所述數據表在存儲空間中碎片占用的數據塊總和。
由于數據表的響應速度取決于該數據表所占用的空間是否連續,因此,在進行比對時,因此是將數據表的碎片占用的空間與該數據表占用的所有數據塊進行比對,而不是跟整個數據庫進行比對,以保證判斷的準確性。
因此,本發明實施例中判斷是否執行存儲空間的釋放采用的方式為:
獲取所述數據表在存儲空間占用的數據塊總和;
根據所述碎片占用的數據塊總和以及所述碎片占用的數據塊總和,判斷是否執行存儲空間的釋放操作。
其中,可以二者的比例達到某個數值時,認為可以執行存儲空間的釋放操作;如果二者的比例未達到該數值,則認為不執行存儲空間的釋放操作。
在數據庫中,存儲某一數據表的碎片的數據塊可能還存儲有其他有用的數據,如響應外部請求的數據,因此,對于這部分存儲碎片和有用數據的數據塊不能執行存儲空間釋放的操作,否則會影響正常的數據訪問,因此,本發明在釋放所述數據表的碎片在存儲空間中占用的數據塊采用如下方式:
獲取所述碎片占用的數據塊中未被占用的數據塊;
對所述未被占用的數據塊執行存儲空間釋放的操作。
在本發明實施例中,只對未被占用的數據塊執行存儲空間釋放的操作,將只存儲有碎片的數據塊進行釋放,在保證數據正常響應的前提下,釋放了數據表對應的存儲空間。
當然,在釋放所述數據表的碎片在存儲空間中占用的數據塊之后,該數據表中碎片占用的數據塊發生了變化,因此需要根據釋放的數據塊的數量,對所述數據表在存儲空間中碎片占用的數據塊總和進行更新,以保證下一次進行碎片整理時碎片占用的數據塊的起始計數單位的正確性。
下面對本發明提供的方法實施例作進一步說明:
圖2為本發明提供的數據庫中存儲空間的管理方法應用實例的流程圖,圖2所示方法包括
步驟001:根據給定的表名稱,去查詢該表的統計信息是否為最新的統計信息;
如果統計信息為最新的,可跳過步驟002,直接執行步驟003;如果統計信息不是最新的,則執行步驟002來收集統計信息;
步驟003:計算表碎片是否超過閥值;
其中,碎片率=碎片占用數據塊/表占用總數據塊*100/100,可設置此閥值20-25%,具體可根據業務表的具體情況設置;
如果超過閥值則執行步驟004,如果沒有超過閥值則跳過步驟004;
步驟004:整理碎片。
此種方式可以在線整理,即在對表做碎片整理時該表仍然可以進行增刪改查等操作,不影響業務。
其中,還可以通過shell腳本去自動執行,并把shell腳本做成定時任務,可以按需執行,比如根據該數據表的訪問頻率,為每個數據表設置執行頻率,如每天,每周,每月等。
本發明提供的應用實例,設置碎片閥值,自動的去發現數據庫表的碎片,并能在達到閥值后自動的去整理碎片,以達到表優化的目的。
圖3為本發明提供的數據庫中存儲空間的管理裝置的結構圖。圖3所示裝置包括:
記錄模塊301,用于在對數據庫中進行數據表中的表項進行刪除操作后,記錄碎片數據在存儲空間對應的數據塊信息,其中所述碎片數據是在每次刪除操作后所述數據表所產生的;
計算模塊302,用于計算所述數據表在存儲空間中碎片占用的數據塊總和;
判斷模塊303,用于根據所述碎片占用的數據塊總和,判斷是否執行存儲空間的釋放;
釋放模塊304,用于如果執行存儲空間的釋放的操作,則釋放所述數據表的碎片在存儲空間中占用的數據塊。
其中,所述計算模塊302具體用于:
在預先設置的時間內,當對所述數據表的刪除操作次數達到預先設置的次數閾值時,計算所述數據表在存儲空間中碎片占用的數據塊總和。
其中,所述判斷模塊303包括:
第一獲取單元,用于獲取所述數據表在存儲空間占用的數據塊總和;
判斷單元,用于根據所述碎片占用的數據塊總和以及所述碎片占用的數據塊總和,判斷是否執行存儲空間的釋放。
其中,所述釋放模塊304包括:
第二獲取單元,用于獲取所述碎片占用的數據塊中未被占用的數據塊;
釋放單元,用于對所述未被占用的數據塊執行存儲空間釋放的操作。
可選的,所述裝置還包括:
在釋放所述數據表的碎片在存儲空間中占用的數據塊后,根據釋放的數據塊的數量,對所述數據表在存儲空間中碎片占用的數據塊總和進行更新。
本發明提供的裝置實施例,通過對數據表刪除操作產生的碎片占用的數據塊進行統計,得到碎片占用的數據塊總和,再利用碎片占用的數據塊總和,來計算是否對該數據表的碎片進行整理,從而優化數據表的存儲空間,減少碎片化數據的占有比例,提高數據表的響應速度。
雖然本發明所揭露的實施方式如上,但所述的內容僅為便于理解本發明而采用的實施方式,并非用以限定本發明。任何本發明所屬領域內的技術人員,在不脫離本發明所揭露的精神和范圍的前提下,可以在實施的形式及細節上進行任何的修改與變化,但本發明的專利保護范圍,仍須以所附的權利要求書所界定的范圍為準。