Skip to the content.

..

分库分表

基本概念

分库分表的那些事

MySQL分库分表方案

切分类型

垂直(纵向)切分

垂直分库

vertical-db

垂直分表

优点

水平(横向)切分

将某张访问非常频繁的表,按照某个特定的规则(通常是某个字段进行hash),然后将数据分散到多个表,甚至是多个数据库中,这样每张表或者每张库都含有一部分数据。

horizontal-partition.png

优点

缺点

数据分片规则

中间件

分片方法

范围切分

优点
缺点

Hash划分

一般使用取模运算来进行切分,也就是Mod切分
优点
缺点

范围+Hash

查询划分

增加映射表

分区字段选择

评估原则

潜在问题

事务问题

当更新内容同时分布在不同库中,不可避免会带来跨库事务问题.

方案

跨节点Join问题

只要是进行切分,跨节点Join的问题是不可避免的。

方案

数据迁移,容量规划,扩容等问题

主键ID问题

跨分片的排序分页

方案

分库分表中间件

CLIENT模式

client

PROXY模式

proxy