TDSQL-C MySQL 版 Nonblocking DDL

当一条 DML 语句执行时,如果持有 metadata lock,就会阻塞对应表的 DDL,导致 DDL 被阻塞后,后续的所有 DML 语句都会被阻塞,这可能会消耗大量的线程资源。为了避免这种情况,TDSQL-C MySQL 版引入了 Nonblocking DDL 机制,保护系统不会被等待 MDL 锁的 DDL 操作卡住。当 DDL 操作被 DML 操作阻塞时,后续的 DML 不会被等待的 MDL 锁进一步阻塞。

相关产品
TDSQL-C MySQL 版 产品页,含版本规格、价格与购买入口。

一、支持版本

内核版本 TXSQL 8.0 3.1.15.001及以上。

二、适用场景

适用于避免 DML 语句执行时,由于持有 metadata lock,导致阻塞对应表的 DDL 以及后续的所有 DML 语句的场景。

三、使用说明

参数名 动态 类型 默认 参数值范围 说明
txsql_nonblock_ddl yes bool OFF OFF/ON 是否开启 Nonblocking DDL 功能。
txsql_nonblock_ddl_retry_times yes ulong 1 0 – 18446744073709551615 DDL 操作被 MDL 锁阻塞后的重试次数,默认值为1。
txsql_nonblock_ddl_retry_interval yes ulong 2 0 – 18446744073709551615 DDL 操作被 MDL 锁阻塞后的重试间隔,默认值为2s。

注意:部分非常见 DDL 操作可能覆盖不到,这些场景下,如果 DDL 遇到 DML 阻塞,会直接返回 Lock wait timeout。

赞 (0)
上一篇 4天前
下一篇 4天前