第四章 Schema与数据类型优化

良好的物理逻辑设计是高性能的基石,应根据系统将要执行的查询语句来设计schema,有时反范式的设计可以加快某些类型的查询。

4.1 选择优化的数据类型

MySQL支持的数据类型非常多,选择正确的数据类型对于获得高性能至关重要。

一般有以下原则:

  • 更小通常比较好
  • 简单就好
  • 尽量避免NULL

4.1.1 整数类型

int(8\16\24\32\64)
第四章 Schema与数据类型优化

4.1.2 实数类型

第四章 Schema与数据类型优化

4.1.3 字符串类型

VARCHAR\CHAR 不同的存储引擎通常存储的方式不一样。
第四章 Schema与数据类型优化
第四章 Schema与数据类型优化
第四章 Schema与数据类型优化

4.1.4 日期和事件类型

第四章 Schema与数据类型优化
DATETIME和TIMESTAMP

4.1.5 位数据类型

第四章 Schema与数据类型优化

4.1.6 选择标识符

第四章 Schema与数据类型优化
MyISAM对字符串使用压缩索引。

4.1.7 特殊类型数据

IPV4通常用varchar(15)来存储,实际上就是32位无符号整数。

4.2 MySQL schema设计中的陷阱

太多的列、太多的关联、全能的枚举、变相的枚举

4.3 范式和反范式

第四章 Schema与数据类型优化

4.3.1 范式的优点和缺点

  • 范式更新操作比较快
  • 很少荣誉数据
  • 表更小
  • 更少需要DISTINCT或者GROUP BY语句。

4.3.2 反范式的有点和缺点

  • 索引快

4.3.3 混用反范式和范式

第四章 Schema与数据类型优化

4.4 缓存表和汇总表

第四章 Schema与数据类型优化

4.4.1 物化视图

第四章 Schema与数据类型优化

4.4.2 计数器表

第四章 Schema与数据类型优化

4.5 加快ALTER TABLE 操作的速度

4.5.1 只修改.frm文件

第四章 Schema与数据类型优化

4.5.2 快速创建MyISAM索引

第四章 Schema与数据类型优化

4.6 总结

后面的章节感觉已经看不下去了,很多基础知识都不太了解,没有深刻的体验,很难明白。

第四章 Schema与数据类型优化