分区表并行Truncate partition引起compaction

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

  • 【TiDB 版本】:4.0.5
  • 【问题描述】:并行执行truncate partition时,无论该分区是否存在数据,必定触发compaction,compaction reason为write-levelMaxlevelsize,同时影响集群IO;串行执行时不会出现compact。

若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。
{‘tidb_log_dir’: ‘{{ deploy_dir }}/log’, ‘dummy’: None, ‘tidb_port’: 55944, ‘tidb_status_port’: 10080, ‘tidb_cert_dir’: ‘{{ deploy_dir }}/conf/ssl’}

系统信息
+----------------+----------------------------+
|      Host      |          Release           |
+----------------+----------------------------+
| SVR27221IN5112 | 3.10.0-957.21.2.el7.x86_64 |
| SVR27220IN5112 | 3.10.0-957.21.2.el7.x86_64 |
| SVR27222IN5112 | 3.10.0-957.21.2.el7.x86_64 |
| SVR27219IN5112 | 3.10.0-957.21.2.el7.x86_64 |
| SVR27223IN5112 | 3.10.0-957.21.2.el7.x86_64 |
| SVR27225IN5112 | 3.10.0-957.21.2.el7.x86_64 |
|   VMS121160    | 3.10.0-693.21.1.el7.x86_64 |
+----------------+----------------------------+
TiDB 集群信息
+--------------------+--------------+------+----+------+
|    TiDB_version    | Clu_replicas | TiDB | PD | TiKV |
+--------------------+--------------+------+----+------+
| 5.7.25-TiDB-v4.0.5 |      3       |  3   | 3  |  5   |
+--------------------+--------------+------+----+------+
集群节点信息
+------------+--------------+
|  Node_IP   | Server_info  |
+------------+--------------+
| instance_0 |     tikv     |
| instance_1 |      pd      |
| instance_2 | pd+tikv+tidb |
| instance_3 |     tidb     |
| instance_4 |     tikv     |
| instance_6 |     tikv     |
| instance_5 | pd+tikv+tidb |
+------------+--------------+
容量 & region 数量
+---------------------+-----------------+--------------+
| Storage_capacity_GB | Storage_uesd_GB | Region_count |
+---------------------+-----------------+--------------+
|       21449.93      |     7978.22     |   1079444    |
+---------------------+-----------------+--------------+
QPS
+---------+----------------+-----------------+
| Clu_QPS | Duration_99_MS | Duration_999_MS |
+---------+----------------+-----------------+
|  832.98 |     65.83      |      472.50     |
+---------+----------------+-----------------+
热点 region 信息
+---------------+----------+-----------+
|     Store     | Hot_read | Hot_write |
+---------------+----------+-----------+
|  store-677349 |    0     |     0     |
| store-2740360 |    9     |     5     |
| store-1446626 |    0     |     0     |
| store-1317717 |    0     |     0     |
|    store-1    |    1     |     11    |
|    store-5    |    2     |     12    |
| store-2740361 |    4     |     7     |
| store-1446667 |    0     |     0     |
|    store-4    |    3     |     12    |
+---------------+----------+-----------+
磁盘延迟信息
+--------+------------+-------------+--------------+
| Device |  Instance  | Read_lat_MS | Write_lat_MS |
+--------+------------+-------------+--------------+
|  dm-0  | instance_1 |     nan     |     0.24     |
|  dm-0  | instance_5 |     nan     |     0.26     |
|  dm-0  | instance_4 |     nan     |     1.31     |
|  dm-0  | instance_2 |     0.00    |     1.27     |
|  dm-0  | instance_0 |     0.00    |     0.51     |
|  dm-0  | instance_6 |     0.00    |     0.60     |
|  dm-1  | instance_1 |     nan     |     nan      |
|  dm-1  | instance_5 |     nan     |     nan      |
|  dm-1  | instance_4 |     nan     |     nan      |
|  dm-1  | instance_2 |     nan     |     nan      |
|  dm-1  | instance_0 |     nan     |     nan      |
|  dm-1  | instance_6 |     nan     |     nan      |
|  dm-2  | instance_1 |     nan     |     0.21     |
|  dm-2  | instance_5 |     0.90    |     1.26     |
|  dm-2  | instance_4 |     1.95    |     2.21     |
|  dm-2  | instance_2 |     0.84    |     1.12     |
|  dm-2  | instance_0 |     1.90    |     1.61     |
|  dm-2  | instance_6 |     2.06    |     1.41     |
|  dm-3  | instance_1 |     nan     |     nan      |
|  dm-3  | instance_5 |     nan     |     nan      |
|  dm-3  | instance_4 |     nan     |     nan      |
|  dm-3  | instance_2 |     nan     |     nan      |
|  dm-3  | instance_0 |     nan     |     nan      |
|  dm-3  | instance_6 |     nan     |     nan      |
|  md0   | instance_1 |     nan     |     0.00     |
|  md0   | instance_5 |     0.00    |     0.00     |
|  md0   | instance_4 |     0.00    |     0.00     |
|  md0   | instance_2 |     0.00    |     0.00     |
|  md0   | instance_0 |     0.00    |     0.00     |
|  md0   | instance_6 |     0.00    |     0.00     |
| md0p1  | instance_1 |     nan     |     nan      |
| md0p1  | instance_5 |     nan     |     nan      |
| md0p1  | instance_4 |     nan     |     nan      |
| md0p1  | instance_2 |     nan     |     nan      |
| md0p1  | instance_0 |     nan     |     nan      |
| md0p1  | instance_6 |     nan     |     nan      |
|  sda   | instance_1 |     nan     |     0.19     |
|  sda   | instance_5 |     nan     |     0.21     |
|  sda   | instance_4 |     nan     |     1.27     |
|  sda   | instance_2 |     0.00    |     1.28     |
|  sda   | instance_0 |     0.00    |     0.40     |
|  sda   | instance_6 |     0.00    |     0.49     |
|  sdb   | instance_1 |     nan     |     nan      |
|  sdb   | instance_5 |     nan     |     nan      |
|  sdb   | instance_4 |     nan     |     nan      |
|  sdb   | instance_2 |     nan     |     nan      |
|  sdb   | instance_0 |     nan     |     nan      |
|  sdb   | instance_6 |     nan     |     nan      |
|  sdc   | instance_1 |     nan     |     0.13     |
|  sdc   | instance_5 |     0.92    |     1.15     |
|  sdc   | instance_4 |     1.94    |     1.97     |
|  sdc   | instance_2 |     0.92    |     1.07     |
|  sdc   | instance_0 |     1.82    |     1.50     |
|  sdc   | instance_6 |     2.01    |     1.26     |
|  sdd   | instance_1 |     nan     |     0.14     |
|  sdd   | instance_5 |     0.88    |     1.16     |
|  sdd   | instance_4 |     1.97    |     1.76     |
|  sdd   | instance_2 |     0.76    |     1.08     |
|  sdd   | instance_0 |     1.99    |     1.41     |
|  sdd   | instance_6 |     2.13    |     1.29     |
+--------+------------+-------------+--------------+

应该不是并行执行 truncate partion 导致的,TiDB 内部是有两个 DDL 队列,一个是 ADD INDEX 的队列,一个是其他 DDL 的队列,在队列内部执行 DDL 是串行执行的。所以用户就算并行执行 DDL 在内部也是按照队列顺序执行的。