TDSQL新敏态引擎Online DDL技术原理

TDSQL新敏态引擎解决了敏态业务中的不可预知性,实现了PB级存储的Online DDL,提升了表结构变更过程中的数据库吞吐量。其数据形态自动感知特性能自动迁移数据,降低分布式事务比例。文章详细介绍了Instant DDL、Add/Drop Index、通用Online DDL的原子性等技术实现。
摘要由CSDN通过智能技术生成

近日,TDSQL新敏态引擎重磅发布。**该引擎可完美解决对于敏态业务发展过程中业务形态、业务量的不可预知性,实现PB级存储的Online DDL,可以实现大幅提升表结构变更过程中的数据库吞吐量,有效应对业务变化;其独有的数据形态自动感知特性,使数据能根据业务负载情况实现自动迁移,打散热点,降低分布式事务比例,获得极致的扩展性和性能。
**
与此同时,TDSQL 新敏态引擎还具有对分布式事务完整支持的特性,支撑了上层计算引擎多主读写架构的实现,并与计算引擎结合实现了计算下推、分布式事务一阶段优化等多维度优化,进一步实现分布式数据库系统性能极致提升,有效适配企业新敏态业务需求。在腾讯内部业务实践中,TDSQL新敏态引擎可支撑业务在保持高性能且连续服务的基础上,一个月内完成高达1000次表结构在线变更。

在高频的表结构变更过程中,如何减少对在线业务请求的影响,甚至使得用户能够以原生、不阻塞业务的方式进行,这就成为了TDSQL新敏态引擎面对的技术挑战。本期将由腾讯云数据库高级工程师赵东志,为大家深度解读TDSQL新敏态引擎OnlineDDL的原理与实现。以下是分享实录:

#  Instant  DDL

**TDSQL新敏态引擎的核心架构**。SQLEngine是计算层,主要负责SQL的解析、分发,包括数据查询,将SQL转为KV,再将KV收集的结果转化为SQL能获取到的结果,最后传输到客户端等环节。其中,DDL也是计算层负责的部分之一。

过去在单机系统下DDL的执行方式分为两种:MySQL对支持的部分Online DDL,不支持的部分则通过外部组件pt工具对每个DB节点做DDL。在集群规模比较大时,运维会变得更加复杂,需要用外部工具保证多个节点之间DDL的原子性,每个节点还需要预留两倍存储空间。

基于上述原因,TDSQL新敏态引擎的设计目标定为三个方面:
● 保证Online性质,做到不阻塞业务读写请求。
● 保证多节点缓存一致性,使得Crash-safe等在TDSQL系统中自治。
● 兼容MySQL,方便业务迁移。

我们以加列为例来介绍Instant  DDL。下图中的Client,包含一个表结构,是一条映射语句。在F1列的基础上,插入一个pk=10、F1=1的数据行。插入后再进行加列操作,加入F2列,加列后的表如下图TDstore所示。这时如果需要读取前述两行数据,就会遇到问题。在读取pk=11这行时,可以用最新的表结构直接解析数据行,但在读取pk=10这行时,我们需要知道该数据行里是否包含F2列。

为此我们在表结构中引入版本号概念。比如初始列表的版本为1,做加列操作后,schema变为2,插入时再将版本2写入到value字段中。读取数据时需要先判断数据行的版本,如果数据行版本为2,就用当前的表结构解析;如果数据行版本为1,比当前版本小,确定F2列不在该版本的Scheme中后,可直接填充默认值再返回到客户端。

通过版本号概念的引入,在整个加列过程中,只需要更改元数据,即Scheme的信息并未更改数据行,加列过程变得更加快速高效。同样的方式

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值