全部產品
Search
文件中心

:回收表片段空間

更新時間:Jun 30, 2024

當在MySQL資料庫中頻繁地執行INSERT、UPDATE和DELETE語句,會導致資料在磁碟上不再連續儲存,形成片段化的儲存空間(即片段空間)。片段空間的存在會導致資料庫效能下降。常規的回收資料表空間片段操作(例如Optimize Table回收資料表空間)可能會鎖表並影響業務運行。本文為您介紹在DMS中提交無鎖結構變更工單來自動整理並回收片段空間,有效避免因資料庫變更而導致的鎖表阻塞業務問題,提高資料庫效能和效率,並降低儲存成本。

前提條件

注意事項

回收大容量表的片段空間時,請確保執行個體剩餘的儲存空間大小至少為目標表大小的2~3倍,並在變更過程中密切關注執行個體剩餘空間情況。

重要
  • 回收大容量表的片段空間時,可能需要臨時儲存資料的副本或其他,這可能會導致額外的空間需求。如果空間不足,可能會導致回收片段空間失敗或者執行個體被鎖定。

  • DMS是通過無鎖結構變更對該表進行一次DDL變更來實現回收表片段空間。所有DDL變更均存在失敗的可能性,無法保證100%成功,請您知悉。

查看錶片段空間大小

您可在DMS的SQL Console中輸入查看錶片段空間的SQL語句:SHOW TABLE STATUS LIKE 'table_name';。在SQL Console查詢的具體操作,請參見SQL視窗介紹

查詢結果樣本圖如下,Data_free表示表中的片段空間(單位:位元組)。

image.png

回收表片段空間

  1. 登入Data Management 5.0
  2. 在頂部功能表列中,選擇資料庫開發 > 資料變更 > 無鎖變更

    說明

    若您使用的是極簡模式的控制台,請單擊左上方的2022-10-21_15-25-22..png,選擇全部功能 > 資料庫開發 > 資料變更 > 無鎖變更

  3. 配置無鎖結構變更工單。具體操作,請參見通過無鎖變更工單實現無鎖結構變更

    執行個體在開啟無鎖結構變更後,執行無鎖結構變更工單都會自動回收表片段空間。但為確保系統更穩定地回收碎資料表空間,並減少對依賴該表或與該表有關聯關係的其他表的影響。建議您在工單中使用如下任意SQL來整理、回收片段空間:

    • ALTER TABLE table_name COMMENT '修改後的表的注釋';

    • ALTER TABLE table_name ENGINE=InnoDB;

    • OPTIMIZE TABLE table_name;

    • ALTER TABLE table_name MODIFY COLUMN field_name INT COMMENT '修改後的欄位注釋';