
# 并行创建索引
#### 操作场景
传统的DDL操作基于单核和传统硬盘设计，导致针对大表的DDL操作耗时较久，延迟过高。以创建二级索引为例，过高延迟的DDL操作会阻塞后续依赖新索引的DML查询操作。
云数据库 TaurusDB支持并行创建索引的功能。当数据库硬件资源空闲时，您可以通过并行创建索引功能加速DDL执行，避免阻塞后续相关的DML操作，缩短执行DDL操作的窗口期。
#### 约束与限制
- 内核版本为2.0.45.230900及以上版本支持使用该功能。内核版本的查询方法请参见[如何查看云数据库 TaurusDB实例的版本号](https://support.huaweicloud.com/taurusdb_faq/taurusdb_faq_0141.html)。
- 并行创建索引功能，目前支持的索引为Btree二级索引。
- 不支持主键索引、spatial index和fulltext index。如果一个并行创建索引的SQL语句包含主键索引，或者spatial index和fulltext index，客户端将会收到一个告警，提示该操作不支持并行创建索引，同时该语句会采用单线程创建索引的方式执行完成。假设在修改主键索引时，虽然指定了多线程，但是会收到一个告警，实际上只能通过单线程建索引。
 
#### 开启并行创建索引
表1参数说明 
| **参数名称**                                   | **级别**         | **描述**                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
|:---|:---|:---|
| innodb_rds_parallel_index_creation_threads | Global，Session | - 并行创建索引的线程数。  - 如果值大于1，并行创建；否则，单线程创建。  - 该值范围建议CPU核数的一半，同时不要超过innodb_rds_parallel_index_creation_threads_max，该值默认为8。   |
   
#### 使用示例
1. 假设使用sysbench的表，表内有1亿条数据。
   图1查看表   
   ![](https://support.huaweicloud.com/kerneldesc-taurusdb/figure/zh-cn_image_0000001882572064.png "点击放大") 
2. 在该表的"k"字段创建索引。
   如[图2]所示，采用社区默认单线程创建索引，耗时146.82s。
   图2单线程创建索引   
   ![](https://support.huaweicloud.com/kerneldesc-taurusdb/figure/zh-cn_image_0000001928571201.png "点击放大") 
3. 通过设置innodb_rds_parallel_index_creation_threads= 4，启用4个线程创建索引。
   从[图3]中可以看到创建索引耗时38.72s，与社区单线程相比速度提升了3.79倍。
   图3多线程创建索引   
   ![](https://support.huaweicloud.com/kerneldesc-taurusdb/figure/zh-cn_image_0000001928650837.png "点击放大") 
4. 假设要修改主键索引，虽然指定了多线程，但是会收到一个告警，实际上只能通过单线程建索引。
   图4修改主键索引   
   ![](https://support.huaweicloud.com/kerneldesc-taurusdb/figure/zh-cn_image_0000001882572048.png "点击放大") 
 
#### 相关操作
[使用INSTANT方式快速添加列](https://support.huaweicloud.com/taurusdb_faq/taurusdb_faq_0022.html)
