分库分表-ShardingSphere

文章探讨了分库分表的两种常见策略——基于Hash和范围分片,以及它们的扩展性和数据分布特点。提到了分库分表后处理Join、用户查询和全局唯一ID生成的问题,并详细介绍了ShardingSphere的分片流程,包括SQL解析、路由、改写、执行和归并。同时,讨论了连接模式的选择和内存管理在OLAP与OLTP场景下的应用。

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

分库分表拆常见分方法与特点

分片策略

数据分布

以后扩展

基于Hash:hash(分片键)%分片数

数据分布均匀

不易扩容,扩容需要数据迁移

范围分片:例如按年分,按月,按日

数据分表可能不均匀

易扩展,扩展不需要数据迁移

分库分表的常见问题与解决方式

如何确定最初需要多少张表?

一般考虑10年的数据量即可,如果是基于Hash,扩容需要再次迁移

分库之后Join如何处理?

如果是绑定表,即有关联的一组表,例如订单与订单详情表,使用同一个分库分表策略。

如果要join的表,是个字典表(表小,数据变动不大),建议做成广播表,所有的库都有存一份。

如果就是落在不同的库,例如订单,商品,可以采取 CQRS或者API Composition

用户分表了,某个用户手机号,找到用户信息?

加一张关联表, phone -> userId, 先根据phone 查找userId,之后根据userId ,查询订单表

分库分表后全局唯一ID如何生产?

  • UUID,无序,写入性能差
  • snowflake·: ShardingSphere提供这个算法, 有序,写入性能好,生成性能无上限。
  • 利用Redis作为发号器: String 类型 key:yyyyMMddHHmmssSSS v
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值