MySQL如何使用profiling

技术MySQL如何使用profiling这篇文章将为大家详细讲解有关MySQL如何使用profiling,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Mysql SQL优化工具我们常使

本文将详细解释如何在MySQL中为每个人使用概要分析。边肖觉得挺实用的,就分享给大家参考。希望你看完这篇文章能有所收获。

我们经常使用explain来分析sql的执行情况,并根据执行计划评估sql的性能消耗瓶颈,而Mysql sql Profiling则为我们提供了SQL执行过程中CPU/io/swap/内存的详细使用情况以及各个进程的执行时间消耗。主要用途为1:查看SQL执行消耗瓶颈位置2、查看sql的执行过程,每步操作在具体哪个源码文件的什么位置

下面简单介绍一下它的用法:

mysql 5.0.37之后支持性能分析,mysql5.7之后可以用performance_schema (25.18.1使用performance schema的查询性能分析)代替,但是通过会话级跟踪对1、相关变量更方便。

(root : localhost : wed 11月15日16:32:50 2017)[performance _ schema]显示像“%profil%”这样的变量;

- -

|变量名|值|

- -

| have_profiling | YES | ##是否支持profile函数?

| profiling | ON | ##是否打开配置文件,0|off表示关闭,1|on表示打开。

| profiling_history_size | 15 | ##默认情况下,显示的历史sql数量为最新的15个,最大值为100个。

-2.检查语法。

您可以通过帮助显示配置文件查看帮助文档。

Show profiles可以查看最近15次sql执行的历史记录。

单击(此处)折叠或打开。

显示配置文件[类型[,类型].]

[用于查询n]

[LIMIT row_count [OFFSET offset]]

:型

全部

|块输入输出

|上下文开关

|中央处理器

| IPC

| MEMORY

| PAGE FAULTS

| SOURCE

|互换

3、使用实例
1)开启profling
(root:localhost:Wed Nov 15 16:37:00 2017)[dbtest]> set profiling=1;
Query OK, 0 rows affected, 1 warning (0.00 sec)

(root:localhost:Wed Nov 15 16:37:14 2017)[dbtest]> show variables like '%profil%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| have_profiling         | YES   |
| profiling              | ON    |
| profiling_history_size | 15    |
+------------------------+-------+
3 rows in set (0.00 sec)
2)查看所有profiling记录的sql
(root:localhost:Wed Nov 15 16:37:16 2017)[dbtest]> show profiles;
+----------+------------+--------------------------------+
| Query_ID | Duration   | Query                          |
+----------+------------+--------------------------------+
|        1 | 0.00089900 | show variables like '%profil%' |
+----------+------------+--------------------------------+
3)查看指定profiling记录的sql
(root:localhost:Wed Nov 15 16:39:14 2017)[dbtest]> show profile for query 2 ;
+----------------------+----------+
| Status               | Duration |
+----------------------+----------+
| starting             | 0.000103 |
| checking permissions | 0.000008 |
| Opening tables       | 0.000060 |
| init                 | 0.000023 |
| System lock          | 0.000011 |
| optimizing           | 0.000007 |
| statistics           | 0.000016 |
| preparing            | 0.000015 |
| executing            | 0.000007 |
| Sending data         | 0.000063 |
| end                  | 0.000004 |
| query end            | 0.000010 |
| closing tables       | 0.000012 |
| freeing items        | 0.000016 |
| logging slow query   | 0.000003 |
| logging slow query   | 0.000070 |
| cleaning up          | 0.000014 |
+----------------------+----------+
4)查看指定profiling记录的sql,并且显示cpu/block io/的步骤消耗信息

(root:localhost:Wed Nov 15 16:43:47 2017)[dbtest]> show profile cpu ,block io for query 2;
+----------------------+----------+----------+------------+--------------+---------------+
| Status               | Duration | CPU_user | CPU_system | Block_ops_in | Block_ops_out |
+----------------------+----------+----------+------------+--------------+---------------+
| starting             | 0.000103 |     NULL |       NULL |         NULL |          NULL |
| checking permissions | 0.000008 |     NULL |       NULL |         NULL |          NULL |
| Opening tables       | 0.000060 |     NULL |       NULL |         NULL |          NULL |
| init                 | 0.000023 |     NULL |       NULL |         NULL |          NULL |
| System lock          | 0.000011 |     NULL |       NULL |         NULL |          NULL |
| optimizing           | 0.000007 |     NULL |       NULL |         NULL |          NULL |
| statistics           | 0.000016 |     NULL |       NULL |         NULL |          NULL |
| preparing            | 0.000015 |     NULL |       NULL |         NULL |          NULL |
| executing            | 0.000007 |     NULL |       NULL |         NULL |          NULL |
| Sending data         | 0.000063 |     NULL |       NULL |         NULL |          NULL |
| end                  | 0.000004 |     NULL |       NULL |         NULL |          NULL |
| query end            | 0.000010 |     NULL |       NULL |         NULL |          NULL |
| closing tables       | 0.000012 |     NULL |       NULL |         NULL |          NULL |
| freeing items        | 0.000016 |     NULL |       NULL |         NULL |          NULL |
| logging slow query   | 0.000003 |     NULL |       NULL |         NULL |          NULL |
| logging slow query   | 0.000070 |     NULL |       NULL |         NULL |          NULL |
| cleaning up          | 0.000014 |     NULL |       NULL |         NULL |          NULL |
+----------------------+----------+----------+------------+--------------+---------------+

