數據庫自治服務DAS(Database Autonomy Service)為RDS MySQL提供空間碎片自動回收功能,是空間自動優化的一種方式,開啟該功能后,主實例會自動執行Optimize Table或Alter Table命令來回收表空間碎片,幫助您整理物理空間碎片。
前提條件
實例為如下版本,且已成功創建14天或以上:
RDS MySQL 8.0 高可用版、三節點企業版或集群版
RDS MySQL 5.7 高可用版、三節點企業版或集群版
RDS MySQL 5.6 高可用版
實例CPU規格不小于4核。
實例物理表必須是InnoDB引擎。
實例已開啟DAS企業版,詳情請參見DAS企業版。
背景信息
產生表空間碎片的常見原因:
記錄被Delete,且原空間無法復用。
記錄被Update(通常出現在變長字段中),原空間無法復用。
記錄插入導致頁分裂,頁的填充率降低。
優化前的檢查項
DAS在主實例上執行Optimize Table或Alter Table命令來回收表空間碎片。執行空間碎片自動回收操作前,為了減少對數據庫性能和空間的影響,DAS會自動對數據庫進行如下檢查。只有在通過檢測后,才會進行空間碎片自動回收。
如下檢查項如有任何一項未通過,對應表的空間碎片自動回收操作將立即停止。
實例剩余可用空間至少是需回收表的物理空間的3倍。
說明例如:需回收的表Table_1,該表的物理空間為30 GB,那么數據庫需要有90 GB的剩余可用空間。
表上無全文索引(FULLTEXT)。
如下檢查項如有任何一項未通過,會等待1至5分鐘再進行檢查。如果整個可維護時間段內都未通過檢查,DAS會在下個可維護時間段內繼續進行檢查,直至檢查通過,然后執行空間碎片自動回收。
實例上沒有正在執行的備份任務。
沒有正在執行的表結構變更操作。
查看實例的CPU使用率,預估空間碎片自動回收需花費的時間,確保前一天和上周同一時間段的CPU使用率低于70%,且執行前的CPU使用率低于80%。
說明例如:表的物理空間為90 GB,預計空間碎片回收需花費30分鐘,并且計劃12月10號凌晨3點執行,那么需確認如下信息:
2020-12-9 03:00至03:30的CPU使用率需小于70%。
2020-12-3 03:00至03:30的CPU使用率需小于70%。
2020-12-10 03:00的CPU使用率需小于80%。
需碎片回收的表上,沒有執行時間超過3秒的SQL。
無懸掛事務(持有鎖但是超過15秒未提交的事務)。
實例活躍會話數小于64。
如果未通過檢查,無法使用空間碎片自動回收功能,您可以手動執行Optimize Table命令回收表空間碎片,詳情請參見使用“optimize table”命令釋放MySQL實例的表空間。
操作步驟
訪問RDS實例列表,在上方選擇地域,然后單擊目標實例ID。
進入自治功能管理頁面。
在左側導航欄中,選擇
。在自治中心頁,單擊自治功能開關。在左側導航欄中,選擇
。在性能趨勢頁,單擊自治功能開關。
在 頁簽中,打開自治功能開關,并在優化和限流頁簽勾選空間碎片自動回收。
開啟空間碎片自動回收后,設置以下參數,單擊確定。
重要當數據庫實例空間狀態達到設置的閾值時,DAS將在數據庫實例的可維護時間段內進行空間碎片自動回收。
參數
說明
表空間大于
觸發空間碎片自動回收單個物理表的最小空間,取值范圍:5 GB~100 GB,默認為10 GB。
單表空間過大會導致回收時間長,請根據實際業務情況選擇合適的數值。
說明如果數據庫實例上所有的表空間均小于5 GB,或者所有的表空間均大于100 GB,那么系統不會進行空間碎片回收。
碎片率大于
觸發空間碎片自動回收單個物理表的碎片率,取值范圍:10%~99%,默認為20%。
碎片率過大會降低空間優化頻率,請根據實際業務情況選擇合適的數值。
說明如果數據庫實例上所有表的碎片率均低于10%,那么系統不會進行空間碎片回收。
說明例如表空間取值為5 GB,碎片率取值為10%時,所有表空間大于等于5 GB,小于等于100 GB,且碎片率大于等于10%的表,都會觸發空間碎片自動回收。
(可選)配置告警模板進行告警訂閱,以便及時了解數據庫實例的空間碎片自動回收情況。
系統會推薦告警模板并添加對應自治事件的告警規則,您可以依照系統提示進行配置。
選擇需要告警通知的告警聯系組。
單擊添加聯系人,添加新的告警聯系人。
單擊新增聯系組,添加新的告警聯系組。
單擊目標聯系人后的修改或移除,修改或刪除已有聯系人的信息。
詳細操作請參見管理告警聯系人。
確認關聯資源。
單擊提交配置,并在彈出的對話框中確認告警配置。