sharding-jdbc使用(1)

本文介绍了数据库分库分表的两种主要方式:垂直分片与水平分片,并探讨了分库分表后的常见问题及解决方案,如事务一致性、SQL运行等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

理论知识:

1.垂直分片

按照业务拆分的方式称为垂直分片,又称为纵向拆分,它的核心理念是专库专用。在拆分之前,一个数据库由多个数据表构成,每个表对应着不同的业务。而拆分之后,则是按照业务将表进行归类,分布到不同的数据库中,从而将压力分散到不同的数据库。

垂直分片方法真正的解决单点瓶颈。垂直拆分可以缓解数据量和访问量带来的问题,但无法根治。如果垂直拆分之后,表中的数据量依然超过单节点所能承载的阈值,则需要水平分片来进一步处理。

2.水平分片

水平分片称为横向拆分。相对于垂直分片,它不再将数据根据业务逻辑分类,而是通过某个字段(或 某几个字段),根据某种规则将数据分散多个库或表中,每个分仅包含数据的部分。例如:根据主键分,偶数主键的记录放入 0 库(或表),奇数主键的记录放1库(或表)。

水平分片从理论上突破了单机数据量处理的瓶颈,并且扩展相对自由,是分库分表的标准解决方案。

 

分库分表后需要解决的问题:


1. 应用开发工程师和数据库管理员对数据库的操作变得异常繁重就是其中的重要挑战之一。他们需要知道数据需要从哪个具体的数据库的分表中获取。

解决方案:待续


2.能够正确的运行在单节点数据库中的 SQL,在分片之后的数据库中并不一定能够正确运行。

2.1分页

解决方案:待续

2.2 排序

解决方案:待续

2.3聚合分组

解决方案:待续

2.4 其它

3.分布式事务(跨库事务)

解决方案:

a1.合理采用分表,可以在降低单表数据量的情况下,尽量使用本地事务,善于使用同库不同表可有效避免分布式事务带来的麻烦。

a2.在不能避免跨库事务的场景,有些业务仍然需要保持事务的⼀致性。而基于 XA 的分布式事务由于在并发度高的场景中性能无法满足需要,并未被互联网巨头大规模使用,他们大多采用最终一致性的柔性事务代替强一致事务。

(未完待续)

 

转载:https://shardingsphere.apache.org/document/current/cn/features/sharding/

 

 

 

 

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值