5)查看指定profiling记录的sql,并且显示每步源码文件信息
(root:localhost:Wed Nov 15 16:44:09 2017)[dbtest]> show profile  source for query 2;
+----------------------+----------+-----------------------+------------------+-------------+
| Status               | Duration | Source_function       | Source_file      | Source_line |
+----------------------+----------+-----------------------+------------------+-------------+
| starting             | 0.000103 | NULL                  | NULL             |        NULL |
| checking permissions | 0.000008 | check_access          | sql_parse.cc     |        5635 |
| Opening tables       | 0.000060 | open_tables           | sql_base.cc      |        5029 |
| init                 | 0.000023 | mysql_prepare_select  | sql_select.cc    |        1051 |
| System lock          | 0.000011 | mysql_lock_tables     | lock.cc          |         304 |
| optimizing           | 0.000007 | optimize              | sql_optimizer.cc |         138 |
| statistics           | 0.000016 | optimize              | sql_optimizer.cc |         381 |
| preparing            | 0.000015 | optimize              | sql_optimizer.cc |         504 |
| executing            | 0.000007 | exec                  | sql_executor.cc  |         110 |
| Sending data         | 0.000063 | exec                  | sql_executor.cc  |         187 |
| end                  | 0.000004 | mysql_execute_select  | sql_select.cc    |        1106 |
| query end            | 0.000010 | mysql_execute_command | sql_parse.cc     |        5307 |
| closing tables       | 0.000012 | mysql_execute_command | sql_parse.cc     |        5383 |
| freeing items        | 0.000016 | mysql_parse           | sql_parse.cc     |        6676 |
| logging slow query   | 0.000003 | log_slow_do           | sql_parse.cc     |        2077 |
| logging slow query   | 0.000070 | log_slow_do           | sql_parse.cc     |        2078 |
| cleaning up          | 0.000014 | dispatch_command      | sql_parse.cc     |        1878 |
+----------------------+----------+-----------------------+------------------+-------------+
17 rows in set, 1 warning (0.00 sec)

6)查看指定profiling记录的sql,并且显示所有的步骤消耗信息

(root:localhost:Wed Nov 15 16:40:34 2017)[dbtest]> show profile all for query 2  \G
*************************** 1. row ***************************
             Status: starting
           Duration: 0.000103
           CPU_user: NULL
         CPU_system: NULL
  Context_voluntary: NULL
Context_involuntary: NULL
       Block_ops_in: NULL
      Block_ops_out: NULL
      Messages_sent: NULL
  Messages_received: NULL
  Page_faults_major: NULL
  Page_faults_minor: NULL
              Swaps: NULL
    Source_function: NULL
        Source_file: NULL
        Source_line: NULL
*************************** 2. row ***************************
             Status: checking permissions
           Duration: 0.000008
           CPU_user: NULL
         CPU_system: NULL
  Context_voluntary: NULL
Context_involuntary: NULL
       Block_ops_in: NULL
      Block_ops_out: NULL
      Messages_sent: NULL
  Messages_received: NULL
  Page_faults_major: NULL
  Page_faults_minor: NULL
              Swaps: NULL
    Source_function: check_access
        Source_file: sql_parse.cc
        Source_line: 5635
*************************** 3. row ***************************
             Status: Opening tables
           Duration: 0.000060
           CPU_user: NULL
         CPU_system: NULL
  Context_voluntary: NULL
Context_involuntary: NULL
       Block_ops_in: NULL
      Block_ops_out: NULL
      Messages_sent: NULL
  Messages_received: NULL
  Page_faults_major: NULL
  Page_faults_minor: NULL
              Swaps: NULL
    Source_function: open_tables
        Source_file: sql_base.cc
        Source_line: 5029
*************************** 4. row ***************************
             Status: init
           Duration: 0.000023
           CPU_user: NULL
         CPU_system: NULL
  Context_voluntary: NULL
Context_involuntary: NULL
       Block_ops_in: NULL
      Block_ops_out: NULL
      Messages_sent: NULL
  Messages_received: NULL
  Page_faults_major: NULL
  Page_faults_minor: NULL
              Swaps: NULL
    Source_function: mysql_prepare_select
        Source_file: sql_select.cc
        Source_line: 1051
*************************** 5. row ***************************
             Status: System lock
           Duration: 0.000011
           CPU_user: NULL
         CPU_system: NULL
  Context_voluntary: NULL
Context_involuntary: NULL
       Block_ops_in: NULL
      Block_ops_out: NULL
      Messages_sent: NULL
  Messages_received: NULL
  Page_faults_major: NULL
  Page_faults_minor: NULL
              Swaps: NULL
    Source_function: mysql_lock_tables
        Source_file: lock.cc
        Source_line: 304
*************************** 6. row ***************************
             Status: optimizing
           Duration: 0.000007
           CPU_user: NULL
         CPU_system: NULL
  Context_voluntary: NULL
Context_involuntary: NULL
       Block_ops_in: NULL
      Block_ops_out: NULL
      Messages_sent: NULL
  Messages_received: NULL
  Page_faults_major: NULL
  Page_faults_minor: NULL
              Swaps: NULL
    Source_function: optimize
        Source_file: sql_optimizer.cc
        Source_line: 138
*************************** 7. row ***************************
             Status: statistics
           Duration: 0.000016
           CPU_user: NULL
         CPU_system: NULL
  Context_voluntary: NULL
Context_involuntary: NULL
       Block_ops_in: NULL
      Block_ops_out: NULL
      Messages_sent: NULL
  Messages_received: NULL
  Page_faults_major: NULL
  Page_faults_minor: NULL
              Swaps: NULL
    Source_function: optimize
        Source_file: sql_optimizer.cc
        Source_line: 381
*************************** 8. row ***************************
             Status: preparing
           Duration: 0.000015
           CPU_user: NULL
         CPU_system: NULL
  Context_voluntary: NULL
Context_involuntary: NULL
       Block_ops_in: NULL
      Block_ops_out: NULL
      Messages_sent: NULL
  Messages_received: NULL
  Page_faults_major: NULL
  Page_faults_minor: NULL
              Swaps: NULL
    Source_function: optimize
        Source_file: sql_optimizer.cc
        Source_line: 504
*************************** 9. row ***************************
             Status: executing
           Duration: 0.000007
           CPU_user: NULL
         CPU_system: NULL
  Context_voluntary: NULL
Context_involuntary: NULL
       Block_ops_in: NULL
      Block_ops_out: NULL
      Messages_sent: NULL
  Messages_received: NULL
  Page_faults_major: NULL
  Page_faults_minor: NULL
              Swaps: NULL
    Source_function: exec
        Source_file: sql_executor.cc
        Source_line: 110
*************************** 10. row ***************************
             Status: Sending data
           Duration: 0.000063
           CPU_user: NULL
         CPU_system: NULL
  Context_voluntary: NULL
Context_involuntary: NULL
       Block_ops_in: NULL
      Block_ops_out: NULL
      Messages_sent: NULL
  Messages_received: NULL
  Page_faults_major: NULL
  Page_faults_minor: NULL
              Swaps: NULL
    Source_function: exec
        Source_file: sql_executor.cc
        Source_line: 187
*************************** 11. row ***************************
             Status: end
           Duration: 0.000004
           CPU_user: NULL
         CPU_system: NULL
  Context_voluntary: NULL
Context_involuntary: NULL
       Block_ops_in: NULL
      Block_ops_out: NULL
      Messages_sent: NULL
  Messages_received: NULL
  Page_faults_major: NULL
  Page_faults_minor: NULL
              Swaps: NULL
    Source_function: mysql_execute_select
        Source_file: sql_select.cc
        Source_line: 1106
*************************** 12. row ***************************
             Status: query end
           Duration: 0.000010
           CPU_user: NULL
         CPU_system: NULL
  Context_voluntary: NULL
Context_involuntary: NULL
       Block_ops_in: NULL
      Block_ops_out: NULL
      Messages_sent: NULL
  Messages_received: NULL
  Page_faults_major: NULL
  Page_faults_minor: NULL
              Swaps: NULL
    Source_function: mysql_execute_command
        Source_file: sql_parse.cc
        Source_line: 5307
*************************** 13. row ***************************
             Status: closing tables
           Duration: 0.000012
           CPU_user: NULL
         CPU_system: NULL
  Context_voluntary: NULL
