mysql服務器查詢慢原因分析方法


MySQL數據庫在查詢的時候會出現查詢結果很慢,超過1秒,項目中需要找出執行慢的sql進行優化,應該怎么找呢,mysql數據庫提供了一個很好的方法,如下: 
mysql5.0以上的版本可以支持將執行比較慢的SQL語句記錄下來。 
1.需要使用打開記錄查詢慢的sql記錄日志:

查看慢查詢時間
show variables like 'slow%';
查看設置多久是慢查詢
show variables like 'long%';
修改慢查詢時間
set long_query_time=1;
打開慢查詢記錄日志
set global slow_query_log='ON';

這里寫圖片描述
2.進入到log_file的目錄下即可查詢哪些sql執行慢了。 
3.然后就是進行優化執行慢的sql,加索引、修改查詢方式等 
4.另外比較有用的命令:

查看哪些線程正在運行
show full processlist
查看最大連接數
show variables like '%max_connections%';
當前連接數
show status like 'Threads_connected%';

http://blog.csdn.net/lu_wei_wei/article/details/51242795

在使用mysql運行某些語句時,會因數據量太大而導致死鎖,沒有反映。這個時候,就需要kill掉某個正在消耗資源的query語句即可, KILL命令的語法格式如下:

KILL [CONNECTION | QUERY] thread_id

每個與mysqld的連接都在一個獨立的線程里運行,您可以使用SHOW PROCESSLIST語句查看哪些線程正在運行,並使用KILL thread_id語句終止一個線程。

KILL允許自選的CONNECTION或QUERY修改符:KILL CONNECTION與不含修改符的KILL一樣:它會終止與給定的thread_id有關的連接。KILL QUERY會終止連接當前正在執行的語句,但是會保持連接的原狀。

如果您擁有PROCESS權限,則您可以查看所有線程。如果您擁有超級管理員權限,您可以終止所有線程和語句。否則,您只能查看和終止您自己的線程和語句。您也可以使用mysqladmin processlist和mysqladmin kill命令來檢查和終止線程。

首先登錄mysql,然后使用:
show processlist;
查看當前mysql中各個線程狀態

mysql> show processlist;  
+------+------+----------------------+----------------+---------+-------+-----------+---------------------   
| Id   | User | Host                 | db             | Command | Time  | State     | Info  
+------+------+----------------------+----------------+---------+-------+-----------+---------------------   
| 7028 | root | ucap-devgroup:53396  | platform       | Sleep   | 19553 |           | NULL   
| 8352 | root | ucap-devgroup:54794  | platform       | Sleep   |  4245 |           | NULL  
| 8353 | root | ucap-devgroup:54795  | platform       | Sleep   |     3 |           | NULL  
| 8358 | root | ucap-devgroup:62605  | platform       | query   |  4156 | updating  | update t_shop set  |  

以上顯示出當前正在執行的sql語句列表,找到消耗資源最大的那條語句對應的id.

然后運行kill命令,命令格式如下:

kill id;  
- 示例:  
mysql>kill 8358;
ERROR 1317 (70100): Query execution was interrupted

 


免責聲明!

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



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