高性能MySQL 第四章

拥有回忆 提交于 2020-02-16 22:03:23

 

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

不管存储哪种类型的数据,下面几个简单的原则都有助于做出更好的选择。

1、尽量避免过度设计,例如会导致极其复杂查询的schema设计,或者有很多列的表设计(很多的意思是介于有点多和非常多之间)。

2、使用小而简单的合适数据类型,除非真实数据模型中有确切的需要,否则应该尽可能地避免使用NULL值。

3、尽量使用相同的数据类型存储相似或相关的值,尤其是要在关联条件中使用的列。注意可变长字符串,其在临时表和排序时可能导致悲观的按最大长度分配内存。

4、尽量使用整型定义标识列。

5、避免使用MySQL已经遗弃的特性,例如指定浮点数的精度,或者整数的显示宽度。

6、小心使用ENUM和SET。虽然它们用起来很方便,但是不要滥用,否则有时候会变成陷阱。最好避免使用BIT。

 

范式及其优缺点

在范式化的数据库中,每个事实数据会出现并且只出现一次

优点:

范式化的更新操作通常比反范式话要快

当数据较好的范式化时,就只有很少或者没有重复数据,所以只需要修改更少的数据

范式化的表通常更小,可以更好地放在内存里,所以执行操作会更快

很少有多余的数据意味着检索列表数据时更少需要 DISTINCT 或者 GROUP BY 语句

缺点:

表需要关联

 

反范式及其优缺点

在范式化的数据库中,信息是冗余的,可能会存储在多个地方

优点:

因为所有的数据都在一张表中,可以很好地避免关联

可以设计有效的索引

缺点:

表格内的冗余较多,删除数据时候会造成表有些有用的信息丢失

 

范式是好的,但是反范式(大多数情况下意味着重复数据)有时也是必需的,并且能带来好处。

 

最后,ALTER TABLE是让人痛苦的操作,因为在大部分情况下,它都会锁表并且重建整张表

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!