为什么要做数据类型优化?
更小的数据类型,意味着更少的磁盘占用、更小的内存消耗、更低的CPU资源使用。
MySQL在读取数据时,通常会根据数据类型分配固定大小的内存来保存数据。MySQL的数据页大小是16KB,而操作系统的IO数据页是4KB,更小的数据类型使每次IO读取更多行的数据,从而提升数据库访问性能。
如何进行数据类型优化?
在确保满足存储值的取值范围的前提下,符合当前的业务逻辑以及未来的扩展需求的同时,尽可能选择占用空间小的数据类型。
常用的优化方法:
尽量使用AUTO INCREMENT类型作为标识列。
整数数值可通过UNSIGEND属性设置存储值为无符号类型,可以使正数取值范围增加一倍。
存储IPv4地址时,使用32为无符号整数,而非字符串,可以使用INET_ATON和INET_NTOA两个函数进行字符串和数值的转换。
使用VARCHAR时,长度尽可能使用可预见的最小值。
固定长度的字符类型通常使用CHAR,VARCHAR需要一个额外字节来记录长度。
存储UUID值时,可以使用UNHEX将值转换为二进制数据存储到BINARY(16)中,提取时,通过HEX函数将值还原。
部分业务场景可以使用TIMESTAMP代替DATETIME,TIMESTAMP的时间范围是“1970-01-01 00:00:00”到“2038-01-09 03:14:07”,DATETIME的时间范围是“1000-01-01 00:00:00”到“9999-12-31 23:59:59”。
使用ENUM代替可枚举的字符串数值,在使用ENUM类型时,尽量按照自然语言顺序定义枚举值,排序时枚举类型的列也可按照自然语言排序。
此文由悦库网盘团队分享