1、 数据库瓶颈
(1)IO瓶颈
第一种:磁盘读IO瓶颈,热点数据太多,数据库缓存放不下,每次查询时会产生大量的IO,降低查询速度 ->分库和垂直分表
第二种:网络IO瓶颈,请求的数据太多,网络带宽不够 ->分库
(2)CPU瓶颈
第一种:SQL问题,如SQL中包含join,group by,order by,非索引字段条件查询等,增加CPU运算的操作 -> SQL优化,建立合适的索引,在业务Service层进行业务计算。
第二种:单表数据量太大,查询时扫描的行太多,SQL效率低,CPU率先出现瓶颈 ->水平分表
2、 分库分表常用工具
sharding-sphere:前身是sharding-jdbc。
TDDL:Taobao Distribute Data Layer。
Mycat:中间件。
3、 垂直分表
垂直分表可不用考虑是否会有瓶颈问题,一般在系统的设计阶段都会进行。
4、 垂直分库
以表为依据,按照业务归属不同,将不同的表拆分到不同的库中,类似分服务。
5、 水平分表
以字段为依据,按照一定策略(hash、range等),将一个表中的数据拆分到多个表中。
6、 水平分库
以字段为依据,按照一定策略(hash、range等),将一个库中的数据拆分到多个库中。
给大家推荐一篇分库分表的文章,本博客内容来自于此:https://www.cnblogs.com/littlecharacter/p/9342129.html#_lab2_0_0