扫码阅读
手机扫码阅读

分库分表方式

66 2024-07-18

我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。

查看原文:分库分表方式
文章来源:
springboot葵花宝典
扫码关注公众号

分库分表方式概述

分库分表是数据库架构中常见的一种优化手段,包括垂直分库、水平分库、垂直分表、水平分表四种方式。

1. 垂直分表

垂直分表是将一张宽表按字段进行拆分,使得每张表存储部分字段。这种方法能够提升热点数据的操作效率,并减少I/O争抢和锁表的几率。示例中通过商品信息的不同访问频率,将商品表拆分为商品基本信息表和商品描述表,以优化查询性能。

2. 垂直分库

垂直分库通过将表按业务归类分布到不同数据库,进而部署在不同服务器上,以此突破单台服务器性能瓶颈。它使得数据库维护更清晰,提升了数据管理、扩展性和并发性能。但垂直分库不解决单表数据量过大问题。

3. 水平分表

水平分表针对单表数据量大的问题,通过将数据均分到多个结构相同的表中来进行优化。示例中根据商品ID的奇偶性分表,这样可以优化性能和降低锁表可能性,但仍未解决单库数据量大的问题。

4. 水平分库

水平分库是将单表数据按规则分散到不同数据库中,每个数据库可部署在不同服务器上。这种方式有效缓解了大数据量、高并发的性能瓶颈,并提高了系统稳定性和可用性。但这同时加大了系统复杂度,需要额外的数据路由工作。

5. 分库分表的问题

尽管分库分表能有效缓解性能瓶颈,它也带来了分布式事务一致性、跨节点查询、分页排序、主键去重和公共表管理等问题。为了解决这些问题,可以采用sharding-jdbc、mycat等技术。

6. 分库分表小结

分库分表需要在系统设计阶段根据业务耦合程度确定方案。在数据量和访问压力可控时,应优先考虑缓存、读写分离、索引等方案。对于数据量巨大且持续增长的情况,才考虑水平分库分表。总的来说,基于开发和维护成本,非必须时不应随意对数据库进行分库分表。

想要了解更多内容?

查看原文:分库分表方式
文章来源:
springboot葵花宝典
扫码关注公众号

主要分享JAVA技术,主要包含SpringBoot、SpingCloud、Docker、中间件等技术,以及Github开源项目

266 篇文章
浏览 21.3K
加入社区微信群
与行业大咖零距离交流学习
软件研发质量管理体系建设 白皮书上线