热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MySQL显示SQL语句执行时间的实例详解

本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQLQueryProfiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。

本节内容:

显示SQL语句执行时间

MySQL 的 SQL 语法调整主要使用 EXPLAIN,不过该命令无法获取详细的 Ram(Memory)/CPU 等使用量.

于 MySQL 5.0.37 以上开始支持 MySQL Query Profiler, 可以查詢到此 SQL执行多长时间,并 並看出 CPU/Memory 使用量, 执行过程中 System lock, Table lock 花多少时间等.

效能分析主要分下述三种:

Bottleneck analysis - focuses on answering the questions: What is my database server waiting on; what is a user connection waiting on; what is a piece of SQL code waiting on?

Workload analysis - examines the server and who is logged on to determine the resource usage and activity of each.

Ratio-based analysis - utilizes a number of rule-of-thumb ratios to gauge performance of a database, user connection, or piece of code.

MySQL Query Profile 使用方法

启动:

mysql> set profiling=1; # 此命令于 MySQL 会于 information_schema 的 database 建立一个 PROFILING 的 table 来记录.

SQL profiles show

mysql> show profiles; # 从启动之后所有语法及使用时间, 含错误语法都会记录.

例如:

代码示例:

(root@jbxue.com) [test]> show profiles; # 注意 Query_ID, 下面执行时间统计等, 都是依 Query_ID 在记录

+----------+------------+---------------------------+

| Query_ID | Duration   | Query                     |

+----------+------------+---------------------------+

|        1 | 0.00090400 | show profile for query 1  |

|        2 | 0.00008700 | select * from users       |

|        3 | 0.00183800 | show tables               |

|        4 | 0.00027600 | mysql> show profiles      |

+----------+------------+---------------------------+

1,查询所有花费时间加总

代码示例:

mysql> select sum(duration) from information_schema.profiling where query_id=1; # Query ID = 1

+---------------+

| sum(duration) |

+---------------+

|      0.000447 |

+---------------+

2,查询各执行阶段花费多少时间

代码示例:

mysql> show profile for query 1; # Query ID = 1

+--------------------+------------+

| Status             | Duration   |

+--------------------+------------+

| (initialization)   | 0.00006300 |

| Opening tables     | 0.00001400 |

| System lock        | 0.00000600 |

| Table lock         | 0.00001000 |

| init               | 0.00002200 |

| optimizing         | 0.00001100 |

| statistics         | 0.00009300 |

| preparing          | 0.00001700 |

| executing          | 0.00000700 |

| Sending data       | 0.00016800 |

| end                | 0.00000700 |

| query end          | 0.00000500 |

| freeing items      | 0.00001200 |

| closing tables     | 0.00000800 |

| logging slow query | 0.00000400 |

+--------------------+------------+

3,查询各执行阶段花费的各种资源列表

代码示例:

mysql> show profile cpu for query 1; # Query ID = 1

+--------------------------------+----------+----------+------------+

| Status                         | Duration | CPU_user | CPU_system |

+--------------------------------+----------+----------+------------+

| (initialization)               | 0.000007 | 0        | 0          |

| checking query cache for query | 0.000071 | 0        | 0          |

| Opening tables                 | 0.000024 | 0        | 0          |

| System lock                    | 0.000014 | 0        | 0          |

| Table lock                     | 0.000055 | 0.001    | 0          |

| init                           | 0.000036 | 0        | 0          |

| optimizing                     | 0.000013 | 0        | 0          |

| statistics                     | 0.000021 | 0        | 0          |

| preparing                      | 0.00002  | 0        | 0          |

| executing                      | 0.00001  | 0        | 0          |

| Sending data                   | 0.015072 | 0.011998 | 0          |

| end                            | 0.000021 | 0        | 0          |

| query end                      | 0.000011 | 0        | 0          |

| storing result in query cache  | 0.00001  | 0        | 0          |

| freeing items                  | 0.000018 | 0        | 0          |

| closing tables                 | 0.000019 | 0        | 0          |

| logging slow query             | 0.000009 | 0        | 0          |

+--------------------------------+----------+----------+------------+

mysql> show profile IPC for query 1;

+--------------------------------+----------+---------------+-------------------+

| Status                         | Duration | Messages_sent | Messages_received |

+--------------------------------+----------+---------------+-------------------+

| (initialization)               | 0.000007 |             0 |                 0 |

| checking query cache for query | 0.000071 |             0 |                 0 |

| Opening tables                 | 0.000024 |             0 |                 0 |

| System lock                    | 0.000014 |             0 |                 0 |

| Table lock                     | 0.000055 |             0 |                 0 |

| init                           | 0.000036 |             0 |                 0 |

