开发指南—DAL语句—SHOW—慢SQL相关

本文涉及的产品
云原生数据库 PolarDB 分布式版,标准版 2核8GB
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 本文介绍了慢SQL相关的SHOW语句。

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

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

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

示例:


mysql> show slow where execute_time > 1000 limit 1;
+-----------+---------------------+--------------+------------+-----------+
| HOST      | START_TIME          | EXECUTE_TIME | AFFECT_ROW | SQL       |
+-----------+---------------------+--------------+------------+-----------+
| 127.0.0.1 | 2016-03-16 13:02:57 |         2785 |          7 | show rule |
+-----------+---------------------+--------------+------------+-----------+
1 row in set (0.02 sec)

重要列详解:

  • HOST:来源IP;
  • START_TIME:执行开始时间;
  • EXECUTE_TIME:执行时间;
  • AFFECT_ROW:对于DML语句是影响行数;对于查询语句是返回的记录数。

SHOW [FULL] PHYSICAL\_SLOW [WHERE expr] [limit expr]

执行时间超过1秒的SQL语句是慢SQL,物理慢SQL是指PolarDB-X发送到RDS的慢SQL。

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

示例:


mysql> show physical_slow;

+----------------+-----------------------------------+---------------------+--------------+------------------+-------------------------+------------------------+------------+-----------------+
| GROUP_NAME | DBKEY_NAME | START_TIME | EXECUTE_TIME | SQL_EXECUTE_TIME | GETLOCK_CONNECTION_TIME | CREATE_CONNECTION_TIME | AFFECT_ROW | SQL |
+----------------+-----------------------------------+---------------------+--------------+------------------+-------------------------+------------------------+------------+-----------------+
| TDDL5_00_GROUP | db218249098_sqa_zmf_tddl5_00_3309 | 2016-03-16 13:05:38 | 1057 | 1011 | 0 | 0 | 1 | select sleep(1) |
+----------------+-----------------------------------+---------------------+--------------+------------------+-------------------------+------------------------+------------+-----------------+
1 row in set (0.01 sec)

重要列详解:

  • GROUP_NAME:数据库分组;
  • START_TIME:执行开始时间;
  • EXECUTE_TIME:执行时间;
  • AFFECT_ROW:对于DML语句是影响行数;对于查询语句是返回的记录数。

CLEAR SLOW

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

示例:


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


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

相关实践学习
Polardb-x 弹性伸缩实验
本实验主要介绍如何对PolarDB-X进行手动收缩扩容,了解PolarDB-X 中各个节点的含义,以及如何对不同配置的PolarDB-x 进行压测。
相关文章
|
6月前
|
SQL 存储 缓存
SQL语句简介
MySQL 基础架构分析 下图是 MySQL 的一个简要架构图,从下图你可以很清晰的看到用户的 SQL 语句在 MySQL 内部是如何执行的。 先简单介绍一下下图涉及的一些组件的基本作用帮助大家理解这幅图,在后面会详细介绍到这些组件的作用。 连接器: 身份认证和权限相关(登录 MySQL 的时候)。 查询缓存: 执行查询语句的时候,会先查询缓存(MySQL 8.0 版本后移除,因为这个功能不太实用)。 分析器: 没有命中缓存的话,SQL 语句就会经过分析器,分析器说白了就是要先看你的 SQL 语句要干嘛,再检查你的 SQL 语句语法是否正确。 优化器: 按照 MySQL 认为最优的方案去执
28 0
|
2月前
|
SQL 存储 数据库
SQL数据开发
SQL数据开发
|
9月前
|
SQL 存储 运维
|
9月前
|
SQL 前端开发 数据库
案例02-sql语句优化
案例02-sql语句优化
|
10月前
|
SQL Oracle Java
使用 SQL NOWAIT 的最佳方式
由于所有的主要数据库都支持此功能,Hibernate提供了一个NOWAIT选项,可以在不同数据库上调用这个功能,而且不影响代码的数据库可移植性。
214 0
|
SQL 分布式计算 Oracle
【SQL开发实战技巧】系列(一):关于SQL不得不说的那些事
复合索引的字段顺序,会影响查询速度,创建复合索引做SQL优化的一般原则是,如果两个字段在WHERE子句中使用频率相同,则将最具选择性的字段排在最前面,以下是分析结果: 原SQL进行了两次全表扫描,优化后的SQL减少一次全表扫描,提高了查询效率。cusomer和customer_detail两个表的cust_id字段经常出现在where子句中,
【SQL开发实战技巧】系列(一):关于SQL不得不说的那些事
|
SQL 关系型数据库 数据库
开发指南—DAL语句—SHOW—慢SQL相关
本文介绍了慢SQL相关的SHOW语句。
|
SQL 缓存 Cloud Native
开发指南—DAL语句—SQL限流
为应对突发的数据库请求流量、资源消耗过高的语句访问以及SQL访问模型的变化等问题,PolarDB-X提供了节点级别的SQL限流功能来限制造成上述问题的SQL执行,从而保证实例的持续稳定运行。本文介绍如何使用SQL限流功能。
131 0
一行SQL代码能做什么?(上)
最近在知乎上看到一个问题:一行代码可以做什么?答题者数万计,都是一些非常“高端”的操作,就在想一行SQL代码能做什么呢?
一行SQL代码能做什么?(上)
一行SQL代码能做什么?(上)
最近在知乎上看到一个问题:一行代码可以做什么?答题者数万计,都是一些非常“高端”的操作,就在想一行SQL代码能做什么呢? SQL一行代码其实有很多很多,一些常见的比如: SELECT * FROM TableName INSERT INTO TableName VALUES(...) TRUNCATE TABLE TableName ..... 这些就没什么意思了,我们来给大家看一些比较“高级”的。
一行SQL代码能做什么?(上)