1. 程式人生 > >網站開啟慢之學習mysql慢查詢和linux top命令

網站開啟慢之學習mysql慢查詢和linux top命令

今天在公司,休息的時候開啟自家網站看了看,逛到一個商品列表頁的時候,感覺很慢,遂覺得哪裡出了問題。

這時,我不知道什麼情況,不過有種感覺,覺得應該是sql問題,這可能就是經驗問題,於是ssh 到伺服器。

top 命令

一看嚇一跳  mysql  CPU% 高達   300%  這尼瑪坑定就是sql語句問題。

於是,想找sql語句問題 , 不過又不想去程式碼裡找,腫麼辦呢?

想起了曾經看的mysql慢查詢的文章,覺得這是個好方法。

在mysql配置檔案my.cnf中增加

log-slow-queries=/var/lib/mysql/slowquery.log (指定日誌檔案存放位置,可以為空,系統會給一個預設的檔案host_name-slow.log)

long_query_time=2 (記錄超過的時間,預設為10s)

log-queries-not-using-indexes (log下來沒有使用索引的query,可以根據情況決定是否開啟)

log-long-format (如果設定了,所有沒有使用索引的查詢也將被記錄)

當然上面是要重啟mysql才能生效,這尼瑪 , 線上正在跑  腫麼能隨便重啟mysql呢,再一想 , 這問題 我都能想到,肯定有人早就想到,於是又找資料去臨時檢視慢查詢

首先通過客戶端連線到Mysql伺服器,然後輸入下面的語句:

set global log_slow_queries = om;

set global long_query_time = 3;


這樣MySQL就會把耗時>=3秒的SQL語句給記錄下來,並輸出到一個慢查詢日誌檔案中。問題來了,這個慢查詢日誌檔案在什麼地方呢?如下,在MYSQL客戶端中執行下面的語句:


show variables like 'slow_query_log_file';

就會看到MySQL慢查詢日誌檔案位置。

哇咔咔,順利找出調皮的sql語句,或說寫子查詢的時候要加條數限制的啊  尼瑪  桑不起啊