程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 深刻mysql慢查詢設置的詳解

深刻mysql慢查詢設置的詳解

編輯:MySQL綜合教程

深刻mysql慢查詢設置的詳解。本站提示廣大學習愛好者:(深刻mysql慢查詢設置的詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是深刻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);

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved