有時發覺程式執行很慢, 其中一個要檢查的地方是資料庫。MySQL 可以將執行過的 SQL 語句全部紀錄下來, 或者可以只是將執行慢的 SQL 語句紀錄下來, 這樣對於 MySQL 語句的 Debug 就輕鬆很多了。
( b0 v) k' F; s" v) j p( _4 J8 x* _$ r9 P$ \9 v' u
要紀錄執行慢的 SQL 語句, 可以透過修改 my.cnf 完成, my.cnf 多數在以下位置:9 g i: t$ R* Y3 ~8 D
, y7 g6 s( |" F/ g: k3 m. g
/etc/my.cnf
! K( Y; P/ ^: j0 p4 Z' j/ O+ q/etc/mysql/my.cnf
1 |3 l' k4 m1 M; @) H% o' t- a
: n% G7 q4 y" V* P0 D: V先開啟 my.cnf, 在 [mysqld] 段落加入以下幾行:
0 D9 t2 G; l9 M2 l. z8 ~slow_query_log = 1# ]0 P5 p+ L( A2 v! F5 h! a* y
slow_query_log_file = /var/log/mysql-slow.log" B" Q6 B+ ~6 d2 d' H, T
long_query_time = 2 ( ?# [- t2 W8 e. H) V2 @8 u5 w$ j
以上幾行的意思分別是:
' A. x( B- H- a% W$ W7 Z" ~) a1 P W w4 w( l
slow_query_log = 1% L6 i* p U! \) G$ m: }
開啟紀錄執行慢的 SQL 語句:
_5 H- q5 S* y# R! j. Z" k1 `2 r2 A! i/ i0 s
slow_query_log_file = /var/log/mysql-slow.log
3 y5 Y' [4 O. V/ i7 ^$ R( g設定紀錄檔的位置在 /var/log/mysql-slow.log, C0 r1 S' h, f
" N0 u6 a* s- A+ O& X
long_query_time = 2
# y1 @/ }. k6 O2 e: B設定當 SQL 語句執行時間超過 2 秒時, 便會將 SQL 語句儲存。
, G9 d( k: A. F! s4 v3 b
" M- m: ^& F( r+ [修改好 my.cnf 後, 重新啟動 MySQL 便完成了。! n1 Q, _ G' \3 W) Q& f' f* A
7 ?, N, g- e0 g' e0 C6 ]4 a
$ ~; @4 j2 d0 x/ y* A& R y9 S; Y7 b |
|