功能介绍
在数据库运维过程中,DDL 操作往往因为其对数据结构的修改而成为影响数据库性能的敏感操作,特别是在数据量庞大的表上执行 DDL 时。传统的 Copy DDL 操作可能会导致长时间的锁等待,进而影响业务的正常运行。为了解决这一问题,TXSQL 引入了 Parallel Copy DDL 机制,与传统的 Copy DDL 相比,Parallel Copy DDL 利用 InnoDB 层的 Parallel Reader 框架,并行读取原表的数据,将数据插入到新建的临时表中,从而提高了数据迁移的效率。
支持版本
内核版本 TXSQL 5.7 2.1.13.001及以上。
内核版本 TXSQL 8.0 3.1.15.001及以上。
适用场景
Copy DDL 处于存储引擎的上层,即执行层。调用引擎层的接口仅包括查询和插入,并不涉及到文件上的直接操作。任何 DDL 操作都可以抽象成这样的执行方式,因此所有的 DDL 操作都可以使用 Copy 算法执行。
并行 Copy DDL 适用以下场景:
数据量大的表结构修改,如添加新列或修改列类型。
需要快速完成 DDL 操作以减少对业务影响的场景。
对数据库性能有严格要求,需要减少 DDL 操作导致的锁等待时间。
注意事项
以下类型的表暂不支持并行 Copy DDL:
非 InnoDB 表。
临时表。
alter table order by
的表,对行顺序有要求,需要单线程去做。
新增 auto increment 列的表。
分区表。
含有外键约束的表。
含有 multi value 函数索引的表。
使用说明
新增两个 session 级别的参数。
|
txsql_parallel_copy_ddl | session | bool | 0 | 0/1 | 是否开启并行 Copy DDL 功能。 设置为1,表示开启并行 Copy DDL 功能。 设置为0,表示关闭并行 Copy DDL 功能。 |
innodb_parallel_read_threads | session | int | 4 | 1 - 256 | Parallel Read 使用的线程数。 |
本页内容是否解决了您的问题?