
本文章主要是一些概念性的东西,大家可以自己去官网学习,本文档需搭配shardingsphere-spring 实现数据分片(二)食用
数据分片
shardingsphere官网对数据分片的解释
数据分片指按照某个维度 将存放在单一数据库中的数据分散 地存放至多个数据库或表 中以达到提升性能瓶颈以及可用性的效果。 数据分片的有效手段是对关系型数据库进行分库和分表。分库和分表均可以有效的避免由数据量超过可承受阈值而产生的查询瓶颈。 除此之外,分库还能够用于有效的分散对数据库单点的访问量;分表虽然无法缓解数据库压力,但却能够提供尽量将分布式事务转化为本地事务的可能,一旦涉及到跨库的更新操作,分布式事务往往会使问题变得复杂。 使用多主多从的分片方式,可以有效的避免数据单点,从而提升数据架构的可用性。
通过分库和分表进行数据的拆分来使得各个表的数据量保持在阈值以下,以及对流量进行疏导应对高访问量,是应对高并发和海量数据系统的有效手段。 数据分片的拆分方式又分为垂直分片和水平分片。
垂直分片
简单来说就是数据存放在一个库多张表里,减少了单表的存储数据量,一定程度上减少了B+树的深度,缓解了磁盘的IO对数据读取的影响

垂直分片不担心事务,因为他在一个库里
水平分片
某个字段按照某种逻辑路由到相应的数据库,数据表中

水平分片就涉及到了分布式事务;
解决了存储的问题后就会带来新的问题,面对如此散乱的分片数据,需要知道数据需要从哪个具体的数据库的子表中获取。
一些其他问题,比如 分页的排序,分组等
如果跨库,这就涉及到了跨库事务,在不能避免跨库事务的场景,有些业务仍然需要保持事务的一致性。 而基于 XA 的分布式事务由于在并发度高的场景中性能无法满足需要,并未被互联网巨头大规模使用,他们大多采用最终一致性的柔性事务代替强一致事务。