程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL之慢查詢日志(1)

MySQL之慢查詢日志(1)

編輯:MySQL綜合教程

慢查詢有什麼用?  

它能記錄下所有執行超過long_query_time時間的SQL語句,幫你找到執行慢的SQL,方便我們對這些SQL進行優化。  

測試用 MySQL 版本:Server version: 5.6.10-log Source distribution  

未做任何慢日志設置時。  

  1. mysql> show variables like "%query%";      
  2. +------------------------------+--------------------------------------+  
  3. | Variable_name                | Value                                |  
  4. +------------------------------+--------------------------------------+  
  5. | binlog_rows_query_log_events | OFF                                  |   
  6. | ft_query_expansion_limit     | 20                                   |   
  7. | have_query_cache             | YES                                  |   
  8. | long_query_time              | 10.000000                            |   
  9. | query_alloc_block_size       | 8192                                 |   
  10. | query_cache_limit            | 1048576                              |   
  11. | query_cache_min_res_unit     | 4096                                 |   
  12. | query_cache_size             | 1048576                              |   
  13. | query_cache_type             | OFF                                  |   
  14. | query_cache_wlock_invalidate | OFF                                  |   
  15. | query_prealloc_size          | 8192                                 |   
  16. | slow_query_log               | OFF                                  |   
  17. | slow_query_log_file          | /usr/local/mysql/data/Betty-slow.log |   
  18. +------------------------------+--------------------------------------+  
  19. 13 rows in set (0.01 sec)  
  20.  
  21. mysql> 

修改配置文件,開啟 slow log 。 

  1. [root@Betty data]# vi /etc/my.cnf             
  2.  
  3. # For advice on how to change settings please see  
  4. # http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html  
  5. # *** DO NOT EDIT THIS FILE. It's a template which will be copied to the  
  6. # *** default location during install, and will be replaced if you  
  7. # *** upgrade to a newer version of MySQL.  
  8.  
  9. [mysqld]  
  10.  
  11. # Remove leading # and set to the amount of RAM for the most important data  
  12. # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.  
  13. # innodb_buffer_pool_size = 128M  
  14.  
  15. # Remove leading # to turn on a very important data integrity option: logging  
  16. # changes to the binary log between backups.  
  17. log_bin=mysql-bin  
  18.  
  19. slow_query_log=on  
  20. slow_query_log_file=mysql-slow  
  21. long_query_time=2  
  22.  
  23. # These are commonly set, remove the # and set as required.  
  24. # basedir = .....  
  25. # datadir = .....  
  26. # port = .....  
  27. # server_id = .....  
  28. # socket = .....  
  29.  
  30. # Remove leading # to set options mainly useful for reporting servers.  
  31. # The server defaults are faster for transactions and fast SELECTs.  
  32. # Adjust sizes as needed, experiment to find the optimal values.  
  33. # join_buffer_size = 128M  
  34. # sort_buffer_size = 2M  
  35. # read_rnd_buffer_size = 2M   
  36.  
  37. sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES  
  38.  
  39. [mysql]  
  40. socket = /tmp/mysql.sock 

重啟 MySQL 。 

  1. [root@Betty data]# /etc/init.d/mysql restart  
  2. Shutting down MySQL..                                      [  OK  ]  
  3. Starting MySQL.                                            [  OK  ]  
  4. [root@Betty data]# 

查看 slow log 。

  1. [root@Betty data]# ll mysql-slow   
  2. -rw-rw---- 1 mysql mysql 719 Sep  6 12:43 mysql-slow 

重新查看系統變量值。 

  1. mysql>   
  2. mysql> show variables like "%query%";  
  3. +------------------------------+------------+  
  4. | Variable_name                | Value      |  
  5. +------------------------------+------------+  
  6. | binlog_rows_query_log_events | OFF        |   
  7. | ft_query_expansion_limit     | 20         |   
  8. | have_query_cache             | YES        |   
  9. | long_query_time              | 2.000000   |   
  10. | query_alloc_block_size       | 8192       |   
  11. | query_cache_limit            | 1048576    |   
  12. | query_cache_min_res_unit     | 4096       |   
  13. | query_cache_size             | 1048576    |   
  14. | query_cache_type             | OFF        |   
  15. | query_cache_wlock_invalidate | OFF        |   
  16. | query_prealloc_size          | 8192       |   
  17. | slow_query_log               | ON         |   
  18. | slow_query_log_file          | mysql-slow |   
  19. +------------------------------+------------+  
  20. 13 rows in set (0.00 sec)  
  21.  
  22. mysql> 

查看新生成的 slow log 的內容。 

  1. [root@Betty data]# cat mysql-slow   
  2. /usr/local/mysql/bin/mysqld, Version: 5.6.10-log (Source distribution). started with:  
  3. Tcp port: 0  Unix socket: (null)  
  4. Time                 Id Command    Argument  
  5. [root@Betty data]# 

測試 slow log 。

  1. mysql>   
  2. mysql> select 1;  
  3. +---+  
  4. | 1 |  
  5. +---+  
  6. | 1 |   
  7. +---+  
  8. 1 row in set (0.00 sec)  
  9.  
  10. mysql>   
  11. mysql> select sleep(1);  
  12. +----------+  
  13. | sleep(1) |  
  14. +----------+  
  15. |        0 |   
  16. +----------+  
  17. 1 row in set (1.00 sec)  
  18.  
  19. mysql>   
  20. mysql>   
  21. mysql> select sleep(3);   
  22. +----------+  
  23. | sleep(3) |  
  24. +----------+  
  25. |        0 |   
  26. +----------+  
  27. 1 row in set (3.00 sec)  
  28.  
  29. mysql>   
  30. mysql> select sleep(4);   
  31. +----------+  
  32. | sleep(4) |  
  33. +----------+  
  34. |        0 |   
  35. +----------+  
  36. 1 row in set (4.01 sec)  
  37.  
  38. mysql>   
  39. mysql>   
  40. mysql> select sleep(5);   
  41. +----------+  
  42. | sleep(5) |  
  43. +----------+  
  44. |        0 |   
  45. +----------+  
  46. 1 row in set (5.00 sec)  
  47.  
  48. mysql> select sleep(2);   
  49. +----------+  
  50. | sleep(2) |  
  51. +----------+  
  52. |        0 |   
  53. +----------+  
  54. 1 row in set (2.01 sec)  
  55.  
  56. mysql>   
  57. mysql> select sleep(1);   
  58. +----------+  
  59. | sleep(1) |  
  60. +----------+  
  61. |        0 |   
  62. +----------+  
  63. 1 row in set (1.00 sec)  
  64.  
  65. mysql> select 2;         
  66. +---+  
  67. | 2 |  
  68. +---+  
  69. | 2 |   
  70. +---+  
  71. 1 row in set (0.00 sec)  
  72.  
  73. mysql> 


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved