如何获取数据库sql语句,例如insert into

【概述】 场景 + 问题概述
环境是3个tidb,3个pd,3个tikv。
我通过pandas ,data.to_sql把数据写入tidb,就一行数据写入tidb居然用了5秒钟。
我想抓取下具体写入的sql是什么,好用执行计划看下问题在哪里。


image
【背景】 做过哪些操作

【现象】 业务和数据库现象
打印出连接数据库的时间,连接数据库很快,问题就出在写入上面。

【统计信息是否最新】
【执行计划内容】
【 SQL 文本、schema 以及 数据分布】
手动执行的sql应该这样的,INSERT into task_send_cmd (agentId,taskType,taskId,args) values(‘aa’,‘aa’,‘aa’,‘aa’)
【业务影响】
无法下发命令
【TiDB 版本】
v5.0.2

1赞

可以在TiDB Dashboard中的慢语句里查询

  • 描述下集群机器、磁盘配置

  • 上传 slow query 日志,导出 TiDB 和 TiKV-Details 监控快照https://docs.pingcap.com/zh/tidb/stable/exporting-grafana-snapshots

慢查询不都是select吗,没看见有insert

集群3个tikv,pd,tidb,cpu 12c,内存32G,磁盘ssd

不是的,都会统计到的。如果跟踪不到,可以调小阈值

也可以直接在查询分析器中执行语句,查询慢语句

这个阈值哪里调,麻烦指导下

tidb-zabbix-TiKV-Details_2021-06-28T01_23_58.575Z.zip (928.1 KB) tidb-zabbix-TiDB_2021-06-28T01_21_19.693Z.json (2.5 MB)

设置下面的系统变量就可以了

tidb_slow_log_threshold

  • 作用域:INSTANCE
  • 默认值:300
  • 输出慢日志的耗时阈值。当查询大于这个值,就会当做是一个慢查询,输出到慢查询日志。默认为 300 ms。

示例:

set tidb_slow_log_threshold = 200;

300ms已经很小了,照理能找到,我搜了下慢查询的表里没有insert的sql,这下不知道问题出在哪里了

那就只能先和 qizheng 看一下日志了

1赞

监控看各类 SQL 的延迟 duration 基本在几百 ms,没有发现写入5秒的情况,大概是什么时间出现的呢

查了一上午,我后面用pymysql库直接插入sql就没问题了,应该是pandas的tosql问题

能否帮忙整理一下问题以及结论哈,感谢

这个问题太奇怪了,现在还在查数据库的问题。