TiDB v7.5.0 DDL 启停特性分析

TiDB v7.5.0引入了DDL暂停与恢复功能,允许在资源密集型DDL操作中节省资源,减少对在线业务的影响。此特性特别适用于大表加索引,可以错峰执行,提高集群利用率。同时,升级过程中自动暂停DDL,确保升级顺利。配合并行DDL处理,显著提升了DDL执行效率。
摘要由CSDN通过智能技术生成

前言

TiDB 的最新 LTS 版本 v7.5.0 于 2023 年 12 月 1 日正式发版,包含很多期待已久的新特性。比如:

  • 支持并行运行多个 ADD INDEX 语句
  • 可以使用 SQL 实现 Lightning 物理导入
    • 大大简化了数据导入的操作效率,极大改善了易用性
  • DDL 支持暂停和恢复。
    • 升级时更平滑,切再也不担心超大表加索引要加好几天而影响业务的情况了,可以对大表加索引错峰执行。
  • TiDB Dashboard 性能分析支持 TiKV 堆内存分析。
    • 通过 TiDB Dashboard 我们就可以直接获取 TiKV 的火焰图和调用图,非常方便!

此外还有优化全局排序 、 资源管控支持自动管理后台任务 、 支持管理资源消耗超出预期的查询等功能。

还有一点需要注意,从 v7.5.0 开始不再支持 TiDB Binlog 数据同步功能,强烈建议使用 TiCDC 实现高效稳定的数据同步。

背景

在以前的版本中,遇到过两个与 DDL 执行相关的痛点问题:

  • 升级时有正在执行的 DDL,当时遗漏了检查,没有取消它就直接升级了导致升级后表数据异常。
  • 对一个 50 亿行的大表添加索引,加了 3 天导致影响在线业务。

在 v7.2.0 中引入的 DDL 任务的暂停和恢复功能,v7.5.0 成为正式功能 (GA)。该功能允许临时暂停资源密集型的 DDL 操作(如创建索引),以节省资源并最小化对在线流量的影响。当资源允许时,可以无缝恢复 DDL 任务,而无需取消和重新开始。DDL 任务的暂停和恢复功能提高了资源利用率,改善了用户体验,并简化了 schema 变更过程。

现在,结合 v6.5 版本后添加索引加速的功能特性,现在可以说根本解决了我们之前遇到的这两个痛点问题。

本文对此进行原理了解和测试验证。

TiDB DDL 基本原理

TiDB 采用在线异步变更的方式执行 DDL 语句,从而实现 DDL 语句的执行不会阻塞其他会话中的 DML 语句。

逻辑及物理 DDL

按照是否需要操作表的数据来划分,DDL 语句可以划分为:

  • 逻辑 DDL 语句

    • 称为 General DDL,只修改元数据,不动表的存储数据。
    • 如改表名或列名,耗时通常在 1s 左右,不会影响线上业务。
  • 物理 DDL 语句

    • 称为 Reorg DDL,会同时修改元数据和表数据。
    • 如建索引,不仅需要变更表的定义,也要做一次全表扫描以构建新索引。物理 DDL 只包含加索引以及有损列类型变更(如从 INT 转成 CHAR )这两种类型,通常耗时较长,且执行时间与表数据量、机器配置及业务负载有关。

执行物理 DDL 对业务有影响主要在于两个方面,一方面需

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

每天读点书学堂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值