暂无图片
tdsql 数据表扩容拆分的机制、算法,时间点、建议值 ?
我来答
分享
2020-09-24
tdsql 数据表扩容拆分的机制、算法,时间点、建议值 ?

tdsql 数据表扩容拆分的机制、算法,时间点、建议值 ?

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
陈昊

分片表的拆分算法可以这么理解:

  1. 我们建表的实例指定一列(适合业务拆分的列,比如userid), 建好表后,可以用透传分片的语法去每个分片上查看表结构;你会发现每个分片上的表结构有对应分区的信息,比如分片1负责0-31, 分片2负责32-64
  2. 建好表后,在进行增删改查时,proxy会根据客户端发送的sql,进行语法解析,判断sql该发送给哪个分片
    — 这里就涉及分片表的分片算法了,这里的逻辑是hash(userid)->[0,64),然后根据分片负责的hash范围进行转发;

扩容的时候,有2种方式:
1, 分片垂直扩容,比如2个分片1C2G,分片个数不变扩成2个分片2C4G;-- 每个分片负责的hash范围不变,新增的2C4G分片从原来的分片上导出做主从直到延迟非常小进行切换;老的1C2G的分片下线
2. 添加分片,比如2个分片添加到4个分片,新增的会从原来的一个分片中导出完整的数据出来做主从,然后延迟非常小的时候,进行路由切换;新增的分片和老的分片,各自删除多余的分区数据;

一般我们建议在一个分布式实例里面,单个分片规格尽量大,分片个数尽量少,来减少分布式开销;
比如优先创建2个2C4G的分片的实例,而不是创建4个1C2G的分片的实例,分片规格达到上限后,再进行添加分片;

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