TIDB4中,怎样知道一个SQL所需要消耗的IO

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:

【TiDB 版本】
4.0
【问题描述】
在mysql可能通过开启profie来查看消耗的IO,但TIDB中并不支持,TIDB中有类似于下面命令的功能吗?用取SQL所需要消耗的IO
set profiling=1;

目前似乎没有可以直接查询的方法。可以到 github 提个 issue 看看

是指比如说 tidb-server 进程的 DISK_READ,DISK_WRITE 吗

你好,是一条SQL的IO,目前只能看查询计划的统计信息

1、目前一条 sql 消耗的 IO 资源,比如物理读、逻辑读这些当前没有完备的数据字典来展示,在 5.0 RC 版本中,新增了 下面的新特性来进一步展示 sql 资源的消耗:

  • EXPLAIN ANALYZE 语句显示的算子执行详情中新增算子发送的 RPC 请求数、处理锁冲突耗时、网络延迟、RocksDB 已删除数据的扫描量、RocksDB 缓存命中情况等 #18663
  • 慢查询日志中自动记录 SQL 语句执行时的详细执行状态,输出的信息与 EXPLAIN ANALYZE 语句输出信息保持一致,例如各个算子消耗的时间、处理数据行数、发送的 RPC 请求数等 #15009

2、如果一条 sql 的执行时间超过 1s ,在 TiKV 的 log 中会出现 slow-query 关键字,并打印出 block cache,block read 的相关信息,也可以做一定的参考:

[2019/11/19 07:12:48.105 +00:00] [INFO] [tracker.rs:150] [slow-query] [internal_key_skipped_count=430147] [internal_delete_skipped_count=0] [block_cache_hit_count=1513] [block_read_count=0] [block_read_byte=0] [scan_first_range=“Some(start: 7480000000000352F75F7280000000000C7F55 end: 7480000000000352F75F7280000000000FC777)”] [scan_ranges=1] [scan_iter_processed=430148] [scan_iter_ops=430150] [scan_is_desc=false] [tag=select] [table_id=217847] [txn_start_ts=412653333471821827] [wait_time=22.218s] [total_process_time=3.005s] [peer_id=ipv4:172.31.42.102:43406] [region_id=2892968]`

3、如果上述均无法更好的了解一条 sql 的资源消耗情况,可以到 github 提交相关的 feature issue,请官方的老师评估看下:

https://github.com/pingcap/tidb/issues