数据库常见面试题:为什么要进行分库分表?谈谈分库分表的场景和策略

面试题 潘老师 10个月前 (06-14) 44 ℃ (0) 扫码查看

在资深后端面试中,“为什么要进行分库分表以及在什么场景下进行”是个常被提及的问题,也是业务发展到一定程度必须面对的。很多小伙伴认为在高并发场景下需要分库分表,但这并不准确。其实,分库分表的核心在于数据库面临性能瓶颈或数据量过大。

对于分表而言,当单表存储的数据量超过一定阈值,比如数据库中有一千万条数据,单表超过三四个 G,且通过优化索引也无法解决 SQL 查询性能明显下降的问题时,就可以考虑分表。常见的分表方式有横向拆分,比如根据 ID 均匀分散到多个数据表,但这种方式数据表固定,不利于后续扩展。若想扩展好,可采用哈希分表策略,根据数据的某个属性(如主键的哈希值)将数据分散到不同表或数据库,还可以按时间分表,如按月或年形成数据表,核心目的是分散数据以缓解查询压力。

垂直分表在实际场景中很少后期操作,建议建表时就做好设计,因为后期垂直拆分代价高,比如将用户表拆成主表和副表,存储必要字段和热点字段、不常用字段,后期拆分很多代码逻辑都需变动,工作量大。
分库的场景主要是单库访问量过高。当单库访问量达到一定数值,比如六七千甚至更高,数据库可能就承受不住了,这时就需要分库。一般会将数据分散到多个数据库实例中,通常会搭配微服务架构或领域驱动设计,按照业务归属拆分不同的表到不同库,实现专库专用,这样能提高系统稳定性和可用性,降低业务耦合度。

好了,以上就是关于分库分表的相关内容,如果您对本期内容有任何疑问,欢迎交流。


版权声明:本站文章,如无说明,均为本站原创,转载请注明文章来源。如有侵权,请联系博主删除。
本文链接:https://www.panziye.com/ms/13009.html
喜欢 (0)
请潘老师喝杯Coffee吧!】
分享 (0)
用户头像
发表我的评论
取消评论
表情 贴图 签到 代码

Hi,您需要填写昵称和邮箱!

  • 昵称【必填】
  • 邮箱【必填】
  • 网址【可选】