数据库-个人笔记
Contents
分库分表
- 垂直分表:将一个表按字段分成多表,每个表存储其中一部分字段
避免IO争抢并减少锁表的几率,充分发挥热门数据的操作效率
- 水平分表:在同一个数据库内,把同一个表的数据按一定规则拆到多个表中(对数据的拆分,不影响表结构)
避免IO争抢并减少锁表的几率,优化单一表数据量过大而产生的性能问题
- 垂直分库:按照业务将表进行分类,分布到不同的数据库上面,每个库可以放在不同的服务器上
解决业务层面的耦合,业务清晰
对不同业务的数据进行分级管理、维护、监控和扩展
提升IO、数据库连接和降低单机硬件资源的瓶颈
- 水平分库:把同一个表的数据按一定规则拆到不同的数据库中,每个库可以放在不同的服务器上
解决了单库大数据,高并发的性能瓶颈
提高了系统的稳定性和可用性
数据分片规则
- Hash取模分表
- 数值Range分表
- 一致性Hash算法
数据库设计的三大范式
- 第一范式(1NF):所有的域都应该是原子性的,即数据库表的每一列都是不可分割的原子数据项
- 第二范式(2NF):在1NF的基础上,非码属性必须完全依赖于候选码(在1NF基础上消除非主属性对主码的部分函数依赖)
- 第三范式(3NF):在2NF基础上,任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖)