数据库类型空间效率探索(五)- decimal/float/double/varchar

时间:2022-09-02 08:43:34

以下测试为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/float/double/varchar

Decimal

 为表添加decimal列

ALTER TABLE `userinfo`
ADD COLUMN `molecularWeight` decimal(10,6) UNSIGNED NOT NULL DEFAULT 0 AFTER `integral`;

数据库类型空间效率探索(五)- decimal/float/double/varchar

 查看表数据量(data_size)

数据库类型空间效率探索(五)- decimal/float/double/varchar

 为decimal列赋值

数据库类型空间效率探索(五)- decimal/float/double/varchar

 查看表数据量(data_size)

数据库类型空间效率探索(五)- decimal/float/double/varchar

结论:

在13万条数据的表中,添加一decimal(10,6)类型的列,会多占用5M左右空间。继续插入数据,表占用空间不变。

Float

数据库类型空间效率探索(五)- decimal/float/double/varchar

数据库类型空间效率探索(五)- decimal/float/double/varchar

数据库类型空间效率探索(五)- decimal/float/double/varchar

Double

数据库类型空间效率探索(五)- decimal/float/double/varchar

数据库类型空间效率探索(五)- decimal/float/double/varchar

数据库类型空间效率探索(五)- decimal/float/double/varchar

数据库类型空间效率探索(五)- decimal/float/double/varchar

Varchar

数据库类型空间效率探索(五)- decimal/float/double/varchar

数据库类型空间效率探索(五)- decimal/float/double/varchar

数据库类型空间效率探索(五)- decimal/float/double/varchar

数据库类型空间效率探索(五)- decimal/float/double/varchar

备注:

数据库类型空间效率探索(五)- decimal/float/double/varchar