mysql中update表之後,佔用空間會變小嗎?
阿新 • • 發佈:2022-12-07
背景
有如下一張表,佔用空間情況如下:
SELECT TABLE_NAME, ( DATA_LENGTH + INDEX_LENGTH )/ 1048576 AS SIZE_IN_Mb, TABLE_ROWS FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'xx' AND TABLE_NAME = 'assembly_line_details_log'
佔用83M的空間
更新欄位
將某個大欄位,更新為NULL,用來減少空間大小
UPDATE xx.assembly_line_details_logSET details_log = NULL;
更新之後,檢視空間佔用情況
SELECT TABLE_NAME, ( DATA_LENGTH + INDEX_LENGTH )/ 1048576 AS SIZE_IN_Mb, TABLE_ROWS FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'xx' AND TABLE_NAME = 'assembly_line_details_log'
發現沒有變化。
為什麼呢?
因為只是將欄位的內容清除了,並沒有整理內容在資料檔案的位置,佔用的空間並沒有減少。
那麼,如何來重新整理資料檔案,釋放空間呢?
釋放空間
方法就是,優化表
OPTIMIZE TABLE xx.assembly_line_details_log;
優化之後,表佔用的空間
這樣就將表佔用的空間給釋放出來了。