MySQL使用performance_schema诊断sql语句性能

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: Mysql数据库打开sql profile可以查看sql 语句各个阶段的性能,但仅限于当前会话中执行的sql语句。如果想要查看其它会话sql,可以使用performance_schema功能。

1 检查MySQL中激活的actor(即监控的主机),

mysql> SELECT *
    -> FROM performance_schema.setup_actors;
+------+------+------+---------+---------+
| HOST | USER | ROLE | ENABLED | HISTORY |
+------+------+------+---------+---------+
| %    | %    | %    | YES     | YES     |
+------+------+------+---------+---------+
1 row in set (0.00 sec)

2 打开对sql语句的监视,可以针对某一类sql语句单数打开监控

mysql> UPDATE performance_schema.setup_instruments
    -> SET ENABLED = 'YES', TIMED = 'YES'
    -> WHERE NAME LIKE '%statement/%';
Query OK, 0 rows affected (0.12 sec)
Rows matched: 213  Changed: 0  Warnings: 0

UPDATE performance_schema.setup_instruments
SET ENABLED = 'YES', TIMED = 'YES'
WHERE NAME LIKE '%stage/%';

3 查看是否打开

select name, enabled from performance_schema.setup_instruments where name like 'statement%' or name like 'stage%';

4 打开statement和stage consumer

update setup_consumers set ENABLED='YES' where name='events_stages_history_long';
update setup_consumers set ENABLED='YES' where name='events_stages_history';
update setup_consumers set ENABLED='YES' where name='events_stages_current';

5 检查所需consumer是否被打开

select * from performance_schema.setup_consumers where name like '%stage%';
+----------------------------+---------+
| NAME                       | ENABLED |
+----------------------------+---------+
| events_stages_current      | YES     |
| events_stages_history      | YES     |
| events_stages_history_long | YES     |
+----------------------------+---------+
3 rows in set (0.00 sec)

6 运行sql查询

select * from a limit 100 ;

7 从performance_schema.events_statements_history_long查询sql语句的event id

SELECT EVENT_ID, TRUNCATE(TIMER_WAIT/1000000000000,6) as Duration, SQL_TEXT

-> FROM performance_schema.events_statements_history_long;
EVENT_ID Duration SQL_TEXT
1156 0.0020 truncate table performance_schema.events_statements_history_long
1 0.0001 select @@version_comment limit 1
13 0.0002 SELECT DATABASE()
25 0.0000 NULL
28 0.0010 show databases
48 0.0010 show tables
74 0.0001 NULL
79 0.0000 NULL
84 0.0000 NULL
89 0.0000 NULL
94 0.0000 NULL
99 0.0025 select * from a limit 10000

12 rows in set (0.00 sec)
8 查询这条语句每个阶段的执行时间

mysql> SELECT event_name AS Stage, TRUNCATE(TIMER_WAIT / 1000000000000, 6) AS Duration

-> FROM performance_schema.events_stages_history_long
-> WHERE NESTING_EVENT_ID = 99;
Stage Duration
stage/sql/starting 0.0000
stage/sql/Executing hook on transaction begin. 0.0000
stage/sql/starting 0.0000
stage/sql/checking permissions 0.0000
stage/sql/Opening tables 0.0000
stage/sql/init 0.0000
stage/sql/System lock 0.0000
stage/sql/optimizing 0.0000
stage/sql/statistics 0.0000
stage/sql/preparing 0.0000
stage/sql/executing 0.0022
stage/sql/end 0.0000
stage/sql/query end 0.0000
stage/sql/waiting for handler commit 0.0000
stage/sql/closing tables 0.0000
stage/sql/freeing items 0.0000
stage/sql/cleaning up 0.0000

17 rows in set (0.00 sec)
可以看到每个sql语句每个阶段的执行时间

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
19天前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
56 3
|
14天前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
|
14天前
|
关系型数据库 分布式数据库 数据库
阿里云数据库收费价格:MySQL、PostgreSQL、SQL Server和MariaDB引擎费用整理
阿里云数据库提供多种类型,包括关系型与NoSQL,主流如PolarDB、RDS MySQL/PostgreSQL、Redis等。价格低至21元/月起,支持按需付费与优惠套餐,适用于各类应用场景。
|
1月前
|
SQL 监控 关系型数据库
SQL优化技巧:让MySQL查询快人一步
本文深入解析了MySQL查询优化的核心技巧,涵盖索引设计、查询重写、分页优化、批量操作、数据类型优化及性能监控等方面,帮助开发者显著提升数据库性能,解决慢查询问题,适用于高并发与大数据场景。
|
19天前
|
缓存 监控 关系型数据库
使用MYSQL Report分析数据库性能(上)
最终建议:当前系统是完美的读密集型负载模型,优化重点应放在减少行读取量和提高数据定位效率。通过索引优化、分区策略和内存缓存,预期可降低30%的CPU负载,同时保持100%的缓冲池命中率。建议每百万次查询后刷新统计信息以持续优化
82 6
|
19天前
|
缓存 监控 关系型数据库
使用MYSQL Report分析数据库性能(中)
使用MYSQL Report分析数据库性能
75 1
|
1月前
|
SQL 监控 关系型数据库
查寻MySQL或SQL Server的连接数,并配置超时时间和最大连接量
以上步骤提供了直观、实用且易于理解且执行的指导方针来监管和优化数据库服务器配置。务必记得,在做任何重要变更前备份相关配置文件,并确保理解每个参数对系统性能可能产生影响后再做出调节。
193 11
|
19天前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供高性价比、稳定安全的云数据库服务,适用于多种行业与业务场景。
|
10月前
|
SQL 存储 关系型数据库
MySQL进阶突击系列(01)一条简单SQL搞懂MySQL架构原理 | 含实用命令参数集
本文从MySQL的架构原理出发,详细介绍其SQL查询的全过程,涵盖客户端发起SQL查询、服务端SQL接口、解析器、优化器、存储引擎及日志数据等内容。同时提供了MySQL常用的管理命令参数集,帮助读者深入了解MySQL的技术细节和优化方法。
|
SQL 存储 关系型数据库
MySQL下使用SQL命令进行表结构与数据复制实践
MySQL下使用SQL命令进行表结构与数据复制实践
240 0

推荐镜像

更多