`

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
分享到:
评论

相关推荐

    2021年MySQL高级教程视频.rar

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

    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高级_...

    尚硅谷Java视频教程_MySQL高级视频

    尚硅谷_MySQL高级_用Show Profile进行sql分析 · 52.尚硅谷_MySQL高级_全局查询日志 · 53.尚硅谷_MySQL高级_数据库锁理论概述 · 54.尚硅谷_MySQL高级_读锁案例讲解 · 55.尚硅谷_MySQL高级_读锁案例讲解2 · ...

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

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

    Mysql利用profiles来查看SQL语句执行计划.rar

    要使用该功能,mysql的版本必须在5.0.37版本以上。否则只能使用explain 的方式来检查。 profiling 功能可以了解到cpu io 等更详细的信息。 show profile 的格式如下: SHOW PROFILE [type [, type] ... ] [FOR ...

    mysql lunix的安装

    这个是MySQL5.5再contos6下的安装方法 MySQL 是...索引的优化策略,了解innodb和myisam存储引擎,熟悉MySQL锁机制,能熟练配置MySQL主从复制,熟练掌握explain、show profile、慢查询日志等日常SQL诊断和性能分析策略。

    2018最新Mysql高级视频教程

    MySQL是目前流行的关系型数据库管理系统,在WEB...索引的优化策略,了解innodb和myisam存储引擎,熟悉MySQL锁机制,能熟练配置MySQL主从复制,熟练掌握explain、show profile、慢查询日志等日常SQL诊断和性能分析策略。

    【MySQL面试题干货集合】20个经典常用面试题-需要找工作的一定要看 共11页.pdf

    2 MySQL中MyISAM与InnoDB的区别,至少5点 1 2.1 MyISAM与InnoDB的5个不同点; 1 2.2 InnoDB引擎的4大特性 1 2.3 两者select count(*)哪个更快,为什么? 2 3 MySQL中varchar与char的区别以及varchar(50)中的50代表的...

    mysql 显示SQL语句执行时间的代码

    MySQL 的 SQL 語法調整主要都是使用 EXPLAIN , 但是這個並沒辦法知道詳細的 Ram(Memory)/CPU 等使用量. 於 MySQL 5.0.37 以上開始支援 MySQL Query Profiler, 可以查詢到此 SQL 會執行多少時間, 並看出 CPU/Memory ...

    04尚硅谷_MySQL高级_BD版.docx

    MySQL是目前流行的关系型数据库管理系统,在WEB...索引的优化策略,了解innodb和myisam存储引擎,熟悉MySQL锁机制,能熟练配置MySQL主从复制,熟练掌握explain、show profile、慢查询日志等日常SQL诊断和性能分析策略。

    MySql整理(基础进阶运维).docx

    索引分类,语法,使用规则,设计原则,SQL优化,插入数据,主键优化,orderby优化,groupby优化,limit优化,count优化,update优化(避免行锁升级为表锁),视图/存储过程/触发器,视图,存储过程,锁(重点),概述,全局锁,表级锁,...

    通俗易懂的MySQL高级教程(含配套资料)

    本教程为授权出品 MySQL是目前流行的关系型...索引的优化策略,了解innodb和myisam存储引擎,熟悉MySQL锁机制,能熟练配置MySQL主从复制,熟练掌握explain、show profile、慢查询日志等日常SQL诊断和性能分析策略。

    java8集合源码分析-pangdan:面试相关技能

    java8 集合源码分析 pangdan 算法和数据结构 数组、链表、二叉树、队列、栈的各种操作...优化(explain,慢查询,show profile) 数据库的范式。 分库分表,主从复制,读写分离。 Nosql相关(redis和memcached区别之

    phpBB v3.2.2 正體中文.zip

    [PHPBB3-15224] - 使用Mysql全文搜索索引时,“仅限邮件文本”中的高级搜索与SQL错误崩溃; [PHPBB3-15245] - 通过app.php访问时原子提要中的相对URL被破坏; [PHPBB3-15262] - 3.2.1中的WebFontConfig google家族...

Global site tag (gtag.js) - Google Analytics