第四章 Schema与数据类型优化
良好的物理逻辑设计是高性能的基石,应根据系统将要执行的查询语句来设计schema,有时反范式的设计可以加快某些类型的查询。
4.1 选择优化的数据类型
MySQL支持的数据类型非常多,选择正确的数据类型对于获得高性能至关重要。
一般有以下原则:
- 更小通常比较好
- 简单就好
- 尽量避免NULL
4.1.1 整数类型
int(8\16\24\32\64)
4.1.2 实数类型
4.1.3 字符串类型
VARCHAR\CHAR 不同的存储引擎通常存储的方式不一样。
4.1.4 日期和事件类型
DATETIME和TIMESTAMP
4.1.5 位数据类型
4.1.6 选择标识符
MyISAM对字符串使用压缩索引。
4.1.7 特殊类型数据
IPV4通常用varchar(15)来存储,实际上就是32位无符号整数。
4.2 MySQL schema设计中的陷阱
太多的列、太多的关联、全能的枚举、变相的枚举
4.3 范式和反范式
4.3.1 范式的优点和缺点
- 范式更新操作比较快
- 很少荣誉数据
- 表更小
- 更少需要DISTINCT或者GROUP BY语句。
4.3.2 反范式的有点和缺点
- 索引快
4.3.3 混用反范式和范式
4.4 缓存表和汇总表
4.4.1 物化视图
4.4.2 计数器表
4.5 加快ALTER TABLE 操作的速度
4.5.1 只修改.frm文件
4.5.2 快速创建MyISAM索引
4.6 总结
后面的章节感觉已经看不下去了,很多基础知识都不太了解,没有深刻的体验,很难明白。