Mysql优化--设计篇(分表)

winterSky 2018-08-28 PM 1035℃ 0条

分表设计的两种方式:逻辑分表、物理分表
① 逻辑分表不需要php考虑记录在哪个数据表存储的

该逻辑分表是mysql本身就支持的技术。

② 物理分表需要考虑记录在哪个表存储

1.逻辑分表设计
941.png

四种格式的逻辑分表
1 key分表
partition by key(条件字段) partitions 10;
QQ截图20180828115101.png
2 hash分表
根据表达式/字段方式进行分表设计
partition by hash(表达式/字段) partitions 数量;
QQ截图20180828115138.png
3 range分表
根据 “字段/表达式” 是否满足某个范围条件进行分表设计
partition by range(表达式/字段)(

partition 名称  values  less than (常量),
... ...

)
QQ截图20180828115221.png
4 list分表
根据 表达式/字段 的内容值是否在某个“列表”中进行分表设计。
partition by list(表达式/字段)(

partition 名称  values  in (列表范围),
... ...

)
QQ截图20180828115312.png
QQ截图20180828115331.png

以上6月份数据写到summer分表

12月份数据写到winter分表
说明:数据与分表在业务逻辑上联系的比较紧密。
业务逻辑联系紧密的分表是:list和range

以上4种分表

hash、range、list分表与数据的业务有联系
    ① hash分表 与 数据联系不是十分紧密
    ② range、list分表与数据联系的比较紧密
key分表与数据联系较远

2.物理分表设计

自己手动创建多个数据表出来
php程序需要考虑分表算法:数据往哪个表写,从哪个表读

QQ截图20180828140137.png
QQ截图20180828140300.png
3. 垂直分表
水平分表:是把一个表的全部记录信息分别存储到不同的分表之中。
垂直分表:是把一个表的全部字段分别存储到不同的表里边。

有的时候,一个数据表设计好了,里边有许多字段,但是这些字段有的是经常使用的,有的是不常用的。在进行正常数据表操作的时候,不常用的字段就会占据一定的资源,对整体操作的性能造成一定的干扰、影响。
为了减少资源的开销、提升运行效率,就可以把不常用的字段给创建到一个专门的辅表中去。

同一个业务表的不同字段分别存储到不同数据表的过程就是“垂直分表”。

标签: none

非特殊说明,本博所有文章均为博主原创。

评论啦~