2024-08-04  阅读(2)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://www.skjava.com/mianshi/baodian/detail/1859461058

回答

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

什么时候分库?

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

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

什么时候分表?

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

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

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

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

扩展

单表数据量级

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

网上也流传一些说法:“单表数据量级不要超过两千万,否则就要进行分库分表了”,那这个是不是对的呢?请阅读:为什么 MySQL 中单表操作千万后就需要分库分表?


Java 面试宝典是大明哥全力打造的 Java 精品面试题,它是一份靠谱、强大、详细、经典的 Java 后端面试宝典。它不仅仅只是一道道面试题,而是一套完整的 Java 知识体系,一套你 Java 知识点的扫盲贴。

它的内容包括:

  • 大厂真题:Java 面试宝典里面的题目都是最近几年的高频的大厂面试真题。
  • 原创内容:Java 面试宝典内容全部都是大明哥原创,内容全面且通俗易懂,回答部分可以直接作为面试回答内容。
  • 持续更新:一次购买,永久有效。大明哥会持续更新 3+ 年,累计更新 1000+,宝典会不断迭代更新,保证最新、最全面。
  • 覆盖全面:本宝典累计更新 1000+,从 Java 入门到 Java 架构的高频面试题,实现 360° 全覆盖。
  • 不止面试:内容包含面试题解析、内容详解、知识扩展,它不仅仅只是一份面试题,更是一套完整的 Java 知识体系。
  • 宝典详情:https://www.yuque.com/chenssy/sike-java/xvlo920axlp7sf4k
  • 宝典总览:https://www.yuque.com/chenssy/sike-java/yogsehzntzgp4ly1
  • 宝典进展:https://www.yuque.com/chenssy/sike-java/en9ned7loo47z5aw

目前 Java 面试宝典累计更新 400+ 道,总字数 42w+。大明哥还在持续更新中,下图是大明哥在 2024-12 月份的更新情况:

想了解详情的小伙伴,扫描下面二维码加大明哥微信【daming091】咨询

同时,大明哥也整理一套目前市面最常见的热点面试题。微信搜[大明哥聊 Java]或扫描下方二维码关注大明哥的原创公众号[大明哥聊 Java] ,回复【面试题】 即可免费领取。

阅读全文