有時發覺程式執行很慢, 其中一個要檢查的地方是資料庫。MySQL 可以將執行過的 SQL 語句全部紀錄下來, 或者可以只是將執行慢的 SQL 語句紀錄下來, 這樣對於 MySQL 語句的 Debug 就輕鬆很多了。
4 h9 t% x# W7 x {. x" ?! L! u5 h7 Y" b( U
要紀錄執行慢的 SQL 語句, 可以透過修改 my.cnf 完成, my.cnf 多數在以下位置:- f( ?+ w0 N0 r4 |/ C
, F+ U: t2 u. b; e8 H$ o/etc/my.cnf. }( [8 B- a, x8 b2 _2 y+ n
/etc/mysql/my.cnf; n% }( ?& H" x1 M+ } ?' a" B
, q s* R3 K, A4 [1 G
先開啟 my.cnf, 在 [mysqld] 段落加入以下幾行:! T4 q# B8 N) S2 I m" H h$ H3 x) ?
slow_query_log = 1: _- {9 d }. p- x
slow_query_log_file = /var/log/mysql-slow.log2 T5 n. W9 U T5 ~* }' s
long_query_time = 2
, D* v! _# D0 m6 {1 L以上幾行的意思分別是:" j" Y* }8 _+ t, }. c: B. e
# U$ s+ A7 U; Q; w- b. i
slow_query_log = 1
7 U) w& K! Q7 W R/ y3 `& R/ [開啟紀錄執行慢的 SQL 語句:! ~, a2 B" C$ u& f; p
@/ q& \0 ^9 j7 Zslow_query_log_file = /var/log/mysql-slow.log6 D" M0 B% [, d( P0 v6 C! n
設定紀錄檔的位置在 /var/log/mysql-slow.log* w8 i% A3 ~9 X' f6 I
5 Y! G! C: Q2 b6 _
long_query_time = 2
: [' E4 A* A( ^9 q8 S) g" C- U! w設定當 SQL 語句執行時間超過 2 秒時, 便會將 SQL 語句儲存。
3 s0 \% }1 w* u% K1 p: g0 G0 w+ Y! A/ c/ Q7 `
修改好 my.cnf 後, 重新啟動 MySQL 便完成了。: N6 Z' A' |: h2 y' l/ d! p
9 q( m% g7 d+ d) ?
9 h% x1 _# d* I |( d |
|