1.什麼是MySQL的慢查詢?
mysql中最影響速度的就是那些查詢非常慢的語句,這些慢的語句,可能是寫的不夠合理或者是大資料下多表的聯合查詢等等,是以我們要找出這些語句,分析原因,加以優化。
2.檢視和配置MYSQL慢查詢相關資訊
第一,慢查詢,這個慢,時間上是怎麼定義的?多久才算慢呢?
<a href="http://s3.51cto.com/wyfs02/M00/4C/A2/wKioL1RCNNWiFImTAAB5UqpMCnE319.jpg" target="_blank"></a>
MYSQL有2種類型的變量,一個是伺服器變量(show variables),一個是狀态變量(show status)。這2種變量都分global/session。
從上圖可以看出,10秒以内執行完畢的SQL語句都不算慢查詢。
第二,開啟慢查詢日志記錄功能
如果開啟了慢查詢日志記錄功能,那麼以後隻要SQL語句執行時間超過long_query_time,就會記錄到日志檔案中,友善以後優化了。
<a href="http://s3.51cto.com/wyfs02/M00/4C/A1/wKiom1RCNaXx00omAADK9zHQKvY468.jpg" target="_blank"></a>
可以發現slow_query_log被關閉,并且慢查詢的日志檔案在/mysql/data/localhost-slow.log,也就是MYSQL資料目錄下。
可以利用set指令的方式直接修改,或者在my.cnf配置檔案中的mysqld段進行配置。
<a href="http://s3.51cto.com/wyfs02/M00/4C/A2/wKioL1RCN4uybhxqAADPAKPH-Sw710.jpg" target="_blank"></a>
或者配置my.cnf:
<a href="http://s3.51cto.com/wyfs02/M00/4C/A3/wKioL1RCUDyAeMWCAAAoRpp604o449.jpg" target="_blank"></a>
3.慢查詢實戰
制造一張大表:
<a href="http://s3.51cto.com/wyfs02/M01/4C/A3/wKioL1RCU6HwRV3oAAEqFvrJG-I716.jpg" target="_blank"></a>
<a href="http://s3.51cto.com/wyfs02/M02/4C/A3/wKioL1RCUWThrBedAACv6vPazUY004.jpg" target="_blank"></a>
<a href="http://s3.51cto.com/wyfs02/M02/4C/A2/wKiom1RCUZSSFc0fAABmxzVizDs208.jpg" target="_blank"></a>
可以發現,這條SQL的查詢時間>10秒,那麼在慢查詢日志應該出現相應的記錄。
<a href="http://s3.51cto.com/wyfs02/M00/4C/A2/wKiom1RCUe_zYDDCAAFcz4ndOgY854.jpg" target="_blank"></a>
總結,在實際開發中,我們應該開啟MYSQL的慢查詢功能,通過慢查詢日志來定位哪些SQL的查詢時間過慢,進而去優化它們。
本文轉自zfz_linux_boy 51CTO部落格,原文連結:http://blog.51cto.com/zhangfengzhe/1565527,如需轉載請自行聯系原作者