`

sql优化之:mysql的explain与profile

    博客分类:
  • sql
阅读更多
在mysql查询性能分析中最常用的就是explain了,profile查看一些具体的性能也是不错的
1. profile
我们可以先使用
SELECT @@profiling;
来查看是否已经启用profile,如果profilng值为0,可以通过
SET profiling = 1;
来启用。启用profiling之后,我们执行一条查询语句,比如:
select count(*) from roi_summary;
然后show profiles查看如下:
+----------+------------+----------------------------------+
| Query_ID | Duration       | Query                            |
+----------+------------+----------------------------------+
|        1       | 0.00021500 | select @@profiling               |
|        2       | 0.05522700 | select count(*) from roi_summary |
+----------+------------+----------------------------------+
2 rows in set (0.00 sec)
其中ID为5的语句是刚执行的查询语句,这时候我们执行show profile for query 2来查看这条语句的执行过程如下;
+--------------------------------+----------+
| Status                         | Duration |
+--------------------------------+----------+
| starting                       | 0.000021 |
| checking query cache for query | 0.000045 |
| checking permissions           | 0.000007 |
| Opening tables                 | 0.000011 |
| System lock                    | 0.000004 |
| Table lock                     | 0.000040 |
| init                           | 0.000012 |
| optimizing                     | 0.000005 |
| statistics                     | 0.000010 |
| preparing                      | 0.000010 |
| executing                      | 0.000005 |
| Sending data                   | 0.055021 |
| end                            | 0.000007 |
| end                            | 0.000004 |
| query end                      | 0.000003 |
| storing result in query cache | 0.000004 |
| freeing items                  | 0.000008 |
| closing tables                 | 0.000005 |
| logging slow query             | 0.000002 |
| cleaning up                    | 0.000003 |
+--------------------------------+----------+
20 rows in set (0.00 sec)
可以看出此条查询语句的执行过程及执行时间,总的时间约为0.05s。
这时候我们再执行一次
select count(*) from roi_summary;
show profiles;
+----------+------------+----------------------------------+
| Query_ID | Duration   | Query                            |
+----------+------------+----------------------------------+
|        1 | 0.00021500 | select @@profiling               |
|        2 | 0.05522700 | select count(*) from roi_summary |
|        3 | 0.00006000 | select count(*) from roi_summary |
+----------+------------+----------------------------------+
然后执行show profile for query 3来查看本条语句的执行过程
+--------------------------------+----------+
| Status                         | Duration |
+--------------------------------+----------+
| starting                       | 0.000016 |
| checking query cache for query | 0.000007 |
| checking privileges on cached | 0.000004 |
| checking permissions           | 0.000005 |
| sending cached result to clien | 0.000022 |
| logging slow query             | 0.000003 |
| cleaning up                    | 0.000003 |
+--------------------------------+----------+
可以看出此次第二次查询因为前一次的查询生成了cache,所以这次无需从数据库文件中再次读取数据而是直接从缓存中读取,结果查询时间比第一次快了N倍。
2. explain
至于EXPLAIN 官方文档讲解的相当详细了,
地址:dev.mysql.com/doc/refman/5.1/zh/optimization.html#explain

来自:nonb.cn
分享到:
评论

相关推荐

    《Effective MySQL之SQL语句最优化》手册

    通过分析查询执行计划、监控系统资源使用情况,以及使用性能分析工具(如MySQL的EXPLAIN、SHOW PROFILE等),可以定位性能瓶颈,进而进行针对性的优化。 总的来说,《Effective MySQL之SQL语句最优化》旨在帮助读者...

    【整理】数据库面试题索引sql优化+数据库SQL优化总结之百万级数据库优化

    接下来,"数据库SQL优化总结之百万级数据库优化.pdf"可能深入到实际的优化实践。 1. **数据库架构设计**:在百万级数据量下,合理的设计能避免性能瓶颈,如垂直分割、水平分割,以及读写分离策略。 2. **缓存与...

    程序员必备:SQL优化技巧

    SQL优化是程序员,尤其是数据库开发者和Java开发人员的必备技能,因为高效的SQL语句对于系统的性能至关重要。在数据量逐渐增长的过程中,不合理的SQL语句可能会成为系统性能的瓶颈。以下是一些关于SQL优化的关键点:...

    mysql优化(1)show命令 慢查询日志 explain profiling

    在本篇中,我们将聚焦于三个MySQL优化工具:`SHOW`命令、慢查询日志和`EXPLAIN`与`PROFILING`。 一、SHOW命令 `SHOW`命令是MySQL中的一个非常实用的工具,用于获取数据库系统的信息。它可以帮助我们查看数据库的...

    MySql数据库使用Sql调优

    MySQL数据库在日常开发中扮演着重要的角色,而SQL语句的优化则是提升数据库性能的关键环节。本文将深入探讨MySQL的基本架构及其对SQL调优的影响,同时介绍两种性能监控方法。 首先,MySQL的基本架构包括连接器、...

    2021年MySQL高级教程视频.rar

    ├第一天视频,网盘文件,永久连接 01.MySQL高级课程内容介绍.mp4 ...15.MySQL高级优化SQL步骤explain之keyrowsextra.avi 16.MySQL高级优化SQL步骤showprofile.avi 17.MySQL高级优化SQL步骤trace工具.avi 18. .....

    mysql 5.1.43 Jar 包

    8. **性能分析**:MySQL 5.1提供了更强大的性能分析工具,如`EXPLAIN`语句和`SHOW PROFILE`,帮助开发者和DBA优化查询性能。 9. **安全增强**:可能包括了对SQL注入攻击的防护措施,以及对用户权限管理和加密功能的...

    mysql高级视频教程百度云(2019).txt

    51.MySQL高级_用Show Profile进行sql分析.avi 50.MySQL高级_批量插入数据脚本.avi 49.MySQL高级_慢查询日志.avi 48.MySQL高级_为排序使用索引OrderBy优化.avi 47.MySQL高级_in和exists.avi 46.MySQL高级_...

    sql优化思路.pptx

    2. **EXPLAIN分析**:使用EXPLAIN关键字配合SQL语句,可以查看MySQL的执行计划,包括连接类型(type)、预计读取行数(rows)、过滤比例(filtered)、额外信息(extra)和实际使用的索引(key)等。 - **type**:不同的连接...

    MySQL经典面试题55道

    MySQL经典面试题55道 MySQL是一种关系型数据库管理系统,广泛...20. MYSQL数据库服务器性能分析的方法命令:包括EXPLAIN、SHOW PROFILE、SHOW STATUS等命令。 知识点:MYSQL数据库服务器性能分析的方法、SQL语句。

    慢sql分析,慢日志设置,慢Sql分析工具

    慢sql分析,慢日志设置,慢Sql分析工具:mysql.slow_log 表日志的操作;慢 sql 的 explain 分析;explain 结果的 type 类型举例;索引失效举例;慢 sql 的 profile 分析;慢 sql 的 optimizer_trace 分析;慢日志...

    MySQL进阶之Query优化分析

    ### MySQL进阶之Query优化分析 #### 一、MySQL性能影响因素 MySQL作为一种广泛使用的数据库管理系统,在实际的应用场景中,其性能表现直接影响着业务的稳定性和用户体验。影响MySQL性能的因素众多,主要包括以下几...

    sql优化流程

    `EXPLAIN`可以帮助我们理解MySQL如何处理SQL查询,包括查询表的顺序、是否使用了索引、扫描行数等关键信息。在没有索引或者索引使用不当的情况下,查询效率可能会大大降低,因此,分析`EXPLAIN`结果是判断是否需要...

    从零开始带你成为MySQL实战优化高手PDF0-63.zip

    本教程共分为63讲,覆盖了MySQL的基础概念、安装配置、数据类型、SQL语句、索引优化、查询优化、存储引擎、事务与并发控制、备份与恢复、性能监控、高可用架构等多个关键领域,旨在让读者从理论到实践全面掌握MySQL...

    java数据库之sql优化

    2. **Explain与慢SQL分析**:利用`EXPLAIN`命令可以帮助我们理解SQL执行计划,从而找到可能存在的问题。例如,是否存在索引未被使用的情况,是否存在过多的表连接等。 3. **使用SHOW PROFILE**:这是一种更深层次的...

    从零开始带你成为MySQL实战优化高手PDF117-130.rar

    10. **性能监控与分析**:使用工具如`EXPLAIN`和`SHOW PROFILE`来分析查询性能,找出瓶颈并进行优化。同时,监控系统状态如CPU、内存和磁盘I/O,以便及时发现问题。 以上是根据标题和描述推测的可能涵盖的MySQL实战...

    mysql-5.5.46.tar.gz 源码包

    9. **性能分析工具**:MySQL 5.5内置了性能分析工具,如`EXPLAIN`语句帮助优化查询,`SHOW PROFILE`用于查看查询执行的详细时间。 10. **字符集支持**:MySQL 5.5增强了对多语言和Unicode字符集的支持,包括全面的...

    【MySQL】SQL性能分析 (七).pdf

    以上内容涵盖了MySQL数据库性能优化的关键领域,包括SQL执行频率分析、慢查询日志分析、Profile详情分析以及EXPLAIN执行计划分析。通过这些工具和技术的应用,不仅可以提高数据库性能,还能确保应用程序的高效稳定...

Global site tag (gtag.js) - Google Analytics