全部产品
云市场

慢 SQL 相关

更新时间:2019-09-09 16:23:37

慢 SQL 相关的 SHOW 语句如下:

SHOW [FULL] SLOW [WHERE expr] [limit expr]

执行时间超过 1 秒的 SQL 语句是慢 SQL,逻辑慢 SQL 是指应用发送到 DRDS 的慢 SQL。

  • SHOW SLOW: 查看自 DRDS 启动或者上次执行CLEAR SLOW以来最慢的 100 条逻辑慢 SQL(注意,这里记录的是最慢的 100 个,缓存在 DRDS 系统中,当实例重启或者执行 CLEAR SLOW 时会丢失);
  • SHOW FULL SLOW: 查看实例启动以来记录的所有逻辑慢 SQL(持久化到 DRDS 的内置数据库中)。该记录数有一个上限(具体数值跟购买的实例规格相关),DRDS 会滚动删除比较老的慢 SQL 语句。实例的规格如果是 4C4G 的话,最多记录 10000 条慢 SQL 语句(包括逻辑慢 SQL 和 物理慢 SQL);实例的规格如果是 8C8G 的话,最多记录 20000 条慢 SQL 语句(包括逻辑慢 SQL 和 物理慢 SQL),其它规格依此类推。

重要列详解:

  • HOST:来源 IP;
  • START_TIME:执行开始时间;
  • EXECUTE_TIME:执行时间;
  • AFFECT_ROW:对于 DML 语句是影响行数;对于查询语句是返回的记录数。
  1. mysql> show slow where execute_time > 1000 limit 1;
  2. +-----------+---------------------+--------------+------------+-----------+
  3. | HOST | START_TIME | EXECUTE_TIME | AFFECT_ROW | SQL |
  4. +-----------+---------------------+--------------+------------+-----------+
  5. | 127.0.0.1 | 2016-03-16 13:02:57 | 2785 | 7 | show rule |
  6. +-----------+---------------------+--------------+------------+-----------+
  7. 1 row in set (0.02 sec)

SHOW [FULL] PHYSICAL_SLOW [WHERE expr] [limit expr]

执行时间超过1秒的 SQL 语句是慢 SQL,物理慢 SQL 是指 DRDS 发送到 RDS 的慢 SQL。如何排查慢 SQL 可以参考文档 排查 DRDS 慢 SQL

  • SHOW PHYSICAL_SLOW: 查看自 DRDS 启动或者上次执行CLEAR SLOW以来最慢的 100 条物理慢 SQL(注意,这里记录的是最慢的 100 个,缓存在 DRDS 系统中,当实例重启或者执行 CLEAR SLOW 时会丢失);
  • SHOW FULL PHYSICAL_SLOW: 查看实例启动以来记录的所有物理慢 SQL(持久化到 DRDS 的内置数据库中)。该记录数有一个上限(具体数值跟购买的实例规格相关),DRDS 会滚动删除比较老的慢 SQL 语句。实例的规格如果是 4C4G 的话,最多记录 10000 条慢 SQL 语句(包括逻辑慢 SQL 和 物理慢 SQL);实例的规格如果是 8C8G 的话,最多记录 20000 条慢 SQL 语句(包括逻辑慢 SQL 和 物理慢 SQL),其它规格依此类推。

重要列详解:

  • GROUP_NAME:数据库分组;
  • START_TIME:执行开始时间;
  • EXECUTE_TIME:执行时间;
  • AFFECT_ROW:对于 DML 语句是影响行数;对于查询语句是返回的记录数。
  1. mysql> show physical_slow;
  2. +----------------+-----------------------------------+---------------------+--------------+------------------+-------------------------+------------------------+------------+-----------------+
  3. | GROUP_NAME | DBKEY_NAME | START_TIME | EXECUTE_TIME | SQL_EXECUTE_TIME | GETLOCK_CONNECTION_TIME | CREATE_CONNECTION_TIME | AFFECT_ROW | SQL |
  4. +----------------+-----------------------------------+---------------------+--------------+------------------+-------------------------+------------------------+------------+-----------------+
  5. | TDDL5_00_GROUP | db218249098_sqa_zmf_tddl5_00_3309 | 2016-03-16 13:05:38 | 1057 | 1011 | 0 | 0 | 1 | select sleep(1) |
  6. +----------------+-----------------------------------+---------------------+--------------+------------------+-------------------------+------------------------+------------+-----------------+
  7. 1 row in set (0.01 sec)

CLEAR SLOW

清空自 DRDS 启动或者上次执行CLEAR SLOW以来最慢的 100 条逻辑慢 SQL 和 最慢的 100 条物理慢 SQL。

注意:SHOW SLOWSHOW PHYSICAL_SLOW展示的是最慢的 100 个 SQL,如果长时间未执行CLEAR SLOW,可能都是非常老的 SQL 了,一般执行过 SQL 优化之后,建议都执行下CLEAR SLOW,等待系统运行一段时间,再查看下慢 SQL 的优化效果。

  1. mysql> clear slow;
  2. Query OK, 0 rows affected (0.00 sec)