分库分表的理论
1.分库分表
分库分表的思想:
设计阶段应按照一定的业务逻辑将记性垂直分库和垂直分表,在数据过大和并发访问过多时优先考虑缓存、读写分离、索引技术等,最后再考虑水平分表水平分库
1.1 分表
1.1.1 垂直分表
根据表中字段的使用频率进行分表操作,减少IO争抢,减少锁表
1.1.2 水平分表
在同一个数据库中按照一定规则拆分,例如按照id的奇偶数将一个表中的数据拆分成两个结构相同的表
主要解决单表数据过大
1.2 分库
1.2.1 垂直分库
按照业务逻辑进行分类,例如将相关性不强的模块拆分到不同的数据库中,数据库分布在不同的服务器上,专库专用
解决耦合,业务逻辑清晰,有利于高并发,方便不同业务管理
1.2.2 水平分库
将同一个表数据按照一定的规则拆分成两个表,并存放到不同的数据库中,例如按照id的奇偶数将一个大的数据表拆分成两个分布部署在两个服务器上,解决单库大数据,高并发,减少io冲突
2.公共表
在进行分库分表的过程中有可能会存在有点信息是大家共用的,所以需要将数据整体封装到一个表中,为了减少跨域操作,需要在每个数据库中都建立公共表,实际执行中也是需要同步进行插入和删除操作,保证公共表的数据同步,用到的工具是sharding