查询慢 SQL 记录
DRDS 将执行时间超过1秒的 SQL 定义为慢 SQL。DRDS 中的慢 SQL 分为两种:逻辑慢 SQL 和 物理慢 SQL。
- 逻辑慢 SQL:应用发送到 DRDS 的慢 SQL
- 物理慢 SQL:DRDS 发送到 RDS 的慢 SQL
每个 DRDS 节点最多保存 5000 条慢 SQL 记录,超过限制数量的慢 SQL 明细会被滚动删除。
语法
SHOW FULL {SLOW | PHYSICAL_SLOW} [WHERE where_condition]
[ORDER BY col_name [ASC | DESC], ...]
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
解释
SHOW FULL SLOW 显示的是逻辑慢 SQL,即应用发送到 DRDS 的 SQL。
其结果集的各列含义如下:
- TRACE_ID: 该 SQL 的唯一标记,同一个逻辑 SQL 以及该逻辑 SQL 产生的物理 SQL 的 TRACE_ID 相同,同时 TRACE_ID 也会以注释的形式发送到 RDS,在 RDS 的 SQL 明细中可以根据 TRACE_ID 找到该 SQL;
- HOST: 发送该 SQL 的客户端的 IP,注意:在 VPC 模式下可能无法获取客户端 IP;
- START_TIME: DRDS 收到这个 SQL 的时间;
- EXECUTE_TIME: DRDS 执行该 SQL 消耗的时间;
- AFFECT_ROW: 该 SQL 返回的记录数或者影响的行数;
- SQL: 执行的语句。
- SHOW FULL PHYSICAL_SLOW指的是物理慢 SQL,即 DRDS 发送到 RDS(MySQL) 的 SQL。
其结果集的各列含义如下:
示例一:在 DRDS 上定位到慢 SQL,如何找到相应的物理慢 SQL?
通过一些条件,例如执行时间,SQL 字符串匹配等方式来获取我们想要的慢 SQL;
mysql> show full slow where `SQL` like '%select sleep(50)%';
+-----------------+-----------+-------------------------+--------------+------------+------------------+
| TRACE_ID | HOST | START_TIME | EXECUTE_TIME | AFFECT_ROW | SQL |
+-----------------+-----------+-------------------------+--------------+------------+------------------+
| ae0e565b8c00000 | 127.0.0.1 | 2017-03-29 19:28:43.028 | 50009 | 1 | select sleep(50) |
+-----------------+-----------+-------------------------+--------------+------------+------------------+
1 row in set (0.02 sec)
根据逻辑慢 SQL 中获取到的TRACE_ID,执行SHOW FULL PHYSICAL_SLOW指令获取这个 SQL 的物理执行情况;
mysql> show full physical_slow where trace_id = 'ae0e565b8c00000';
+-----------------+----------------------------------------------------+-----------------------------------------------+------------------------+--------------+------------------+-------------------------+------------------------+------------+------------------+
| TRACE_ID | GROUP_NAME | DBKEY_NAME | START_TIME | EXECUTE_TIME | SQL_EXECUTE_TIME | GETLOCK_CONNECTION_TIME | CREATE_CONNECTION_TIME | AFFECT_ROW | SQL |
+-----------------+----------------------------------------------------+-----------------------------------------------+------------------------+--------------+------------------+-------------------------+------------------------+------------+------------------+
| ae0e565b8c00000 | PRIV_TEST_1489167306631PJAFPRIV_TEST_APKK_0000_RDS | rdso6g5b6206sdq832ow_priv_test_apkk_0000_nfup | 2017-03-29 19:27:53.02 | 50001 | 50001 | 0 | 0 | 1 | select sleep(50) |
+-----------------+----------------------------------------------------+-----------------------------------------------+------------------------+--------------+------------------+-------------------------+------------------------+------------+------------------+
1 row in set (0.01 sec)