mysql profile及其对应表使用

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: --mysql的profile可用于查看一个sql的具体消耗show profile all for query 1\G;--profiling has a default value...
--mysql的profile可用于查看一个sql的具体消耗
show profile all for query 1\G;

--profiling has a default value of 0 (OFF)
mysql> SELECT @@profiling;
+-------------+
| @@profiling |
+-------------+
|           0 |
+-------------+

mysql> SET profiling = 1;


--profile 的查询id可能通过如下sql找到
mysql> show profiles;      
+----------+-------------+-------------------------+
| Query_ID | Duration    | Query                   |
+----------+-------------+-------------------------+
|        1 |  0.03872950 | select count(*) from t1 |
|        2 | 10.93732000 | select count(*) from t2 |

-- 变量 profiling_history_size 记录了保存profile记录的条数
mysql> select @@profiling_history_size;
+--------------------------+
| @@profiling_history_size |
+--------------------------+
|                       15 |
+--------------------------+

MariaDB [test]> show profile all for query 1\G;
*************************** 1. row ***************************
             Status: starting
           Duration: 0.000080
           CPU_user: 0.000000
         CPU_system: 0.000000
  Context_voluntary: 0
Context_involuntary: 0
       Block_ops_in: 0
      Block_ops_out: 0
      Messages_sent: 0
  Messages_received: 0
  Page_faults_major: 0
  Page_faults_minor: 0
              Swaps: 0
    Source_function: NULL
        Source_file: NULL
        Source_line: NULL
*************************** 2. row ***************************
             Status: checking permissions
           Duration: 0.000008
           CPU_user: 0.000000
         CPU_system: 0.000000
  Context_voluntary: 0
Context_involuntary: 0
       Block_ops_in: 0
      Block_ops_out: 0
      Messages_sent: 0
  Messages_received: 0
  Page_faults_major: 0
  Page_faults_minor: 0
              Swaps: 0
    Source_function: check_access
        Source_file: sql_parse.cc
        Source_line: 6051
		

--在mysql5.7之后,profile信息将逐渐被废弃,mysql推荐使用performance schema
--setup_actors用于记录哪些信息会被记录
As of MySQL 5.7.8, the setup_actors table can be used to limit the collection of historical events by host, user, or account to reduce runtime overhead and the amount of data collected in history tables
mysql> SELECT * FROM performance_schema.setup_actors; 
+------+------+------+---------+---------+
| HOST | USER | ROLE | ENABLED | HISTORY |
+------+------+------+---------+---------+
| %    | %    | %    | YES     | YES     |
+------+------+------+---------+---------+		

--当然也可以修改它
UPDATE performance_schema.setup_actors SET ENABLED = 'NO', HISTORY = 'NO' WHERE HOST = '%' AND USER = '%';
INSERT INTO performance_schema.setup_actors (HOST,USER,ROLE,ENABLED,HISTORY) VALUES('localhost','test_user','%','YES','YES');

--其中还有一些初始化的表,具体信息请参阅mysql官方文档
mysql> SELECT table_schema,table_name FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE 'setup%' and table_schema='performance_schema';  
+--------------------+-------------------+
| table_schema       | table_name        |
+--------------------+-------------------+
| performance_schema | setup_actors      |
| performance_schema | setup_consumers   |
| performance_schema | setup_instruments |
| performance_schema | setup_objects     |
| performance_schema | setup_timers      |
+--------------------+-------------------+
5 rows in set (0.00 sec)

--开启以下性能记录
 UPDATE performance_schema.setup_instruments SET ENABLED = 'YES', TIMED = 'YES' WHERE NAME LIKE '%statement/%';
 UPDATE performance_schema.setup_instruments SET ENABLED = 'YES', TIMED = 'YES' WHERE NAME LIKE '%stage/%';
 UPDATE performance_schema.setup_consumers SET ENABLED = 'YES' WHERE NAME LIKE '%events_statements_%';
 UPDATE performance_schema.setup_consumers SET ENABLED = 'YES' WHERE NAME LIKE '%events_stages_%';

