1. 程式人生 > 其它 >mysql中update表之後,佔用空間會變小嗎?

mysql中update表之後,佔用空間會變小嗎?

背景

 

有如下一張表,佔用空間情況如下:

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_log 
SET 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;

 

優化之後,表佔用的空間

 

 

 

這樣就將表佔用的空間給釋放出來了。