【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】
版本信息
v5.1.4
问题描述
下面 sql 第一次查询耗时 16 秒,往后再查大概耗时 0.16 秒,执行计划和慢日志请见下面
desc analyze SELECT * FROM aaaa_bbbb_cccccc_tab FORCE INDEX (PRIMARY) WHERE 1 <= id ORDER BY id LIMIT 5000;
为什么这个sql耗时这么长?从执行计划看,每个阶段耗时都很少
从慢日志来看主要耗时在了 # PD_total: 15.762042992
执行计划
>desc analyze SELECT * FROM aaaa_bbbb_cccccc_tab FORCE INDEX (PRIMARY) WHERE 1 <= id ORDER BY id LIMIT 5000;
+-----------------------------+---------+---------+-----------+----------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------+---------+------+
| id | estRows | actRows | task | access object | execution info | operator info | memory | disk |
+-----------------------------+---------+---------+-----------+----------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------+---------+------+
| Limit_12 | 5000.00 | 5000 | root | | time:24.5ms, loops:6 | offset:0, count:5000 | N/A | N/A |
| └─TableReader_22 | 5000.00 | 5000 | root | | time:24.5ms, loops:5, cop_task: {num: 1, max: 22.6ms, proc_keys: 5000, tot_proc: 15ms, tot_wait: 1ms, rpc_num: 1, rpc_time: 22.6ms, copr_cache_hit_ratio: 0.00} | data:Limit_21 | 1.67 MB | N/A |
| └─Limit_21 | 5000.00 | 5000 | cop[tikv] | | tikv_task:{time:11ms, loops:9}, scan_detail: {total_process_keys: 5000, total_keys: 5001, rocksdb: {delete_skipped_count: 0, key_skipped_count: 9998, block: {cache_hit_count: 24, read_count: 41, read_byte: 519.1 KB}}} | offset:0, count:5000 | N/A | N/A |
| └─TableRangeScan_20 | 5000.00 | 5000 | cop[tikv] | table:aaaa_bbbb_cccccc_tab | tikv_task:{time:11ms, loops:9} | range:[1,+inf], keep order:true | N/A | N/A |
+-----------------------------+---------+---------+-----------+----------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------+---------+------+
4 rows in set (16.66 sec)
>desc analyze SELECT * FROM aaaa_bbbb_cccccc_tab FORCE INDEX (PRIMARY) WHERE 1 <= id ORDER BY id LIMIT 5000;
+-----------------------------+---------+---------+-----------+----------------------------+-----------------------------------------------------------------------------------------------------------------------------------+---------------------------------+---------+------+
| id | estRows | actRows | task | access object | execution info | operator info | memory | disk |
+-----------------------------+---------+---------+-----------+----------------------------+-----------------------------------------------------------------------------------------------------------------------------------+---------------------------------+---------+------+
| Limit_12 | 5000.00 | 5000 | root | | time:1.98ms, loops:6 | offset:0, count:5000 | N/A | N/A |
| └─TableReader_22 | 5000.00 | 5000 | root | | time:1.97ms, loops:5, cop_task: {num: 1, max: 858.8µs, proc_keys: 0, rpc_num: 1, rpc_time: 846.8µs, copr_cache_hit_ratio: 1.00} | data:Limit_21 | 1.67 MB | N/A |
| └─Limit_21 | 5000.00 | 5000 | cop[tikv] | | tikv_task:{time:11ms, loops:9} | offset:0, count:5000 | N/A | N/A |
| └─TableRangeScan_20 | 5000.00 | 5000 | cop[tikv] | table:aaaa_bbbb_cccccc_tab | tikv_task:{time:11ms, loops:9} | range:[1,+inf], keep order:true | N/A | N/A |
+-----------------------------+---------+---------+-----------+----------------------------+-----------------------------------------------------------------------------------------------------------------------------------+---------------------------------+---------+------+
4 rows in set (0.16 sec)
慢日志 1 如下
# Time: 2023-10-25T11:49:42.716679841+08:00
# Txn_start_ts: 445174452335673352
# User@Host: user_1111111[user_1111111] @ 192.168.1.10 [192.168.1.10]
# Conn_ID: 3832913
# Query_time: 16.657547907
# Parse_time: 0.000080919
# Compile_time: 0.000289285
# Rewrite_time: 0.000222468
# Optimize_time: 0.000137673
# Wait_TS: 0.000262141
# Cop_time: 0.024211957 Process_time: 0.015 Wait_time: 0.001 Request_count: 1 Process_keys: 5000 Total_keys: 5001 Rocksdb_key_skipped_count: 9998 Rocksdb_block_cache_hit_count: 24 Rocksdb_block_read_count: 41 Rocksdb_block_read_byte: 531518
# DB: db_name_aaaaaaaaaaaaaaaaaa
# Is_internal: false
# Digest: a71f6770e827e0ca204aeeb0ae2ff68c7d002e3859b71d658dc58dc4a0948d4b
# Num_cop_tasks: 1
# Cop_proc_avg: 0.015 Cop_proc_addr: 192.168.1.22:20160
# Cop_wait_avg: 0.001 Cop_wait_addr: 192.168.1.22:20160
# Mem_max: 1748334
# Prepared: false
# Plan_from_cache: false
# Plan_from_binding: false
# Has_more_results: false
# KV_total: 0.022988492
# PD_total: 15.762042992
# Backoff_total: 0
# Write_sql_response_total: 0.000002919
# Succ: true
# Plan_digest: 5f7131616f66869e9858eca840a8adbec75143761f71f6055f20808ed4d2e955
use db_name_aaaaaaaaaaaaaaaaaa;
desc analyze SELECT * FROM aaaa_bbbb_cccccc_tab FORCE INDEX (PRIMARY) WHERE 1 <= id ORDER BY id LIMIT 5000;
慢日志 2 如下
# Time: 2023-10-25T15:06:28.267985485+08:00
# Txn_start_ts: 445177551401779542
# User@Host: user_1111111[user_1111111] @ 192.168.10.100 [192.168.10.100]
# Conn_ID: 57
# Query_time: 0.18738585
# Parse_time: 0.000072428
# Compile_time: 0.000333638
# Rewrite_time: 0.000260213
# Optimize_time: 0.000129253
# Wait_TS: 0.000135735
# Cop_time: 0.002855655 Wait_time: 0.001 Request_count: 1
# DB: db_name_aaaaaaaaaaaaaaaaaa
# Is_internal: false
# Digest: a71f6770e827e0ca204aeeb0ae2ff68c7d002e3859b71d658dc58dc4a0948d4b
# Num_cop_tasks: 1
# Cop_proc_avg: 0 Cop_proc_addr: 192.168.1.22:20160
# Cop_wait_avg: 0.001 Cop_wait_addr: 192.168.1.22:20160
# Mem_max: 1748295
# Prepared: false
# Plan_from_cache: false
# Plan_from_binding: false
# Has_more_results: false
# KV_total: 0.001454032
# PD_total: 0.000128002
# Backoff_total: 0
# Write_sql_response_total: 0.000003483
# Succ: true
# Plan_digest: 5f7131616f66869e9858eca840a8adbec75143761f71f6055f20808ed4d2e955
desc analyze SELECT * FROM aaaa_bbbb_cccccc_tab FORCE INDEX (PRIMARY) WHERE 1 <= id ORDER BY id LIMIT 5000;