上篇文章:分布式系统漫谈【拾壹】_分布式事务一致性:秒杀实现
本文来说说关于数据库分库分表。
分库分表
当系统数据库达到一定的量级,单数据库实例已经无法支撑的时候,我们就要考虑采用分库分表的策略了。如何理解这个名词?其实分库就是垂直拆分,按业务将数据拆分到不同数据库;分表就是水平拆分,将同一业务的数据拆到不同的表中(可能也位于不同数据库,但表结构是一样的)。
那么进行数据分库分表后会带来哪些影响呢?
垂直拆分的影响:
1.单机ACID打破了;
2.一些Join操作变得困难;
3.外键约束的场景受影响;
水平拆分的影响:
1.单机ACID打破了;
2.一些Join操作变得困难;
3.外键约束的场景受影响;
4.依赖单库的自增序列生成id受影响;
5.逻辑意义上的单表查询可能要跨库;
下面我们针对这些影响尝试进行整理解决。
多机Sequence问题
当进行了分表操作,同一个业务的数据被分散到多张表中,那么此时如何保证主键的唯一性?有如下几种策略:
1.UUID;
2.根据业务情