mysqld_qslower - Trace MySQL server queries slower than a threshold.
mysqld_qslower PID [min_ms]
This traces queries served by a MySQL server, and prints those that exceed a
custom latency (query duration) threshold. By default, a minimum threshold of
1 millisecond is used. If a threshold of 0 is used, all queries are printed.
This uses User Statically-Defined Tracing (USDT) probes, a feature added to
MySQL for DTrace support, but which may not be enabled on a given MySQL
installation. See requirements.
Since this uses BPF, only the root user can use this tool.
CONFIG_BPF, bcc, and MySQL server with USDT probe support (when configuring the
PID Trace this mysqld PID.
- Minimum query latency (duration) to trace, in milliseconds.
Default is 1 ms.
- Trace MySQL server queries slower than 1 ms for PID
- # mysqld_qslower 1981
- Trace slower than 10 ms for PID 1981:
- # mysqld_qslower 1981 10
- Time of query start, in seconds.
- Process ID of the traced server.
- Milliseconds for the query, from start to end.
- Query string, truncated to 128 characters.
This adds low-overhead instrumentation to MySQL queries, and only emits output
data from kernel to user-level if they query exceeds the threshold. If the
server query rate is less than 1,000/sec, the overhead is expected to be
negligible. If the query rate is higher, test to gauge overhead.
This is from bcc.
Also look in the bcc distribution for a companion _examples.txt file containing
example usage, output, and commentary for this tool.
Unstable - in development.