| optimizing                     | 0.000013 |             0 |                 0 |

| statistics                     | 0.000021 |             0 |                 0 |

| preparing                      | 0.00002  |             0 |                 0 |

| executing                      | 0.00001  |             0 |                 0 |

| Sending data                   | 0.015072 |             0 |                 0 |

| end                            | 0.000021 |             0 |                 0 |

| query end                      | 0.000011 |             0 |                 0 |

| storing result in query cache  | 0.00001  |             0 |                 0 |

| freeing items                  | 0.000018 |             0 |                 0 |

| closing tables                 | 0.000019 |             0 |                 0 |

| logging slow query             | 0.000009 |             0 |                 0 |

+--------------------------------+----------+---------------+-------------------+

4,其它属性列表

ALL - displays all information

BLOCK IO - displays counts for block input and output operations

CONTEXT SWITCHES - displays counts for voluntary and involuntary context switches

IPC - displays counts for messages sent and received

MEMORY - is not currently implemented

PAGE FAULTS - displays counts for major and minor page faults

SOURCE - displays the names of functions from the source code, together with the name and line number of the file in which the function occurs

SWAPS - displays swap counts

5,设定 Profiling 存的 Size:

代码示例:

mysql> show variables where variable_name='profiling_history_size'; # 预设是 15笔

关闭:

代码示例:

mysql> set profiling=0;



推荐阅读
  • binlog2sql,你该知道的数据恢复工具
    binlog2sql,你该知道的数据恢复工具 ... [详细]
  • 本文探讨了如何使用Scrapy框架构建高效的数据采集系统,以及如何通过异步处理技术提升数据存储的效率。同时,文章还介绍了针对不同网站采用的不同采集策略。 ... [详细]
  • 【MySQL】frm文件解析
    官网说明:http:dev.mysql.comdocinternalsenfrm-file-format.htmlfrm是MySQL表结构定义文件,通常frm文件是不会损坏的,但是如果 ... [详细]
  • 本文介绍了MySQL窗口函数的基本概念、应用场景及常见函数的使用方法。窗口函数在处理复杂查询时非常有用,例如计算每个用户的订单排名、环比增长率、以及动态聚合等。 ... [详细]
  • 1、编写一个Java程序在屏幕上输出“你好!”。programmenameHelloworld.javapublicclassHelloworld{publicst ... [详细]
  • 解决ADODB连接Access时出现80004005错误的方法
    本文详细介绍了如何解决在使用ADODB连接Access数据库时遇到的80004005错误,包括错误原因分析和具体的解决步骤。 ... [详细]
  • 本文详细解析了MySQL中常见的几种错误,并提供了具体的解决方法,帮助开发者快速定位和解决问题。 ... [详细]
  • 本文探讨了如何在PHP与MySQL环境中实现高效的分页查询,包括基本的分页实现、性能优化技巧以及高级的分页策略。 ... [详细]
  • 如何将955万数据表的17秒SQL查询优化至300毫秒
    本文详细介绍了通过优化SQL查询策略,成功将一张包含955万条记录的财务流水表的查询时间从17秒缩短至300毫秒的方法。文章不仅提供了具体的SQL优化技巧,还深入探讨了背后的数据库原理。 ... [详细]
  • 本文探讨了MySQL中的死锁现象及其监控方法,并介绍了如何通过配置和SQL语句调整来优化数据库性能。同时,还讲解了慢查询日志的配置与分析技巧。 ... [详细]
  • 数据输入验证与控件绑定方法
    本文提供了多种数据输入验证函数及控件绑定方法的实现代码,包括电话号码、数字、传真、邮政编码、电子邮件和网址的验证,以及报表绑定和自动编号等功能。 ... [详细]
  • 本文详细探讨了在Web开发中常见的UTF-8编码问题及其解决方案,包括HTML页面、PHP脚本、MySQL数据库以及JavaScript和Flash应用中的乱码问题。 ... [详细]
  • 本文探讨了在SQL Server 2008环境下,当尝试删除拥有数据库架构的用户时遇到的问题及解决方案,包括如何查询和更改架构所有权。 ... [详细]
  • 如何在U8系统中连接服务器并获取数据
    本文介绍了如何在U8系统中通过不同的方法连接服务器并获取数据,包括使用MySQL客户端连接实例的方法,如非SSL连接和SSL连接,并提供了详细的步骤和注意事项。 ... [详细]
  • Django与Python及其他Web框架的对比
    本文详细介绍了Django与其他Python Web框架(如Flask和Tornado)的区别,并探讨了Django的基本使用方法及与其他语言(如PHP)的比较。 ... [详细]
author-avatar
pet宠物情缘
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有