MariaDB/MySQL 開啟「慢查詢」 Log,找出到底慢在哪個 Query 語句上|Slow query log|High CPU|MySQL|MariaDB|伊恩踩坑筆記

Ian BerLin / 伊恩踩坑筆記
3 min readJul 8, 2021

--

首先前往 mariadb.conf.dMySQLMariaDB 的路徑可能有差別,MySQL 應該會是在 /etc/mysql/my.cnf

$ cd /etc/mysql/mariadb.conf.d

並開啟 50-server.cnf

$ nano 50-server.cnf

加入以下參數:

[mysqld]# 開啟慢日誌功能
slow_query_log = 1
# 查詢時間超過 2 秒則定義為慢查詢(可自行改秒數)
long_query_time = 2
# 將產生的 slow query log 放到你指定的地方
slow_query_log_file = /var/www/slow_query.log

保存後別忘了重啟 MySQL

systemctl restart mariadb.service

來驗證吧!

首先登入 MySQL

$ mysql -u root -p

登入成功後輸入指令

> show variables like '%quer%';

會出現以下表格:

+---------------------------------+-------------------------+
| Variable_name | Value |
+---------------------------------+-------------------------+
| expensive_subquery_limit | 100 |
| ft_query_expansion_limit | 20 |
| have_query_cache | YES |
| log_queries_not_using_indexes | OFF |
| long_query_time | 2.000000 |
| query_alloc_block_size | 16384 |
| query_cache_limit | 1048576 |
| query_cache_min_res_unit | 4096 |
| query_cache_size | 16777216 |
| query_cache_strip_comments | OFF |
| query_cache_type | ON |
| query_cache_wlock_invalidate | OFF |
| query_prealloc_size | 24576 |
| slow_query_log | ON |
| slow_query_log_file | /var/www/slow_query.log |
| wsrep_reject_queries | NONE |
| wsrep_sst_donor_rejects_queries | OFF |
+---------------------------------+-------------------------+

確認 Value 是否與剛才設定的吻合

slow_query_log 為 ON
long_query_time 為剛剛設定的 2 秒
slow_query_log_file 為你剛剛指定的路徑 /var/www/slow_query.log

符合就表示保存成功,退出 MySQL

> exit;

ING Design 応設計
https://www.theingdesign.com/

--

--

Ian BerLin / 伊恩踩坑筆記
Ian BerLin / 伊恩踩坑筆記

Written by Ian BerLin / 伊恩踩坑筆記

專門寫一些自己曾經踩過的坑,希望你沒踩過 / Web & BackEnd Developer • 台北 • theingdesign.com • IG: @ianakaberlin

No responses yet