MySQL中如何使用profile分析SQL执行状态

如题所述

打开profile mysql select @@have_profiling; +------------------+ | @@have_profiling | +------------------+ | YES       | +------------------+ 1 row in set (0.00 sec) mysql select @@profiling; +-------------+ | @@profiling | +-------------+ |      0 | +-------------+ 1 row in set (0.00 sec) mysql set session profiling=1; Query OK, 0 rows affected (0.00 sec) mysql select @@profiling; +-------------+ | @@profiling | +-------------+ |      1 | +-------------+ 1 row in set (0.00 sec) 使用profile分析SQL,可以看到执行两次后,Send data和sending cached result to clien执行效率的变化 mysql select count(*) from sakila.payment; +----------+ | count(*) | +----------+ |  16049 | +----------+ 1 row in set (0.03 sec) mysql show profiles; +----------+------------+-------------------------------------+ | Query_ID | Duration  | Query                | +----------+------------+-------------------------------------+ |    1 | 0.00020400 | select @@profiling         | |    2 | 0.00008900 | select count(*) from payment    | |    3 | 0.00006800 | show databaes            | |    4 | 0.02102800 | show databases           | |    5 | 0.02847600 | select count(*) from sakila.payment | 本栏目更多精彩内容:http://www.bianceng.cn/database/MySQL/ +----------+------------+-------------------------------------+ 5 rows in set (0.00 sec) mysql show profile for query 5; +--------------------------------+----------+ | Status             | Duration | +--------------------------------+----------+ | starting            | 0.000030 | | Waiting for query cache lock  | 0.000005 | | checking query cache for query | 0.000043 | | checking permissions      | 0.000007 | | Opening tables         | 0.000027 | | System lock          | 0.000010 | | Waiting for query cache lock  | 0.000010 | | init              | 0.000000 | | optimizing           | 0.023255 | | statistics           | 0.000118 | | preparing           | 0.000041 | | executing           | 0.000033 | | Sending data          | 0.003833 | | end              | 0.000054 | | query end           | 0.000045 | | closing tables         | 0.000045 | | freeing items         | 0.000072 | | Waiting for query cache lock  | 0.000033 | | freeing items         | 0.000785 | | Waiting for query cache lock  | 0.000016 | | freeing items         | 0.000002 | | storing result in query cache | 0.000005 | | logging slow query       | 0.000003 | | cleaning up          | 0.000004 | +--------------------------------+----------+ 24 rows in set (0.00 sec) mysql select count(*) from sakila.payment; +----------+ | count(*) | +----------+ |  16049 | +----------+ 1 row in set (0.00 sec) mysql show profiles; +----------+------------+-------------------------------------+ | Query_ID | Duration  | Query                | +----------+------------+-------------------------------------+ |    1 | 0.00020400 | select @@profiling         | |    2 | 0.00008900 | select count(*) from payment    | |    3 | 0.00006800 | show databaes            | |    4 | 0.02102800 | show databases           | |    5 | 0.02847600 | select count(*) from sakila.payment | |    6 | 0.00006900 | select count(*) from sakila.payment | +----------+------------+-------------------------------------+ 6 rows in set (0.00 sec) mysql show profile for query 6; +--------------------------------+----------+ | Status             | Duration | +--------------------------------+----------+ | starting            | 0.000029 | | Waiting for query cache lock  | 0.000004 | | checking query cache for query | 0.000007 | | checking privileges on cached | 0.000004 | | checking permissions      | 0.000008 | | sending cached result to clien | 0.000012 | | logging slow query       | 0.000002 | | cleaning up          | 0.000003 | +--------------------------------+----------+ 8 rows in set (0.00 sec)
温馨提示:内容为网友见解,仅供参考
无其他回答

MySQL中如何使用profile分析SQL执行状态
打开profile mysql select @@have_profiling; +---+ | @@have_profiling | +---+ | YES       | +---+ 1 row in set (0.00 sec) mysql select @@profiling; +---+ | @@profiling | +---+ |      0 |...

