tid=96870&有時發覺程式執行很慢, 其中一個要檢查的地方是資料庫。MySQL 可以將執行過的 SQL 語句全部紀錄下來, 或者可以只是將執行慢的 SQL 語句紀錄下來, 這樣對於 MySQL 語句的 Debug 就輕鬆很多了。
, v/ `' }6 K# K
6 g3 g% K" c$ b: V7 P要紀錄執行慢的 SQL 語句, 可以透過修改 my.cnf 完成, my.cnf 多數在以下位置:# _' m; D/ _6 {( C2 i* l/ O
`" ^0 `$ j! a: ^4 X0 m
/etc/my.cnf
* d# a6 d7 `/ j/etc/mysql/my.cnf
1 C0 q7 P) H, N, n. k) A* V: u: j' p! y7 ~! }* a
先開啟 my.cnf, 在 [mysqld] 段落加入以下幾行:/ M+ E# R- Q. i0 h/ p
slow_query_log = 1, O. @7 M# }- r
slow_query_log_file = /var/log/mysql-slow.log( a) f" M9 ~ k4 D' ?. ~2 f
long_query_time = 2 4 A. K: X, }& [# x @( c/ p* _1 ]% H
以上幾行的意思分別是:4 e/ P$ W) U6 b4 _# A; r7 z
# ^- O8 g& h3 ~4 kslow_query_log = 1' ~, a: m+ g+ H( g2 J+ V! v
開啟紀錄執行慢的 SQL 語句:
8 g! O8 y6 y \' ?- w/ Q, ~' z! K5 O4 C5 {6 \+ F
slow_query_log_file = /var/log/mysql-slow.log8 }3 Y$ g" D/ {! k( @( x3 V
設定紀錄檔的位置在 /var/log/mysql-slow.log
9 V: c+ @" ]' a* ? Z
+ E$ I! i+ M% l" Ulong_query_time = 21 W- _. F5 W6 A
設定當 SQL 語句執行時間超過 2 秒時, 便會將 SQL 語句儲存。
1 o1 X, H1 k% U2 }- _% w
1 S( j5 p3 M+ k$ h. A9 p7 O4 O修改好 my.cnf 後, 重新啟動 MySQL 便完成了。/ t* l' t% k1 G5 D6 J. j
) r! X8 |2 Z, f1 ]
) F/ V" n: z C, L v8 c( x |