数据量大了,就一定要分库分表吗?

简介: 有位小伙伴在阿里的面试中,被问到,说只要数据量大了,就一定要分库分表吗?如果你直接回答,是 的话,这大概率就会被 了。

有位小伙伴在阿里的面试中,被问到,说只要数据量大了,就一定要分库分表吗?如果你直接回答,是 的话,这大概率就会被 了。

因为分库和分表不能一概而论。分库和分表各自的应用场景,以及它们要解决的问题也都不一样。下面我从三个方面来分析,分别是只分库不分表、只分表不分库、既分库又分表这三种应用场景。

1、只分库不分表

先来分析只分库不分表的情况。那我们在什么时应该候选择分库呢?当数据库的读写访问量过高,还有可能会出现数据库连接不够用的情况。这个时候我们就需要考虑分库,通过增加数据库实例的方式来获得更多的数据库连接,从而提升系统的并发性能。

2、只分表不分库

那什么时候需要进行分表呢?当单表存储的数据量非常大的情况下,并且并发量也不高,数据库的连接也还够用。但是数据写入和查询的性能出现了瓶颈,这个时候就需要考虑分表了。将数据拆分到多张表中来减少单表存储的数据量,从而提升读写的效率。

3、既分库又分表

那什么时候既要分库又要分表呢?小伙伴们应该能够想到了,结合前面的两种情况,如果同时满足前面的两个条件,也就是数据连接也不够用,并且单表的数据量也很大,从而导致数据库读写速度变慢的情况,这个时候就要考虑既分库又分表。

4、总结

当然,我上面所述的只是每种情况的使用场景,并不是绝对的。有些小伙伴可能会说,很多系统在开发之出就已经完成分库分表了,那是不是过度设计呢?

要不要提前设计分库分表,还要根据业务的发展来考虑。在《阿里开发手册》中建议,单表行数超过500万行或者单表容量超过2GB,才推荐进行分库分表,如果预计三年后数据量根本达不到这个级别,就不必要在创建表时就分库分表。

那我再问小伙伴们一个问题,什么时候要进行读写分离呢?欲知详情如何,请听下回分解。

相关文章
|
5月前
|
缓存 关系型数据库 MySQL
分库分表知识总结(四)
分库分表知识总结(四)
71 1
|
5月前
|
SQL 存储 数据库连接
什么是分库分表,为什么要分库分表?
笔者经常将缓存、分库分表、消息队列定义为高并发三剑客。开发互联网应用系统时,分库分表是一个绕不开的技术点。 这篇文章,我们会探讨如下问题:
|
16天前
|
SQL Oracle 关系型数据库
分库分表
分库分表
|
5月前
|
存储 关系型数据库 中间件
什么是分库分表
什么是分库分表
64 3
|
3月前
分库分表中间表优化
【7月更文挑战第21天】
27 2
|
3月前
|
中间件 数据库
分库分表全局查询
【7月更文挑战第12天】
133 12
|
5月前
|
存储 算法 数据库连接
为什么要分库分表
为什么要分库分表
为什么要分库分表
|
5月前
|
缓存 监控 Java
分库分表带来的问题
分库分表带来的问题
|
5月前
|
存储 关系型数据库 MySQL
分库分表:存量1亿,日增量500万如何分库分表?
分库分表:存量1亿,日增量500万如何分库分表?
127 0
|
12月前
|
SQL 缓存 关系型数据库
什么情况下需要考虑分库分表?
什么情况下需要考虑分库分表?
139 0