MySQL中如何查看“慢查询”,如何分析执行SQL的效率?
(1)、Windows下开启MySQL慢查询MySQL在Windows系统中的配置文件一般是是my.ini找到[mysqld]下面加上代码如下log-slow-queries = F:\/MySQL\/log\/mysqlslowquery。loglong_query_time = 2(2)、Linux下启用MySQL慢查询MySQL在Windows系统中的配置文件一般是是my.cnf找到[mysqld]下面加上代码如下log-slow-queries=\/dat...

MySql中如何使用explain查询SQL的执行计划
首先接收到查询SQL之后,数据库会立即分配一个线程对其进行处理,第一步查询处理器会对SQL查询进行优化,优化后会生成执行计划,然后交由计划执行器来执行。 计划执行器需要访问更底层的事务管理器,存储管理器来操作数据,他们各自的分工各有不同,最终通过调用物理层的文件获取到查询结构信息,将最终结果响...

如何实时监控mysql中的SQL语句的执行情况?
iterations:该参数指定 pt-stalk 在触发收集几次后退出,默认会一直运行。run-time:触发收集后,该参数指定收集多长时间的数据,默认 30 秒。sleep:该参数指定在触发收集后,sleep 多久后继续监控,默认 300 秒。interval:指定状态参数的检查频率,判断是否需要触发收集,默认 1 秒。dest:监控数据存放...

性能分析之1:profiles及Query Profiling Using Performance Schema...
分析SQL耗时所在,使用MySQL提供的profiles功能,通过`show profiles`查看当前会话中SQL语句执行的资源消耗情况,以辅助SQL调优。默认状态下,此功能关闭,保存最近15次的运行结果,最大保存数量为100次,设置为0可完全禁用。可使用`profiling`会话变量控制profiles功能的开启与关闭。`SHOW PROFILE`和`SHOW ...

...定位低效率SQL、explain分析、show profile分析以及trace追踪_百度...
在MySQL8.0中,阅读官方文档至关重要,尤其是新特性部分,如1.3 What Is New MySQL8.0。对比旧版本,找出改进之处。慢查询日志和`show processlist`是实时监控SQL执行状态的工具,这对于定位低效率SQL至关重要。定位问题后,可以使用`show profile`分析SQL执行过程,查看时间消耗和资源使用情况。`trace...

Mysql中一条更新的SQL是如何执行的?
更新操作的执行流程如下:首先查询目标数据,如果有缓存,使用缓存;修改name字段为jim,通过存储引擎接口将数据写入内存,并记录redo log;执行器接收到通知后记录binlog,将redo log设置为commit状态;更新操作完成。使用两阶段提交(XA)确保数据安全,避免MySQL重启后数据不一致的情况。binlog在两个日志的...

MySQL中explan的使用方法及优化技巧mysql中explan
1.基本语法 Expln语句的基本语法如下所示:Expln SELECT statement ;其中,SELECT statement是SQL查询语句。例如,查询表employees中所有数据的Expln语句如下:Expln SELECT * FROM employees ;2.执行Expln语句 执行Expln语句有多种方式,根据需要可以灵活选择。常见的方式有:(1)在MySQL命令行中使用Expln关键...

如何在mysql shell命令中执行sql命令行
1. import_table建立 3306 端口的新连接我这里切换为 python 模式清空掉示例表 Ytt.tl1import_table 有两个参数,第一个参数定义导入文件的路径,第二个定义相关选项,比如导入的格式,并发的数量等。定义文件路径(参数1)定义选项(参数2)执行导入:只花了不到 17 秒,比传统 mysqlimport 快了不少...

MySQL中的SHOW语句了解表结构索引进程状态等信息mysql中show语句
如果想查看当前MySQL服务器上的进程状态,可以使用如下命令:SHOW PROCESSLIST;这个命令会返回当前正在运行的进程的列表,其中包含了进程ID、用户名、当前执行的SQL语句、运行时间等信息。示例如下:mysql> SHOW PROCESSLIST;+—–+———+———–+&...

相似回答
大家正在搜