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;
优化之后,表占用的空间
这样就将表占用的空间给释放出来了。