`

MYSQL监控-自带工具Query Profiler的使用

 
阅读更多
原文地址:http://my.oschina.net/jiyayun/blog/85010



Query Profiler是MYSQL自带的一种query诊断分析工具,通过它可以分析出一条SQL语句的性能瓶颈在什么地方。通常我们是使用的explain,以及slow query log都无法做到精确分析,但是Query Profiler却可以定位出一条SQL语句执行的各种资源消耗情况,比如CPU,IO等,以及该SQL执行所耗费的时间等。不过该工具只有在MYSQL 5.0.37以及以上版本中才有实现。
默认的情况下,MYSQL的该功能没有打开,需要自己手动启动。可以通过如下方法查看当前mysql服务器是否开启了该功能。
mysql> show variables like '%profiling%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| profiling              | OFF   |
| profiling_history_size | 15    |
+------------------------+-------+
2 rows in set (0.03 sec)
profiling参数值为OFF,说明没有打开该功能。
profiling_history_size参数值为15表示,记录最近15次的查询历史。该值可以修改。
下边说说如何打开profiling功能:
MYSQL提示符下执行如下命令:
mysql> set profiling=1;
Query OK, 0 rows affected (0.00 sec)
然后再次检验下执行的效果:
mysql> show variables like '%profiling%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| profiling              | ON    |
| profiling_history_size | 15    |
+------------------------+-------+
2 rows in set (0.00 sec)
profiling值为ON说明已经启动该功能。
下边说说如何使用show profiles;
1.首先执行一查询语句:
mysql> select * from user;
+------+-----------+
| id   | name      |
+------+-----------+
|   22 | abc       |
|  223 | dabc      |
| 2232 | dddabc    |
|   45 | asdsagd   |
|   23 | ddddddddd |
|   22 | ddd       |
|   28 | sssddd    |
+------+-----------+
7 rows in set (0.06 sec)
2.通过show profiles命令查看系统中多个query的概要信息:
mysql> show profiles;
+----------+------------+-----------------------------------+
| Query_ID | Duration   | Query                             |
+----------+------------+-----------------------------------+
|        1 | 0.00013600 | set profiling=1                   |
|        2 | 0.00092300 | show variables like '%profiling%' |
|        3 | 0.08506075 | show databases                    |
|        4 | 0.02698550 | SELECT DATABASE()                 |
|        5 | 0.07408475 | show tables                       |
|        6 | 0.05769725 | select * from user                |
+----------+------------+-----------------------------------+
6 rows in set (0.01 sec)
其中Query_ID表示查询ID,也就是个编号,Duration表示对应的query语句执行的时间,单位是秒,query表示具体的query语句。我们可以看到刚才我们最后执行的select * from user语句执行的时间是0.05769725,单位是秒,也就是57ms
3.获取单个query的详细profile信息,可以通过如下语句:
mysql> show profile cpu,block io for query 6;
+--------------------+----------+----------+------------+--------------+---------------+
| Status             | Duration | CPU_user | CPU_system | Block_ops_in | Block_ops_out |
+--------------------+----------+----------+------------+--------------+---------------+
| starting           | 0.014438 |     NULL |       NULL |         NULL |          NULL |
| Opening tables     | 0.042860 |     NULL |       NULL |         NULL |          NULL |
| System lock        | 0.000007 |     NULL |       NULL |         NULL |          NULL |
| Table lock         | 0.000012 |     NULL |       NULL |         NULL |          NULL |
| init               | 0.000019 |     NULL |       NULL |         NULL |          NULL |
| optimizing         | 0.000005 |     NULL |       NULL |         NULL |          NULL |
| statistics         | 0.000018 |     NULL |       NULL |         NULL |          NULL |
| preparing          | 0.000011 |     NULL |       NULL |         NULL |          NULL |
| executing          | 0.000004 |     NULL |       NULL |         NULL |          NULL |
| Sending data       | 0.000232 |     NULL |       NULL |         NULL |          NULL |
| end                | 0.000007 |     NULL |       NULL |         NULL |          NULL |
| query end          | 0.000005 |     NULL |       NULL |         NULL |          NULL |
| freeing items      | 0.000073 |     NULL |       NULL |         NULL |          NULL |
| logging slow query | 0.000003 |     NULL |       NULL |         NULL |          NULL |
| cleaning up        | 0.000004 |     NULL |       NULL |         NULL |          NULL |
+--------------------+----------+----------+------------+--------------+---------------+
15 rows in set (0.02 sec)
总结:Query Profiler对于SQL性能分析和诊断费用有用。另外,该命令还有如下参数可以选择:
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
使用SQLyog等工具可以直接看到Profiler页面,输入 Show profiles;语句后会显示更为详细的信息。
分享到:
评论

相关推荐

    mysql-installer-community-5.7.36.1

    - **查询优化器改进**:引入了Query Profiler,帮助用户分析和优化查询性能,同时增强了Cost-Based Optimizer(CBO)。 - **JSON支持**:添加了对JSON数据类型的原生支持,使得MySQL能够处理非结构化数据。 - **...

    NET-Memory-Profiler 4-使用手册

    通过对 .NET Memory Profiler 4 的详细介绍,我们可以看出它是一款功能强大且易于使用的内存分析工具。无论是初学者还是高级开发人员,都能利用它有效地解决内存泄漏和其他内存相关的问题,从而提高应用程序的整体...

    async-profiler-1.8.1-linux-x64.tar.gz

    1. 安装:首先,我们需要将"async-profiler-1.8.1-linux-x64"解压,然后将目录路径添加到环境变量,以便于后续调用。 2. 配置:配置async-profiler的参数,如采样频率、采样类型等,可以通过命令行选项或者配置文件...

    前端开源库-v8-profiler-node8

    "前端开源库-v8-profiler-node8"是专为前端开发者设计的一个工具,它针对Node.js 8.x版本提供了V8 JavaScript引擎的性能分析功能。这个开源库的核心是V8 profiler,它是Google Chrome浏览器内核V8引擎的一部分,用于...

    yet-another-django-profiler, Django 性能分析中间件和管理命令.zip

    yet-another-django-profiler, Django 性能分析中间件和管理命令 yet-another-django-profiler自述文件 然而,另一个 Django 探查器尝试合并多年来创建的它的他 Django 分析实用程序的最佳特性。 ( 有关更多背景信息...

    nvidia-visual-profiler-mac-11.1-28936279.dmg

    适用于MacOS的NVIDIA nvvp(nvidia-visual-profiler)工具,11.1版本。

    android-ndk-profiler-prebuilt-3.3

    "android-ndk-profiler-prebuilt-3.3"便是为解决这一问题而生的工具,它是一个专门为Android NDK开发的代码性能分析利器,能够帮助开发者深入剖析应用程序的运行状况,找出CPU占用率高的函数以及频繁调用的函数,...

    gae-mini-profiler-2.0.2.zip

    gae-java-mini-profiler.zip,google a p p engine java runtime的mini profiler(灵感来自于https://github.com/kamens/gae_mini_profiler上的python gae_mini_profiler和...

    Python库 | google-cloud-profiler-3.0.5.tar.gz

    总结来说,`google-cloud-profiler-3.0.5.tar.gz`是一个强大的工具,用于在Google Cloud环境中提升Python应用的性能。它简化了性能监控过程,为开发者提供了深入的洞察,以优化代码并确保高效运行。

    maven-buildtime-profiler:Maven构建时间分析器

    Maven BuildTime事件探查器 通常,您会遇到这样的问题:在大型版本中,您需要查找时间消耗在哪里。 这是一个实现,它收集所有阶段和mojo执行的所有信息,并在构建结束时进行汇总输出。...buildtime-profiler-0.

    PyPI 官网下载 | yet-another-django-profiler-1.0.0.tar.gz

    《PyPI官网下载:yet-another-django-profiler-1.0.0.tar.gz——深入理解Django性能优化工具》 在Python的世界里,Django框架以其高效、易用和全面的功能深受开发者喜爱。然而,随着项目的复杂度提升,性能问题可能...

    rack-perftools_profiler, 使用 perftools.rb 配置 rack 兼容应用程序的中间件.zip

    rack-perftools_profiler, 使用 perftools.rb 配置 rack 兼容应用程序的中间件 Rack::PerftoolsProfiler使用 perftools.rb 配置机架兼容应用的中间件快速启动假定应用程序使用 Rails 3 ( 你已经在下一节中安装了需求...

    statsd-jvm-profiler, 使用StatsD和其他度量后端的简单 JVM.zip

    statsd-jvm-profiler, 使用StatsD和其他度量后端的简单 JVM statsd-jvm-profiler statsd-jvm-profiler是一个将分析数据发送到StatsD的JVM代理探查器。 灵感来自于 ,它主要用于分析Hadoop作业,但可以用于任何JVM...

    mysql-refman-8.0.zip

    手册将介绍如何使用MySQL的内置监控工具,如Performance Schema和SHOW STATUS命令,以及如何集成第三方监控工具,如Nagios、Zabbix和Prometheus。 **8. 客户端使用方法** MySQL提供了多种客户端工具,如mysql命令行...

    Snapdragon Profiler v2020.3 - Windows Installer

    Snapdragon Profiler是一款由高通公司开发的专业性能分析工具,主要针对使用Snapdragon芯片的Android设备,特别是针对GPU性能进行深度分析。这款工具是2020.3版本的Windows安装程序,它提供了丰富的功能,帮助开发者...

    Mysql课件教程 辅助日志分析工具SQLProfiler DBMonster的安装和配置 DBMonster命令示例-压数据

    本文将详细讲解如何使用SQLProfiler和DBMonster这两个工具,它们分别是MySQL数据库的辅助日志分析工具和数据压力测试工具。 **SQLProfiler** 是一个用于记录和分析SQL执行情况的工具,特别适合于性能调优。它通过...

    Mysql 远程跟踪执行工具

    用了Mysql 之后,发现就没有远程跟踪的工具了..所以本人利用C#开发一个工具类似于mssqlprofiler的跟踪工具.可以远程跟踪执行的语句. 在程序中屏蔽了一些系统语句.所以很清爽,不会错过一个有用的语句,比较稳定.支持...

    SQL 调试工具 - Express Profiler

    SQL 自带的 SQL Profiler首先是standard版本才有,所以不是免费的,还有就是设置起来太麻烦,后来又搜了SqlExpressTrace,也是要配置。还是这个Express Profiler好,打开就用,很快就能监测到你的Sql是怎么跑的了。

    clj-async-profiler:基于https:github.comjvm-profiling-toolsasync-profiler构建的可嵌入Clojure分析器

    `clj-async-profiler` 是Clojure开发者的重要工具,它提供了对JVM性能的深度洞察,尤其是在并发环境下的性能优化。通过使用异步采样和火焰图,它能够帮助开发者高效地发现并解决性能问题,提升Clojure应用的运行效率...

    Intel vtune profiler 使用指导

    为了使用 Intel VTune Profiler,首先需要安装该工具。在 Linux 系统上,需要安装 sampling drivers,以便能够收集性能数据。安装过程中,需要按照相应的步骤来设置系统,以便进行 GPU 分析。具体步骤包括: 1. ...

Global site tag (gtag.js) - Google Analytics