--查看指定sql的event_id
mysql> SELECT EVENT_ID, TRUNCATE(TIMER_WAIT/1000000000000,6) as Duration, SQL_TEXT FROM performance_schema.events_statements_history_long WHERE SQL_TEXT like '%select count(*) from t1%';
+----------+----------+-------------------------+
| EVENT_ID | Duration | SQL_TEXT                |
+----------+----------+-------------------------+
|       78 | 0.022121 | select count(*) from t1 |
+----------+----------+-------------------------+

--查看sql消耗如下:
mysql> SELECT event_name AS Stage, TRUNCATE(TIMER_WAIT/1000000000000,6) AS Duration FROM performance_schema.events_stages_history_long WHERE NESTING_EVENT_ID=78; 
+--------------------------------+----------+
| Stage                          | Duration |
+--------------------------------+----------+
| stage/sql/starting             | 0.000093 |
| stage/sql/checking permissions | 0.000007 |
| stage/sql/Opening tables       | 0.000024 |
| stage/sql/init                 | 0.000018 |
| stage/sql/System lock          | 0.000013 |
| stage/sql/optimizing           | 0.021755 |
| stage/sql/executing            | 0.000015 |
| stage/sql/end                  | 0.000004 |
| stage/sql/query end            | 0.000016 |
| stage/sql/closing tables       | 0.000015 |
| stage/sql/freeing items        | 0.000153 |
| stage/sql/cleaning up          | 0.000001 |
+--------------------------------+----------+

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
Oracle 关系型数据库 MySQL
【mysql】—— 表的内连和外连
【mysql】—— 表的内连和外连
|
1月前
|
存储 关系型数据库 MySQL
【mysql】—— 表的增删改查
【mysql】—— 表的增删改查
|
1月前
|
分布式计算 DataWorks 关系型数据库
DataWorks支持将ODPS表拆分并回流到MySQL的多个库和表中
【2月更文挑战第14天】DataWorks支持将ODPS表拆分并回流到MySQL的多个库和表中
56 8
|
1月前
|
SQL 关系型数据库 MySQL
Mysql基础第二十四天,创建表和操纵表
Mysql基础第二十四天,创建表和操纵表
29 0
Mysql基础第二十四天,创建表和操纵表
|
2月前
|
存储 JSON 关系型数据库
一文搞懂MySQL表字段类型长度的含义
一文搞懂MySQL表字段类型长度的含义
34 0
|
17天前
|
存储 SQL 关系型数据库
【MySQL】4. 表的操作
【MySQL】4. 表的操作
19 0
|
3月前
|
SQL 存储 关系型数据库
【MySQL】如何通过DDL去创建和修改员工信息表
【MySQL】如何通过DDL去创建和修改员工信息表
40 1
|
1月前
|
SQL 关系型数据库 MySQL
【MySQL】— —熟练掌握用SQL语句实现数据库和基本表的创建。熟练掌握MySQL的安装、客户端登录方法;熟练掌握MySQL的编码、数据类型等基础知识;掌握实体完整性的定义和维护方法、掌握参照完整性
【MySQL】— —熟练掌握用SQL语句实现数据库和基本表的创建。熟练掌握MySQL的安装、客户端登录方法;熟练掌握MySQL的编码、数据类型等基础知识;掌握实体完整性的定义和维护方法、掌握参照完整性
99 1
|
15天前
|
存储 关系型数据库 MySQL
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
|
15天前
|
缓存 关系型数据库 MySQL
MySQL 查询优化:提速查询效率的13大秘籍(索引设计、查询优化、缓存策略、子查询优化以及定期表分析和优化)(中)
MySQL 查询优化:提速查询效率的13大秘籍(索引设计、查询优化、缓存策略、子查询优化以及定期表分析和优化)(中)