Context_involuntary: NULL
       Block_ops_in: NULL
      Block_ops_out: NULL
      Messages_sent: NULL
  Messages_received: NULL
  Page_faults_major: NULL
  Page_faults_minor: NULL
              Swaps: NULL
    Source_function: mysql_execute_command
        Source_file: sql_parse.cc
        Source_line: 5383
*************************** 14. row ***************************
             Status: freeing items
           Duration: 0.000016
           CPU_user: NULL
         CPU_system: NULL
  Context_voluntary: NULL
Context_involuntary: NULL
       Block_ops_in: NULL
      Block_ops_out: NULL
      Messages_sent: NULL
  Messages_received: NULL
  Page_faults_major: NULL
  Page_faults_minor: NULL
              Swaps: NULL
    Source_function: mysql_parse
        Source_file: sql_parse.cc
        Source_line: 6676
*************************** 15. row ***************************
             Status: logging slow query
           Duration: 0.000003
           CPU_user: NULL
         CPU_system: NULL
  Context_voluntary: NULL
Context_involuntary: NULL
       Block_ops_in: NULL
      Block_ops_out: NULL
      Messages_sent: NULL
  Messages_received: NULL
  Page_faults_major: NULL
  Page_faults_minor: NULL
              Swaps: NULL
    Source_function: log_slow_do
        Source_file: sql_parse.cc
        Source_line: 2077
*************************** 16. row ***************************
             Status: logging slow query
           Duration: 0.000070
           CPU_user: NULL
         CPU_system: NULL
  Context_voluntary: NULL
Context_involuntary: NULL
       Block_ops_in: NULL
      Block_ops_out: NULL
      Messages_sent: NULL
  Messages_received: NULL
  Page_faults_major: NULL
  Page_faults_minor: NULL
              Swaps: NULL
    Source_function: log_slow_do
        Source_file: sql_parse.cc
        Source_line: 2078
*************************** 17. row ***************************
             Status: cleaning up
           Duration: 0.000014
           CPU_user: NULL
         CPU_system: NULL
  Context_voluntary: NULL
Context_involuntary: NULL
       Block_ops_in: NULL
      Block_ops_out: NULL
      Messages_sent: NULL
  Messages_received: NULL
  Page_faults_major: NULL
  Page_faults_minor: NULL
              Swaps: NULL
    Source_function: dispatch_command
        Source_file: sql_parse.cc
        Source_line: 1878
17 rows in set, 1 warning (0.00 sec)

关于“MySQL如何使用profiling”这篇文章就分享到这里了,希望

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/66414.html

(0)

相关推荐

  • Linux驱动实践:你知道【字符设备驱动程序】的两种写法吗

    技术Linux驱动实践:你知道【字符设备驱动程序】的两种写法吗 Linux驱动实践:你知道【字符设备驱动程序】的两种写法吗作 者:道哥,10+年嵌入式开发老兵,专注于:C/C++、嵌入式、Linux。

    礼包 2021年11月19日
  • ARCHIVELOG如何统计归档日志更准确

    技术ARCHIVELOG如何统计归档日志更准确小编给大家分享一下ARCHIVELOG如何统计归档日志更准确,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了

    攻略 2021年12月10日
  • MySQL加锁机制的验证记录是什么

    技术MySQL加锁机制的验证记录是什么本篇内容介绍了“MySQL加锁机制的验证记录是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,

    攻略 2021年10月22日
  • 三戒是哪三戒,谁来回答下哪三戒哪四律!

    技术三戒是哪三戒,谁来回答下哪三戒哪四律!君子有三戒 孔子,在生活上主张,君子有三条戒规:少年时戒美色;壮年时戒殴斗;老年时戒贪图三戒是哪三戒。“君子有三戒,少之时,血气未足,戒之在色;及其壮也,血气方刚,戒之在斗;及其

    生活 2021年10月22日
  • 宋慈被尊为世界什么鼻祖,古代历史上有哪些断案高手

    技术宋慈被尊为世界什么鼻祖,古代历史上有哪些断案高手?宋慈——中国古代破案断案能人宋慈被尊为世界什么鼻祖、高手!?宋慈:河北邢台人士,南宋“提刑官”,大气晚成,32岁时考取进士乙科。被当朝安排在浙江的鄞县出任县尉(大致相

    生活 2021年10月27日
  • 分布式唯一id获取策略是什么

    技术分布式唯一id获取策略是什么分布式唯一id获取策略是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。常用获取分布式唯一id方法,特点,全局唯一,趋势递

    攻略 2021年10月20日