以下测试为userinfo增加一列,列类型分别为decimal、float、double、varchar。由于innodb不支持optimize,所以每次测试,都会删除表test.userinfo,重新拷贝swanfly.userinfo->test.userinfo,原始userinfo表data_size为28.562MB,data_free为4.000MB。
具体测试流程如下:
查看表数据量(data_size)
select concat(truncate(sum(data_length)/1024/1024,3),'MB') as data_size,
concat(truncate(sum(max_data_length)/1024/1024,3),'MB') as max_data_length,
concat(truncate(sum(data_free)/1024/1024,3),'MB') as data_free,
concat(truncate(sum(index_length)/1024/1024,3),'MB') as index_length
from information_schema.tables where table_name='userinfo';
Decimal
为表添加decimal列
ALTER TABLE `userinfo`
ADD COLUMN `molecularWeight` decimal(10,6) UNSIGNED NOT NULL DEFAULT 0 AFTER `integral`;
查看表数据量(data_size)
为decimal列赋值
查看表数据量(data_size)
结论:
在13万条数据的表中,添加一decimal(10,6)类型的列,会多占用5M左右空间。继续插入数据,表占用空间不变。
Float
Double
Varchar
备注: