目标:什么是分表,怎么分表
什么是分表
- 垂直分表:按照字段分表,一般分为冷和热
- 水平分表:按照行分表,常用范围分表、Hash切分
- 水平分表类似于分区表,但是Server层也进行了分表。(分区表)
什么是分库
- 垂直分库:将数据表分散在多个数据库或者多个节点中
- 水平分库:将所有表水平拆分,每个数据库结构相同
分库分表的优劣
优点
- 增加隔离性
- 提升容量与并发性能
- 水平分表类似于分区表,但Sever层也分了
缺点
- 部分失效可能性成倍增加(某个冷表数据库宕机,直接全部不能使用)
- 无法会用单点事务(没办法同时锁库锁表)
- 垂直切分后无法JOIN链接
- 范围查询更加困难
缺点的解决方式
- 特殊业务特殊处理
- 使用mysql分库分表中间件(Mycat、Dble等)
使用了分库分表反而更慢了怎么办?
- 例如使用时间分片:查询语句中尽可能的带有拆分的关键词(时间节点)
- 精简IN查询
- DISTINCT、GROUP BY、 ORDER BY 尽量一条sql只有一个
- 经常需要JOIN的表,按照相同的规则,放在同一个库里面
Comments NOTHING