分表设计的两种方式:逻辑分表、物理分表
① 逻辑分表不需要php考虑记录在哪个数据表存储的
该逻辑分表是mysql本身就支持的技术。
② 物理分表需要考虑记录在哪个表存储
1.逻辑分表设计
四种格式的逻辑分表
1 key分表
partition by key(条件字段) partitions 10;
2 hash分表
根据表达式/字段方式进行分表设计
partition by hash(表达式/字段) partitions 数量;
3 range分表
根据 “字段/表达式” 是否满足某个范围条件进行分表设计
partition by range(表达式/字段)(
partition 名称 values less than (常量),
... ...
)
4 list分表
根据 表达式/字段 的内容值是否在某个“列表”中进行分表设计。
partition by list(表达式/字段)(
partition 名称 values in (列表范围),
... ...
)
以上6月份数据写到summer分表
12月份数据写到winter分表
说明:数据与分表在业务逻辑上联系的比较紧密。
业务逻辑联系紧密的分表是:list和range
以上4种分表
hash、range、list分表与数据的业务有联系
① hash分表 与 数据联系不是十分紧密
② range、list分表与数据联系的比较紧密
key分表与数据联系较远
2.物理分表设计
自己手动创建多个数据表出来
php程序需要考虑分表算法:数据往哪个表写,从哪个表读
3. 垂直分表
水平分表:是把一个表的全部记录信息分别存储到不同的分表之中。
垂直分表:是把一个表的全部字段分别存储到不同的表里边。
有的时候,一个数据表设计好了,里边有许多字段,但是这些字段有的是经常使用的,有的是不常用的。在进行正常数据表操作的时候,不常用的字段就会占据一定的资源,对整体操作的性能造成一定的干扰、影响。
为了减少资源的开销、提升运行效率,就可以把不常用的字段给创建到一个专门的辅表中去。
同一个业务表的不同字段分别存储到不同数据表的过程就是“垂直分表”。