在数据库 Schema 设计理论方面,一直有一个被大家奉为“葵花宝典”的规范化范式理论。通过范式 理论所设计的数据库 Schema 逻辑清晰,关系明确,扩展方便,就连存储的数据量也做到了尽可能的少, 尤其是当范式级别较高的时候,几乎找不到任何的冗余数据。在很多人眼里,数据库 Schema 满足的范式 级别越高则该 Schema 设计的越优秀。 但是,很多人忽略了一点,那就是产生该理论的时期和出发点。关系性数据库的规范化范式理论诞 生于上世纪七十年代初,最根本的目的是让数据库中尽量的去除数据的冗余,保持数据的一致,使数据 的修改简单。 实际上,尽量去除数据的冗余不仅仅是为了让我们查询相同的数据量的时候能够多返回几条记录, 还有一个很重要的原因就是在当时的那个年代,数据的存储空间是及其昂贵的,而且存储设备的容量也 都非常的小,这一点在硬件存储设备发展如此迅速的如今,空间大小已经不再是太大的问题了。 而范式理论中的数据一致性和使数据修改简单保证主要是依靠添在数据库中添加各种约束来保证, 而各种约束对于数据库来说本身其实就是一个非常消耗资源的事情。 所以,对于基于性能的数据库 Schema 设计,我们并不能完全以规范化范式理论来作为唯一的指导。 在设计过程中,应该从实际需求出发,以性能提升为根本目标来展开设计工作,很多时候为了尽可能提 高性能,我们必须做反范式设计。
1、适度冗余 - 让 Query 尽两减少 Join
2、大字段垂直分拆 - summary 表优化
3、大表水平分拆 - 基于类型的分拆优化
4、统计表 - 准实时优化
5、合理的数据类型
6、合理的命名规则