Shardingsphere01——分库分表
分库分表
背景:数据库数据量不可控、随着时间和业务发展,造成表里面数据越来越多,如果再去CRUD操作的时候,会造成性能问题。为了解决数据量过大而造成数据库性能降低的问题,采用分库分表的方案。
商品DB -> 商品表1 、 商品表2 、
商家DB -> 商家表1 、 商家表2 、
分库分表的方式
分科分表有两种方式:垂直拆分和水平拆分
- 垂直拆分:垂直分表和垂直分库
- 水平拆分:水平拆表和水平拆库
垂直拆分
- 垂直分表:操作数据库中某张表,把这张表中一部分字段数据存到一张新表里面,再把这张表另一部分字段数据存到另外一张表里面。比如
课程表
分为课程描述表
和课程基本信息表
。 - 垂直分库:把单一数据库按照业务进行划分,专库专表(比如课程数据库和订单数据库)
水平拆分
- 水平分表:课程信息表1,课程信息表2,课程信息表n。按照一定的规则,在不同表中存放一部分数据。
- 水平分库:根据id进行判断,如果id是偶数,就把新增到A库,如果id是奇数,就新增到B库。从而减少单库中的数据量。
小结
- 应用:
- 在数据库设计时考虑垂直分库和垂直分表
- 随着数据库数据量增加,不要马上考虑做水平切分,首先要考虑加缓存、做读写分离、使用索引等方式。如果这些方式不能根本解决问题了,再考虑做水平分库分表。
- 分库分表问题:
- 跨节点连接查询问题。不同数据库不同服务器=>分布式查询问题,包括分页、排序等问题。
- 多数据源管理问题。