首頁 資料庫 mysql教程 linux下开启mysql慢查询,分析查询语句

linux下开启mysql慢查询,分析查询语句

Jun 07, 2016 pm 03:12 PM
linux mysql 為什麼 分析 開啟 查詢 語句

一,为什么要开启这个查询呢? 数据库是很容易产生瓶颈的地方,现在Nosql大家讨论这么热,估计都被数据库搞郁闷了。mysql中最影响速度的就是那些查询非常慢的语句,这些慢的语句,可能是写的不够合理或者是大数据下多表的联合查询等等,所以我们要找出这些语

一,为什么要开启这个查询呢?

数据库是很容易产生瓶颈的地方,现在Nosql大家讨论这么热,估计都被数据库搞郁闷了。mysql中最影响速度的就是那些查询非常慢的语句,这些慢的语句,可能是写的不够合理或者是大数据下多表的联合查询等等,所以我们要找出这些语句,分析原因,加以优化。这也是发这篇博文的原因

二,开启mysql的慢查询

方法1,用命令开启慢查询

查看复制打印?

  1. mysql> show variables like "%long%";         //查看一下默认为慢查询的时间10秒  
  2. +-----------------+-----------+  
  3. | Variable_name   | Value     |  
  4. +-----------------+-----------+  
  5. | long_query_time | 10.000000 |  
  6. +-----------------+-----------+  
  7. 1 row in set (0.00 sec)  
  8.   
  9. mysql> set global long_query_time=2;          //设置成2秒,加上global,下次进mysql已然生效  
  10. Query OK, 0 rows affected (0.00 sec)  
  11.   
  12. mysql> show variables like "%slow%";          //查看一下慢查询是不是已经开启  
  13. +---------------------+---------------------------------+  
  14. | Variable_name       | Value                           |  
  15. +---------------------+---------------------------------+  
  16. | log_slow_queries    | OFF                             |  
  17. | slow_launch_time    | 2                               |  
  18. | slow_query_log      | OFF                             |  
  19. | slow_query_log_file | /usr/local/mysql/mysql-slow.log |  
  20. +---------------------+---------------------------------+  
  21. 4 rows in set (0.00 sec)  
  22.   
  23. mysql> set slow_query_log='ON';                        //加上global,不然会报错的。  
  24. ERROR 1229 (HY000): Variable 'slow_query_log' is a GLOBAL variable and should be set with SET GLOBAL  
  25. mysql> set global slow_query_log='ON';            //启用慢查询  
  26. Query OK, 0 rows affected (0.28 sec)  
  27.   
  28. mysql> show variables like "%slow%";              //查看是否已经开启  
  29. +---------------------+---------------------------------+  
  30. | Variable_name       | Value                           |  
  31. +---------------------+---------------------------------+  
  32. | log_slow_queries    | ON                              |  
  33. | slow_launch_time    | 2                               |  
  34. | slow_query_log      | ON                              |  
  35. | slow_query_log_file | /usr/local/mysql/mysql-slow.log |  
  36. +---------------------+---------------------------------+  
  37. 4 rows in set (0.00 sec)  

方法2,修改mysql的配置文件my.cnf

在[mysqld]里面加上以下内容

  1. long_query_time = 2  
  2. log-slow-queries = /usr/local/mysql/mysql-slow.log  

重起一下
/usr/local/mysql/libexec/mysqld restart

三,分析工具

分析工具干什么事的呢,其实就是把mysql-slow.log里面记录下来的数据,分析一下显示出来。其实自己写一个shell脚本也是可以把要的信息取出来的。我们来看一下mysql-slow.log里面到底是什么东西

查看复制打印?

  1. [root@BlackGhost mysql]# cat mysql-slow.log     //查看命令  
  2. /usr/local/mysql/libexec/mysqld, Version: 5.1.26-rc-log (Source distribution). started with:  
  3. Tcp port: 3306  Unix socket: /tmp/mysql.sock  
  4. Time                 Id Command    Argument  
  5. # Time: 100814 13:28:30  
  6. # User@Host: root[root] @ localhost []  
  7. # Query_time: 10.096500  Lock_time: 0.045791 Rows_sent: 1  Rows_examined: 2374192  
  8. SET timestamp=1281763710;  
  9. select count(distinct ad_code) as x from ad_visit_history where ad_code in (select ad_code from ad_list where media_id=15);  
  10. # Time: 100814 13:37:02  
  11. # User@Host: root[root] @ localhost []  
  12. # Query_time: 10.394134  Lock_time: 0.000091 Rows_sent: 1  Rows_examined: 2374192  
  13. SET timestamp=1281764222;  
  14. select count(distinct ad_code) as x from ad_visit_history where ad_code in (select ad_code from ad_list where media_id=15);  
  15. # Time: 100814 13:37:16  
  16. # User@Host: root[root] @ localhost []  
  17. # Query_time: 4.608920  Lock_time: 0.000078 Rows_sent: 1  Rows_examined: 1260544  
  18. SET timestamp=1281764236;  
  19. select count(*) as cou  from ad_visit_history where ad_code in (select ad_code from ad_list where id=41) order by id desc;  

看到了,就是记录一下sql语句的执行情况,包括执行时间,锁定时间等,所以要不要分析工具看个人情况,分析工具很多,在这儿只说一下mysql自带的慢查询分析工具mysqldumpslow的使用方法。

