1. 本际云推荐 - 专业推荐VPS、服务器,IDC点评首页
  2. 云主机运维
  3. VPS运维

Tidb慢查询定位分析

TiDB慢查询定义

TiDB会将执行时间超过slow-threshold(默认值为300毫秒)的语句输出到slow-query-file(默认值:”tidb-slow.log”)日志文件中,用于帮助用户定位慢查询语句,分析和解决SQL执行的性能问题。

Tidb慢查询定位分析

使用自带工具分析查询

慢查询日志位置通过命令showvariableslike‘%slow%’;查看当前slowlog位置。慢查询日志格式解析如下:

  • Time:表示日志打印时间。
  • Query_time:表示执行这个语句花费的时间。
  • Query:表示SQL语句。
  • Digest:表示SQL语句的指纹。
  • Txn_start_ts:表示事务的开始时间戳,也是事务的唯一ID,可以用这个值在TiDB日志中查找事务相关的其他日志。
  • Is_internal:表示是否为TiDB内部的SQL语句。
  • User:表示执行语句的用户名。
  • Conn_ID:表示用户的链接ID,可以用类似con:3的关键字在TiDB日志中查找该链接相关的其他日志。
  • DB:表示执行语句时使用的database。
  • Coproc_avg:cop-task的平均执行时间。
  • Coproc_addr:执行时间最长的cop-task所在地址。

使用PT工具查看慢查询日志

使用pt-query-digest分析TiDB的慢日志。

  • 使用pt-query-digest查看tidb的慢日志同样可以分析慢查询
  • PT-QUERY-DIGEST用法示例如下:
  • 直接分析慢查询文件:pt-query-digest slow.log>slow_report.log
  • 分析最近12小时内的查询:pt-query-digest –since=12h slow.log>slow_report2.log
  • 分析特定时间范围内的查询:pt-query-digest slow.log –since 2017-01-07 09:30:00 –until 2017-01-07 10:00:00 >> slow_report3.log
  • 分析指定数据库中的查询:pt-query-digest –filter $event->{fingerprint} =~ m/^select/i slow.log > slow_report4.log
  • 查询所有所有的全表扫描或fulljoin的慢查询: pt-query-digest –filter (($event->{Full_scan}||””)eq”yes”)||(($event->{Full_join}||””)eq”yes”) slow.log>slow_report6.log

定位问题语句

在TiDB中并不是所有SLOW_QUERY的语句都是有问题的。真正会造成集群整体压力增大的,是那些process_time很大的语句。等待时间很大,但处理时间很小的语句通常不是问题语句,是因为被问题语句阻塞,在执行队列等待造成的响应时间过长。通过查找到问题语句后,通过对应的优化手段进行优化,如索引分析,统计信息收集等。

使用adminshowslow命令直接定位慢查询语句。输出内容详细说明如下:

  • start:SQL语句执行开始时间。
  • duration:SQL语句执行持续时间。
  • details:执行语

    原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/5848.html