热门标签 | 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;



推荐阅读
  • 本章将深入探讨移动 UI 设计的核心原则,帮助开发者构建简洁、高效且用户友好的界面。通过学习设计规则和用户体验优化技巧,您将能够创建出既美观又实用的移动应用。 ... [详细]
  • 前言--页数多了以后需要指定到某一页(只做了功能,样式没有细调)html ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 本文详细探讨了JDBC(Java数据库连接)的内部机制,重点分析其作为服务提供者接口(SPI)框架的应用。通过类图和代码示例,展示了JDBC如何注册驱动程序、建立数据库连接以及执行SQL查询的过程。 ... [详细]
  • 深入理解Redis的数据结构与对象系统
    本文详细探讨了Redis中的数据结构和对象系统的实现,包括字符串、列表、集合、哈希表和有序集合等五种核心对象类型,以及它们所使用的底层数据结构。通过分析源码和相关文献,帮助读者更好地理解Redis的设计原理。 ... [详细]
  • 通过Web界面管理Linux日志的解决方案
    本指南介绍了一种利用rsyslog、MariaDB和LogAnalyzer搭建集中式日志管理平台的方法,使用户可以通过Web界面查看和分析Linux系统的日志记录。此方案不仅适用于服务器环境,还提供了详细的步骤来确保系统的稳定性和安全性。 ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • Python自动化处理:从Word文档提取内容并生成带水印的PDF
    本文介绍如何利用Python实现从特定网站下载Word文档,去除水印并添加自定义水印,最终将文档转换为PDF格式。该方法适用于批量处理和自动化需求。 ... [详细]
  • 本文探讨了dbforms框架的核心设计理念及其背后的技术原理,详细分析了该框架如何通过其独特的设计模式来简化开发流程,并为开发者提供了优化使用方法的建议。 ... [详细]
  • 在Java中,this是一个引用当前对象的关键字。如何通过this获取并显示其所指向的对象的属性和方法?本文详细解释了this的用法及其背后的原理。 ... [详细]
  • FinOps 与 Serverless 的结合:破解云成本难题
    本文探讨了如何通过 FinOps 实践优化 Serverless 应用的成本管理,提出了首个 Serverless 函数总成本估计模型,并分享了多种有效的成本优化策略。 ... [详细]
  • 探讨如何从数据库中按分组获取最大N条记录的方法,并分享新年祝福。本文提供多种解决方案,适用于不同数据库系统,如MySQL、Oracle等。 ... [详细]
  • 选择适合生产环境的Docker存储驱动
    本文旨在探讨如何在生产环境中选择合适的Docker存储驱动,并详细介绍不同Linux发行版下的配置方法。通过参考官方文档和兼容性矩阵,提供实用的操作指南。 ... [详细]
  • MySQL 高性能实战教程
    本课程深入探讨 MySQL 的架构、性能调优、索引优化、查询优化及高可用性等关键领域。通过实际案例和详细讲解,帮助学员掌握提升 MySQL 数据库性能的方法与技巧。 ... [详细]
  • 在创建新的Android项目时,您可能会遇到aapt错误,提示无法打开libstdc++.so.6共享对象文件。本文将探讨该问题的原因及解决方案。 ... [详细]
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社区 版权所有