computer-therms-4-1241958.jpg

(圖片來源)

 

不論是程式面還是資料面,我們時常在說提高效能縮短執行時間,但這句話只有表達出要達到的目的並沒有說明具體的方法,那我們究竟該從何下手呢?

以 Mysql 為例,本身內建 slow_query_log 的功能,該功能可以記錄執行時間過長的 query 語法,既然電腦已經幫助我們省去大半時間來找出執行過慢的 query ,那我們便可以將更多的精力放在優化語法上,從而解決因慢 query 引起的各種問題!

 

  • 檔案設定 (以 Laragon WAMP 來當作範例)
  • 指令設定

 

一、 檔案設定

1. 開啟 my.ini

 

 

2. [mysqld] 添加下方設定

slow_query_log = 1   # 0 為關閉, 1 為開啟
slow_query_log_file = "D:/laragon3/tmp/log/mysql-slow.log"    # log 存放的位置
long_query_time = 1    # 紀錄執行超過 1 秒的 query 語法

 

3. 重啟 Mysql 

 

4. 嘗試執行較久的 query 語法

執行完較久的 query 語法後開啟 log file ,已經自動記錄慢 query 完整的信息,包含執行時間完整 query 語法等等資訊。

 

另外,如果想要紀錄每一筆的 query 語法,Mysql 也是有內建功能唷!在 [mysqld] 添加下方設定 ,其餘步驟都跟上方相同!

general_log      = 1    # 開啟 query log
general_log_file = "D:/laragon3/tmp/log/mysql-query.log"    # log 存放位置

 

二、指令設定

在本機或測試環境當然想重啟幾次 Mysql 都不會有任何問題,但是如果是在線上環境就不能這麼隨意的進行重啟,在這種狀況下可以使用指令來達到我們要的目的。

 

在 SQL Manage Tool 或是 mysql comand Line 輸入下方語法並執行,就可以直接啟用 slow_query_log 功能,不用重啟 Mysql

SET global log_output = 'FILE';
SET global slow_query_log = 1;
SET global slow_query_log_file = "D:/laragon3/tmp/log/slow-test.log";
SET global long_query_time = 1;

 

general_log 啟用也不需要重啟 Mysql,指令如下:

SET global log_output = 'FILE';
SET global general_log_file= 'D:/laragon3/tmp/log/test.log';
SET global general_log = 1;

 

參考:
How to enable MySQL Query Log?
開啟 slow query log, 儲存執行慢的 MySQL 語句
Mysql 管理之道(第二版) page 210,5.5.1 如何定位執行很慢的 SQL 語句 

 

arrow
arrow

    Mayuge 發表在 痞客邦 留言(0) 人氣()