查看复制打印?

  1. [root@BlackGhost bin]# mysqldumpslow -h  
  2. Option h requires an argument  
  3. ERROR: bad option  
  4.   
  5. Usage: mysqldumpslow [ OPTS... ] [ LOGS... ]  
  6.   
  7. Parse and summarize the MySQL slow query log. Options are  
  8.   
  9.  --verbose    verbose  
  10.  --debug      debug  
  11.  --help       write this text to standard output  
  12.   
  13.  -v           verbose  
  14.  -d           debug          //查错  
  15.  -s ORDER     what to sort by (t, at, l, al, r, ar etc), 'at' is default     //排序方式query次数,时间,lock的时间和返回的记录数来排序  
  16.  -r           reverse the sort order (largest last instead of first)       //倒排序  
  17.  -t NUM       just show the top n queries                                       //显示前N多个  
  18.  -a           don't abstract all numbers to N and strings to 'S' 
  19.  -n NUM       abstract numbers with at least n digits within names   //抽象的数字,至 少有n位内的名称 
  20.  -g PATTERN   grep: only consider stmts that include this string      //配置模式 
  21.  -h HOSTNAME  hostname of db server for *-slow.log filename (can be wildcard),     //mysql所以机器名或者IP 
  22.  default is '*', i.e. match all 
  23.  -i NAME      name of server instance (if using mysql.server startup script) 
  24.  -l           don't subtract lock time from total time           //总时间中不减去锁定时间  

例子:

[root@BlackGhost bin]# ./mysqldumpslow -s r -t 20 /usr/local/mysql/mysql-slow.log

[root@BlackGhost bin]# ./mysqldumpslow -s r -t 20 -g 'count' /usr/local/mysql/mysql-slow.log


-----整理自网上

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24
php框架laravel和yii區別是什麼 php框架laravel和yii區別是什麼 Apr 30, 2025 pm 02:24 PM

Laravel和Yii的主要區別在於設計理念、功能特性和使用場景。 1.Laravel注重開發的簡潔和愉悅,提供豐富的功能如EloquentORM和Artisan工具,適合快速開發和初學者。 2.Yii強調性能和效率,適用於高負載應用,提供高效的ActiveRecord和緩存系統,但學習曲線較陡。

怎樣卸載MySQL並清理殘留文件 怎樣卸載MySQL並清理殘留文件 Apr 29, 2025 pm 04:03 PM

要安全、徹底地卸載MySQL並清理所有殘留文件,需遵循以下步驟:1.停止MySQL服務;2.卸載MySQL軟件包;3.清理配置文件和數據目錄;4.驗證卸載是否徹底。

MacOS和Linux:兼容性和用戶體驗 MacOS和Linux:兼容性和用戶體驗 Apr 30, 2025 am 12:05 AM

macOS和Linux在兼容性和用戶體驗上各有優勢。 macOS在蘋果生態系統內兼容性極佳,用戶體驗簡潔直觀;Linux則在硬件兼容性和軟件靈活性上表現突出,用戶體驗因發行版而異,強調個性化和控制。

給MySQL表添加和刪除字段的操作步驟 給MySQL表添加和刪除字段的操作步驟 Apr 29, 2025 pm 04:15 PM

在MySQL中,添加字段使用ALTERTABLEtable_nameADDCOLUMNnew_columnVARCHAR(255)AFTERexisting_column,刪除字段使用ALTERTABLEtable_nameDROPCOLUMNcolumn_to_drop。添加字段時,需指定位置以優化查詢性能和數據結構;刪除字段前需確認操作不可逆;使用在線DDL、備份數據、測試環境和低負載時間段修改表結構是性能優化和最佳實踐。

MySQL批量插入數據的高效方法 MySQL批量插入數據的高效方法 Apr 29, 2025 pm 04:18 PM

MySQL批量插入数据的高效方法包括:1.使用INSERTINTO...VALUES语法,2.利用LOADDATAINFILE命令,3.使用事务处理,4.调整批量大小,5.禁用索引,6.使用INSERTIGNORE或INSERT...ONDUPLICATEKEYUPDATE,这些方法能显著提升数据库操作效率。

如何使用MySQL的函數進行數據處理和計算 如何使用MySQL的函數進行數據處理和計算 Apr 29, 2025 pm 04:21 PM

MySQL函數可用於數據處理和計算。 1.基本用法包括字符串處理、日期計算和數學運算。 2.高級用法涉及結合多個函數實現複雜操作。 3.性能優化需避免在WHERE子句中使用函數,並使用GROUPBY和臨時表。

MySQL的字符集和排序規則如何配置 MySQL的字符集和排序規則如何配置 Apr 29, 2025 pm 04:06 PM

在MySQL中配置字符集和排序規則的方法包括:1.設置服務器級別的字符集和排序規則:SETNAMES'utf8';SETCHARACTERSETutf8;SETCOLLATION_CONNECTION='utf8_general_ci';2.創建使用特定字符集和排序規則的數據庫:CREATEDATABASEexample_dbCHARACTERSETutf8COLLATEutf8_general_ci;3.創建表時指定字符集和排序規則:CREATETABLEexample_table(idINT

uniswap 鏈上提幣 uniswap 鏈上提幣 Apr 30, 2025 pm 07:03 PM

Uniswap用戶可從流動性池提取代幣到錢包,確保資產安全和流動性,過程需支付gas費,受網絡擁堵影響。

See all articles