有時發覺程式執行很慢, 其中一個要檢查的地方是資料庫。MySQL 可以將執行過的 SQL 語句全部紀錄下來, 或者可以只是將執行慢的 SQL 語句紀錄下來, 這樣對於 MySQL 語句的 Debug 就輕鬆很多了。
: ^% U% y! R! |5 Q# O+ E( |5 \$ H# N' j0 F. ?: N$ f, K3 T
要紀錄執行慢的 SQL 語句, 可以透過修改 my.cnf 完成, my.cnf 多數在以下位置:# E9 F% n) A% I) W8 _
- o3 \5 C+ Y1 v: j9 i+ o/etc/my.cnf8 M; g3 G. Y. B! Y6 t6 ^. a# M4 a
/etc/mysql/my.cnf
& a5 i# P7 S4 R6 C1 {; a8 z" _6 i
) Q% j# E( z3 ^* \$ ~先開啟 my.cnf, 在 [mysqld] 段落加入以下幾行:
( h- e: }7 @8 _0 f& mslow_query_log = 1; @5 `7 }5 Z* R. |! C$ \6 H' l
slow_query_log_file = /var/log/mysql-slow.log
+ V" @- W0 x$ q+ Q! T+ jlong_query_time = 2 1 V4 d6 K3 w3 T
以上幾行的意思分別是:
1 I9 ~4 y% E6 ]9 v
; |- Z) Z$ {5 }9 _- W0 N" x. Sslow_query_log = 11 b N1 L! X5 V2 R7 _ N
開啟紀錄執行慢的 SQL 語句:
# B% u$ Y( ^* i e& x
& R, y" U, ?/ z) [" Cslow_query_log_file = /var/log/mysql-slow.log5 U2 p0 C* N/ b( r% A
設定紀錄檔的位置在 /var/log/mysql-slow.log
9 Z9 N9 \+ X4 p8 A
: a4 X* o8 V! v% nlong_query_time = 2
$ o1 A2 R" D5 z9 Y z* t7 C8 i設定當 SQL 語句執行時間超過 2 秒時, 便會將 SQL 語句儲存。
" p" X& ~5 o( ]/ l; Q5 p0 L2 N5 Y; f- A4 b' ^# A
修改好 my.cnf 後, 重新啟動 MySQL 便完成了。
7 d; ?: O# u! V, V% J+ p) G' m. F& [6 b( M" B0 U" P
: f+ d- s: r% G+ o/ K5 K |
|