在去年的开发中,随着业务量的增加,从而出现并发、查询数据压力增加、单表增加字段困难等问题,为此实行了读写分离与分表分库,本菜鸡很荣幸得到参与,在大佬的带领下学到了许多知识,例如:处理上线新旧环境数据同步、如何优雅的过渡上线、如何将颗粒度划分最细避免问题产生等等,为此做出以下总结。
1、什么是分表分库?
顾名思义,即把存于一个库的数据分散到多个库中,把存于一个表的数据打散到多个表中。
2、什么情况下才需要分表分库?
阿里规约中推荐:

当一个数据库被创建之后,随着时间的推移和业务量的增加,数据库中的表以及表中的数据量都会越来越多,就有可能会出现两种弊端:
A : 数据库的存储资源是有限的,其负载能力也是有限的,数据的大量积累肯定会导致其处理数据的能力下降;
B : 数据量越多,那么对数据的增删改查等操作的开销也会越来越大;
注:有些人会反驳说,数据处理慢,可以考虑加索引.....
ep:你试试给一亿二千万数据的表加索引看看是否能优化?要是上线过程往中给表增加一个字段......
后果不敢想,为此对系统做了分表分表,下面介绍常见的分表分库方式
3、分表分库的划分方式
水平划分

垂直划分

同理:所谓的垂直划分,就是因为表中的字段过多,通过主键关联将不常用的字段划分到另外的表中,以达到提升性能的目的,垂直切分后,各表的特征是: a : 每个表的结构都不一样; b : 表之间通过主键关联在一起;
鄙人不才,在您面前献丑只愿与您结伴而行,文章若有不当之处,望大佬指点一二;如果我对您有帮助的话,还希望您能点赞分享,成长是一场苦涩的独自修行,我很需要您的陪伴与支持,这也是鄙人不断前行的根本动力,让我们在互相陪伴见证彼此生长的同时能够感染身边最亲近的人一同成长,鄙人在此叩谢!