【TiDBer 唠嗑茶话会 118 】对于 DDL ,你有什么话要说!来开个吐槽大会吧!

背景

在推进 TiDB 支持高达1百万表的扩展能力提升项目中,DDL架构的重构与服务能力的提升也是一个关键环节。目前,我们正致力于识别和解决社区及关键客户在使用DDL时遇到的痛点。大家特别关注提升DDL语句的执行速度和并发度,尤其是在SaaS场景下,大量租户的DDL变更需求导致对DDL语句执行速度的迫切要求。现有的DDL操作是还有实现上的限制,这限制了其扩展性和分布式执行的能力,影响了整体性能与服务能力。我们已注意到,例如CREATE TABLE语句在大量表创建时的性能问题,并在TiDB 8.1版本中进行了优化。为了进一步提升价值,我们希望收集用户的反馈,以确定哪些DDL需求最为迫切,从而优先进行改进,确保我们的工作能够为用户带来最显著的使用场景收益和更好的使用体验。

话题:

  • 对于 DDL ,你有什么话要说?

    • 你在什么场景下用到了 DDL ?

    • DDL 任务的执行是模式有什么规律么?例如周期一批处理 DDL 任务,还是租户自行提交 DDL 变更任务。哪类 DDL 任务是你任务急需提升执行效率的语句,能描述一下具体痛点场景么?

    • 你觉得应该如何提升 DDL 的并发执行能力?

    • 你觉得 DDL 还需要在哪些层面上做优化?

相关文章:

TiDB-v7.5.0 DDL 启停特性分析 专栏 - TiDB-v7.5.0 DDL 启停特性分析 | TiDB 社区
TiDB v7.5.0 vs Oceanbase v4.2.1.1
: online ddl 吐血验证测试
专栏 - TiDB v7.5.0 vs Oceanbase v4.2.1.1 : online ddl 吐血验证测试 | TiDB 社区
TiDB Online DDL 在 TiCDC 中的应用 专栏 - TiDB Online DDL 在 TiCDC 中的应用 | TiDB 社区
DM 分库分表 DDL “乐观协调”模式介绍 专栏 - DM 分库分表 DDL “乐观协调”模式介绍 | TiDB 社区
MySQL 与 TiDB 不同的 DDL 发展历程 专栏 - MySQL 与 TiDB 不同的 DDL 发展历程 | TiDB 社区
DM 分库分表 DDL “悲观协调” 模式介绍 专栏 - DM 分库分表 DDL “悲观协调” 模式介绍 | TiDB 社区
TiCDC 源码阅读(五)TiCDC 对 DDL 的处理和 Filter 解析 专栏 - TiCDC 源码阅读(五)TiCDC 对 DDL 的处理和 Filter 解析 | TiDB 社区
mysql-online-ddl是否需要rebuild 专栏 - mysql-online-ddl是否需要rebuild | TiDB 社区
TiCDC 源码解读(5)-- TiCDC DDL 事件处理逻辑 与 Filter 实现介绍 专栏 - TiCDC 源码解读(5)-- TiCDC DDL 事件处理逻辑 与 Filter 实现介绍 | TiDB 社区
天下武功唯快不破:TiDB 在线 DDL 性能提升 10 倍 专栏 - 天下武功唯快不破:TiDB 在线 DDL 性能提升 10 倍 | TiDB 社区
一次不兼容ddl导致的cdc问题 专栏 - 一次不兼容ddl导致的cdc问题 | TiDB 社区
DM 同步 modify column 语句到 TiDB 5.3 踩坑二:DDL 语句重放 专栏 - DM 同步 modify column 语句到 TiDB 5.3 踩坑二:DDL 语句重放 | TiDB 社区
为TiDB DM添加阿里云RDS/DMS Online DDL支持 专栏 - 为TiDB DM添加阿里云RDS/DMS Online DDL支持 | TiDB 社区
谈谈 DDL 的前世今生 专栏 - 谈谈 DDL 的前世今生 | TiDB 社区

参与奖励:

留言参与讨论,获得 30 积分&经验值!

活动时间:

2024.5.17 -2024.5.24

DDL一般二种业务场景下会使用到。
1)日常功能升级时,新增表和修改表,新增字段,增加索引等;
2)日常监控分析慢SQL时,会有索引重建和新加索引;
有需求的时,大表加字段且有默认值的,需要时间较久,这一块要是能提升一下就好了。

用的最频繁的就是加索引和修改表字段。

常用ddl 基本就是加索引和创建表以及表结构的修改

慢主要是索引,对于大表而言,小时级别的有点受不了

稳定的慢可以接受 :grinning: 别卡死就行

大部分还是跟着业务去修改表结构或者加索引

  • 你在什么场景下用到了 DDL ?
    新上功能需要新建表,新建字段;
    提升效率新增索引;
  • DDL 任务的执行是模式有什么规律么?例如周期一批处理 DDL 任务,还是租户自行提交 DDL 变更任务。哪类 DDL 任务是你任务急需提升执行效率的语句,能描述一下具体痛点场景么?
    新增字段和新增索引。大表的话可能会很慢
  • 你觉得应该如何提升 DDL 的并发执行能力?
    是不是可以新增关键字,让他在后台跑,同时可以hint指定并发度之类的。。。
  • 你觉得 DDL 还需要在哪些层面上做优化?
    同上

物理DDL(add index)和逻辑DDL

提高效率的几点思考方向:
1.在线ddl。不影响读。
2.尽可能不移动数据,复制数据
3.只变化增量数据。
4.多租户,资源隔离 事务隔离

ddl语句一般是租户不规律触发的,尤其是大表存在数据的情况下,更新表结构或者增加新字段的ddl语句效率问题

大表加索引有点慢呀

v6.5以后引入的元数据锁MDL,在有大事务DML时,DDL会被卡死,目前亟待完善可观测性,提高用户体验

1 个赞

其实对于私有部署,一切都还好说。
真正的挑战在于公有云部署的租户模式,C端客户的特点就是既要又要,你永远无法预料你的客户会做出什么奇葩操作。

ddl,数据库DBA永远的痛

使用最多的情况加字段和索引

加索引和修改表字段

主要是增加索引,修改字段类型、长度操作。

加索引,修改或新增字段