创建或重建二级索引的在线 DDL 操作的工作流程包括:
扫描聚集索引并将数据写入临时排序文件
排序数据
将临时排序文件中的排序数据加载到二级索引中
可用于扫描聚簇索引的并行线程数由该
innodb_parallel_read_threads
变量定义。默认设置为 4。最大设置为 256,这是所有会话的最大数量。实际扫描聚簇索引的线程数是
innodb_parallel_read_threads
设置定义的数目或要扫描的索引子树数,以较小者为准。如果达到线程限制,会话将退回到使用单个线程。
排序和加载数据的并行线程数由
innodb_ddl_threads
MySQL 8.0.27 中引入的变量控制。默认设置为 4。在 MySQL 8.0.27 之前,排序和加载操作是单线程的。
以下限制适用:
构建包含虚拟列的索引不支持并行线程。
全文索引创建不支持并行线程。
空间索引创建不支持并行线程。
使用虚拟列定义的表不支持并行扫描。
用全文索引定义的表不支持并行扫描。
使用空间索引定义的表不支持并行扫描。