Contents

数据库-个人笔记

分库分表

知乎 零声Github整理库

  • 垂直分表:将一个表按字段分成多表,每个表存储其中一部分字段

避免IO争抢并减少锁表的几率,充分发挥热门数据的操作效率

  • 水平分表:在同一个数据库内,把同一个表的数据按一定规则拆到多个表中(对数据的拆分,不影响表结构)

避免IO争抢并减少锁表的几率,优化单一表数据量过大而产生的性能问题

  • 垂直分库:按照业务将表进行分类,分布到不同的数据库上面,每个库可以放在不同的服务器上

解决业务层面的耦合,业务清晰

对不同业务的数据进行分级管理、维护、监控和扩展

提升IO、数据库连接和降低单机硬件资源的瓶颈

  • 水平分库:把同一个表的数据按一定规则拆到不同的数据库中,每个库可以放在不同的服务器上

解决了单库大数据,高并发的性能瓶颈

提高了系统的稳定性和可用性

CSDN 勤天

数据分片规则

  • Hash取模分表
  • 数值Range分表
  • 一致性Hash算法

数据库设计的三大范式

  • 第一范式(1NF):所有的域都应该是原子性的,即数据库表的每一列都是不可分割的原子数据项
  • 第二范式(2NF):在1NF的基础上,非码属性必须完全依赖于候选码(在1NF基础上消除非主属性对主码的部分函数依赖)
  • 第三范式(3NF):在2NF基础上,任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖)
 |