有時發覺程式執行很慢, 其中一個要檢查的地方是資料庫。MySQL 可以將執行過的 SQL 語句全部紀錄下來, 或者可以只是將執行慢的 SQL 語句紀錄下來, 這樣對於 MySQL 語句的 Debug 就輕鬆很多了。: ?: N( w! [' w5 z$ {
# R3 V3 d) Q5 k1 g: F
要紀錄執行慢的 SQL 語句, 可以透過修改 my.cnf 完成, my.cnf 多數在以下位置:: [ i# A7 P0 j% y$ ~
! ?; A- c7 v; T9 y/ X/etc/my.cnf
1 M' y0 y6 e' u( Q( a/etc/mysql/my.cnf
. z- k- W/ v M
9 n6 K9 W! a$ L3 w, u$ Z先開啟 my.cnf, 在 [mysqld] 段落加入以下幾行:) O b' _" p2 Y+ Q; g, G
slow_query_log = 1
% C9 p! ?6 C5 e5 S! V- a* r( S1 pslow_query_log_file = /var/log/mysql-slow.log
2 t% X) V1 h1 r! w1 `2 Nlong_query_time = 2 * L: A1 B: l Y" a- M
以上幾行的意思分別是:$ O2 s; i$ ?6 e4 p; d
+ }/ s, U [ [! J4 [' cslow_query_log = 10 a- L$ i' e" L9 \: O4 ]
開啟紀錄執行慢的 SQL 語句:
, ?. T, ]9 Z H' y! D0 k- r9 e8 `; z5 W/ O: |
slow_query_log_file = /var/log/mysql-slow.log
! k% A- Q9 }9 S" d2 @5 k) ] S0 k6 K設定紀錄檔的位置在 /var/log/mysql-slow.log* S3 Z8 ^! U8 b1 S
1 _' ^* Z5 J" S) g
long_query_time = 29 y( N& [" T' L/ M5 z5 i4 ?& p! }
設定當 SQL 語句執行時間超過 2 秒時, 便會將 SQL 語句儲存。
0 T, W* S2 H o/ n* \
1 K7 ^( B* e5 _修改好 my.cnf 後, 重新啟動 MySQL 便完成了。
$ a+ q2 A1 ?: O" A$ [, m( t! L) q- G
1 ^' `, x6 V5 H- M" Y& {
|
|