深入mysql慢查詢設定的詳解
在web開發中,我們經常會寫出一些SQL語句,一條糟糕的SQL語句可能讓你的整個程式都非常慢,超過10秒一般使用者就會選擇關閉網頁,如何最佳化SQL語句將那些執行時間 比較長的SQL語句找出呢?MySQL給我們提供了一個很好的功能,那就是慢查詢!所謂的慢查詢就是透過設定來記錄超過一定時間的SQL語句!那麼如何應用慢查詢呢?
1.開啟MySQL的慢查詢日誌功能
預設情況下,MySQL是不會記錄超過一定執行時間的SQL語句的。要開啟這個功能,我們需要修改MySQL的配置檔案,windows下修改my.ini,Linux下修改my.cnf檔案,在[mysqld]最後增加如下命令:
複製程式碼 程式碼如下:
slow_query_log
long_query_time = 1
2.測試慢查詢日誌功能
(1)進入MySql控制檯,執行如下語句:
複製程式碼 程式碼如下:
select sleep(2);
mysql> select sleep(2);
+----------+
| sleep(2) |
+----------+
| 0 |
+----------+
1 row in set (2.12 sec)
(2)檢視慢查詢日誌檔案think-slow.log,在檔案最後發現:
複製程式碼 程式碼如下:
# Time: 121120 20:06:23
# User@Host: root[root] @ localhost [127.0.0.1]
# Query_time: 2.104120 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 0
SET timestamp=1353413183;
select sleep(2);
3.解釋:
(1)slow_query_log 這句是開啟記錄慢查詢功能,slow_query_log=0關閉;slow_query_log=1開啟(這個1可以不寫)
(2)long_query_time = 1 這句是記錄超過1秒的SQL執行語句
(3)那麼這個日誌檔案存放在什麼地方呢?
預設是放在mysql的data目錄,並且檔名為host_name-slow.log即 主機名-slow.log,比如在筆者的開發機上就是THINK-slow.log(因為偶用的Thinkpad,呵呵)
(4)如果日誌檔案不想放在data目錄,我們可以透過如下配置指定存放的目錄及日誌檔名:
slow_query_log_file=file_name
其中file_name就是你的存放日誌的目錄和檔名,在這裡注意有的資料上可能是log-slow-queries=file_name,這個在mysql5.5版已經過時!
4.如何記錄低於1s的慢查詢記錄呢?
MySQL5.21版以前long_query_time 引數的單位是秒,預設值是10。這相當於說最低只能記錄執行時間超過 1 秒的查詢,怎麼記錄查詢時間超過100毫秒的SQL語句記錄呢?在mysql5.21+後版本支援毫秒記錄
(1)進入MySql控制檯,執行如下sql語句:
複製程式碼 程式碼如下:
set global long_query_time=0.1
該句是設定記錄慢查詢超過時間100ms的SQL,記住要重啟mysql才能生效!
(2)測試
進入mysql控制檯,執行如下sql語句:
複製程式碼 程式碼如下:
select sleep(0.5);
檢視慢查詢日誌檔案,我們看到最後新增的新資訊:
複製程式碼 程式碼如下:
# Time: 121120 20:42:06
# User@Host: root[root] @ localhost [127.0.0.1]
# Query_time: 0.500028 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 0
SET timestamp=1353415326;
select sleep(0.5);
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2471/viewspace-2804065/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 詳解MySQL--慢查詢MySql
- MySQL慢查詢日誌相關設定MySql
- mysql5.7.10開啟慢查詢詳解MySql
- MySQL 慢查詢分析工具~pt-query-digest 詳解MySql
- MySQL慢查詢MySql
- MySQL 慢查詢MySql
- mysql慢查詢,死鎖解決方案MySql
- MySQL:慢查詢日誌MySql
- MySQL 慢查詢優化MySql優化
- 【mysql】explain命令分析慢查詢MySqlAI
- [Mysql]慢查詢最佳化MySql
- MySQL 慢查詢那點事MySql
- mysql查詢效率慢的SQL語句MySql
- php-fpm7.0 慢查詢設定及說明PHP
- MySQL慢查詢分析工具之mysqldumpslowMySql
- Mysql 慢查詢優化實踐MySql優化
- 盤點MySQL慢查詢的12個原因MySql
- 在mysql查詢效率慢的SQL語句MySql
- 遇到慢查詢怎麼辦?一文解讀MySQL 8.0查詢分析工具MySql
- MySQL 連線查詢超全詳解MySql
- 分分鐘解決MySQL查詢速度慢與效能差MySql
- SQL Server查詢慢的解決方案SQLServer
- 如何使用 MySQL 慢查詢日誌進行效能優化 - Profiling、mysqldumpslow 例項詳解MySql優化
- 慢查詢
- MySQL Slow Query log(慢查詢日誌)MySql
- mysql之 slow log 慢查詢日誌MySql
- 對 MySQL 慢查詢日誌的簡單分析MySql
- 關於MySQL 通用查詢日誌和慢查詢日誌分析MySql
- Mysql慢查詢日誌檔案轉ExcelMySqlExcel
- MySQL索引原理及慢查詢最佳化MySql索引
- mysql慢查詢和錯誤日誌分析MySql
- 【趙渝強老師】MySQL的慢查詢日誌MySql
- 【由淺入深學MySQL】- MySQL連線查詢詳解MySql
- 詭異的”慢查詢“
- mysql伺服器查詢慢原因分析與解決方法小結MySql伺服器
- rails的介面查詢詳解AI
- 深入sql多表差異化聯合查詢的問題詳解SQL
- MySQL information_schema.columns表查詢慢原因分析MySqlORM