什么时候进行分库分表?

 作者简介:大家好,我是码炫码哥,前中兴通讯、美团架构师,现任某互联网公司CTO,兼职码炫课堂主讲源码系列专题


代表作:《jdk源码&多线程&高并发》,《深入tomcat源码解析》,《深入netty源码解析》,《深入dubbo源码解析》,《深入springboot源码解析》,《深入spring源码解析》,《深入redis源码解析》等


联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬。码炫课堂的个人空间-码炫码哥个人主页-面试,源码等

回答

衡量是否要分库分表的关键指标是数据量是数据量和业务模块。

什么时候分库?

分库主要是为了解决单个数据库实例存储容量和并发处理能力的瓶颈问题。当系统的并发量过大时,数据库就会成为我们系统的瓶颈,主要是因为数据库的连接是有限的,当我们数据库的读写请求过高,导致数据库的连接数不足时,这个时候我们就需要考虑分库了。通过增加数据库实例的方式来提供更多的数据库连接,从而提高系统的性能。

同时,随着我们业务系统的逐渐庞大,模块之间的耦合度越来越高,越来越复杂的时候,我们可以通过分库的方式将不同的业务模块分散到不同的数据库中,实现业务解耦。

什么时候分表?

分表主要是为了解决单张表数据量过大导致的查询和写入性能问题。

当我们某张表的数据量过大时,即使系统的并发度不高,也会因为数据库过大而导致新增、查询的性能降低,当然,这个时候我们可以做一些优化措施,比如加索引之类的,如果能优化,也许就不需要分表了。但是,如果我们做了很多优化措施但是还是无法显著提升性能,这个时候我们就需要考虑分表了。

其实码哥认为,到底什么时候分库分表还真没有一个确切的时间点,比如我们一定要等到数据量过大的时候才能去分表吗?我们不可以提前预估吗?

比如按照我们目前的数据量增长规模,现有数据库只能支撑3 个月了,难道我们就不可以提前规划分表吗?分库分表是有一定复杂度的,尤其是由单库单表切换为分库分表,工作量是非常大的,码哥认为,我们可以提前做准备,无需等到系统快支撑不住了再去做,但是也不能太提前了,比如提前 3 ~ 6 个月是一个比较理想的。

扩展

单表数据量级

在阿里巴巴的《Java 开发手册》中提到,“单表行数超过500万行或者单表容量超过2GB,才推荐进行分库分表”。

网上也流传一些说法:“单表数据量级不要超过两千万,否则就要进行分库分表了”,那这个是不是对的呢?

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值