目录:
- 数据类型的优化
- scheme设计
- 总结
数据类型的优化
关于数据类型的优化主要分为三个点:
1、选择更小的数据类型性能更好:小的数据类型占用磁盘、CPU和内存更少,处理时需要的CPU周期也更少。
2、简单的数据类型性能更好:比如整形、datetime相对于字符类型就更好,因为字符集的校对规则更为复杂。
如,用整形存储ip地址:
- select INET_ATON('192.168.110.113');
- select INET_NTOA(3232263793);
3、尽量避免NULL:对于MySQL来说,可包含NULL的列更难优化,因为可为NULL的列使得索引、索引统计和值比较都更为复杂。
scheme设计
1、太多的列不好:MySQL需要在服务器和存储引擎间通过行缓冲格式来拷贝数据,然后转换成各个列,过多的列会使转换的代价过高。
2、过多的关联查询不好。
3、不要滥用枚举类型:枚举虽好用,但在新增枚举的情况下都需要做ALTER TABLE操作,会锁表。
总结
1、尽量避免过度设计,例如会导致极其复杂查询的schema设计,或者有很多列的表设计。
2、使用小而简单的合适数据类型,除非真实数据模型中有确切的需要,否则应该尽可能地避免使用NULL值。
3、尽量使用相同的数据类型存储相似或相关的值,尤其是需要在关联条件中使用的列。
4、注意可变长字符串,其在临时表和排序时可能导致悲观的按最大长度分配内存。
5、尽量使用整形定义标识列。
6、避免使用MySQL已经废弃的特性,例如指定浮点数的精度等。
7、小心使用ENUM和SET,虽然他们用起来很方便,但是不要滥用,否则有可能变成陷阱。