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;

 

 

优化之后,表占用的空间

 

 

 

这样就将表占用的空间给释放出来了。

 

posted @ 2022-12-07 10:36  Zhai_David  阅读(346)  评论(0编辑  收藏  举报