垂直拆分

大数据量的表问题。
image.png
image.png
image.png
X轴,整体系统复制集群。水平扩展
Y轴,不同功能做不同机器,垂直扩展。
Z轴,数据拆分,根据不同的数据扩展。水平拆分。
image.png
垂直拆分
image.png
解放方法,把不同的业务功能,拆分成三个数据库或者业务,例如早期的tc (订单) ic(商品) nic(用户数据),降低了数据库规模,服务也单独部署。
垂直拆分方法:
image.png
image.png
主表拆分成子表,主要信息放在主表里,子表存关联信息。
image.png
步骤
1、梳理拆分范围,与影响范围。
2、调整过程可以使用适配adapter,隔离开外围的东西。
3、复制数据到新库。
4、修改系统配置。
问题一、先拆系统,再拆数据库。
问题二、如果系统很复杂,可以先拆分一小部分。
image.png
缺点:改动容易出故障,拆分到一定程度就无法拆分了。

水平拆分

image.png
按Id 取模拆分
image.png
按时间拆分。
按条件拆分。
image.png
原因:
image.png
image.png
缺点
1、管理复杂,很多表要做索引添加或DDL都复杂了。
image.png
shardingsphere 配置
server.xml
image.png
config-sharding.xml
image.png
image.png
actualDataNodes 规则就是{0..1}两个库 {0..1}两张表
tableStrategy,分表的规则,t_order_line。
key自己生成策略,snowflake。
image.png
分库的规则
image.png
使用用户id取模
image.png
最后模拟成一个mysql server
image.png
具体演化成4条sql
image.png
指定分库分表的条件,查询时性能最好。
数据分类:
image.png
image.png
最终分为4种数据