TDSQL水平扩容背后的设计原理

TDSQL水平扩容通过业务指定分区键实现数据拆分和性能兼容性平衡。在扩容过程中,数据同步、校验和路由更新确保高可用和高可靠性,对业务影响极小。采用分布式事务处理跨节点原子性,通过并行计算和流式聚合优化性能,提供与单机MySQL相似的使用体验。
摘要由CSDN通过智能技术生成

设计原理:分区键选择如何兼顾兼容性与性能

file

首先我们刚才提到,水平扩容第一个问题是数据如何进行拆分。因为数据拆分是第一步,这个会影响到后续整个使用过程。对TDSQL来说,数据拆分的逻辑放到一个创建表的语法里面。需要业务去指定 shardkey“等于某个字段”——业务在设计表结构时需要选择一个字段作为分区键,这样的话TDSQL会根据这个分区键做数据的拆分,而访问的话会根据分区键做数据的聚合。我们是希望业务在设计表结构的时候能够参与进来,指定一个字段作为shardkey。这样一来,兼容性与性能都能做到很好的平衡。

其实我们也可以做到用户创建表的时候不指定shardkey,由我们底层这边随机选择一个键做数据的拆分,但这个会影响后续的使用效率,比如不能特别好地发挥分布式数据库的使用性能。我们认为,业务层如果在设计表结构时能有少量参与的话,可以带来非常大的性能优势,让兼容性和性能得到平衡。除此之外,如果由业务来选择shardkey——分区键,在业务设计表结构的时候,我们可以看到多个表,可以选择相关的那一列作为shardkey,这样可以保证数据拆分时,相关的数据是放在同一个节点上的,这样可以避免很多分布式情况下的跨节点的数据交互。

我们在创建表的时候,分区表是我们最常用的,它把数据拆分到各个节点上。此外,其实我们提供了另外两种——总共会提供三种类型的表,背后的主要思考是为了性能,就是说通过将global表这类数据是全量在各个节点上的表——一开始大家会看到,数据全量在各个节点上,就相当于是没有分布

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值