Mysql查看慢SQL


慢SQL監控默認都是關的
SHOW VARIABLES LIKE '%slow%';
SHOW VARIABLES LIKE '%slow_query_log%';
查看慢SQL日志位置
show variables like '%slow_query_log_file%'

 

 

設置日志路徑
set global slow_query_log_file='/usr/local/mysql/data/localhost-slow.log'
開啟慢查詢功能
SET GLOBAL slow_query_log=1;
關閉慢查詢功能
SET GLOBAL slow_query_log=0;
 
 
         
long_query_time表示超過多少秒的查詢就寫入日志,默認10秒,設置為0表示記錄所有的查詢
 
        
SHOW VARIABLES LIKE 'long_query_time%';
long_query_time參數修改完成后需要重新打開一個窗口進行查詢才能看到效果
SET GLOBAL long_query_time=3;
記錄所有的查詢
SET GLOBAL long_query_time=0;
 
使用語句測試;
SELECT sleep(11);
慢SQL日志文件:
/usr/sbin/mysqld, Version: 5.6.15-enterprise-commercial-advanced (MySQL Enterprise Server - Advanced Edition (Commercial)). started with:
Tcp port: 3306 Unix socket: /var/lib/mysql/mysql.sock
Time Id Command Argument
# Time: 201118 16:17:16
# User@Host: root[root] @ [10.12.0.46] Id: 11942
# Query_time: 11.000337 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 0
use wanghb005;
SET timestamp=1605687436;
SELECT sleep(11);

 

 

當前連接數統計:
select count(*) from information_schema.PROCESSLIST
 
查看mysql連接數:show full processlist;  

若不加上full選項,則最多顯示100條記錄。

若以root帳號登錄,你能看到所有用戶的當前連接。如果是其它普通帳號,只能看到自己占用的連接。

在調試程序時,如懷疑應用程序中存在申請DB連接未釋放的情況,可以通過該命令查詢連接數(以應用程序中的user登錄)。如程序運行過程中連接數越來越多,則可以判斷程序中有DB資源未釋放。

當前連接數:show status like 'Threads%'; 
最大連接數查看,mysql默認最大連接數600:
show variables like '%max_connections%';
最大連接數修改:
set global max_connections=1000
查看mysql版本號:select version()
 

Show Profile分析

Show Profile也是分析慢SQL的一種手段,但它能獲得比explain更詳細的信息,能分析當前會話中語句執行的資源消耗情況,能獲得這條SQL在整個生命周期的耗時,相當於執行時間的清單,也很重要。 默認關閉。開啟后,會在后台保存最近15次的運行結果,然后通過Show Profile命令查看結果。
set profiling = on;
show variables like 'profiling%'
set profiling_history_size = 20
通過Show Profile能查看SQL的耗時
show profiles;

 

 

 
通過Query_ID可以得到具體SQL從連接 - 服務 - 引擎 - 存儲四層結構完整生命周期的耗時
show profile cpu,block io for query 50;

 

 

explain SQL語句,例:explain select * from bm_all;  type=ALL代表全表掃描

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM