tid=96870&有時發覺程式執行很慢, 其中一個要檢查的地方是資料庫。MySQL 可以將執行過的 SQL 語句全部紀錄下來, 或者可以只是將執行慢的 SQL 語句紀錄下來, 這樣對於 MySQL 語句的 Debug 就輕鬆很多了。
/ _4 i% r! i: z# m# E' o9 K
# G8 \! Z b* r" ?1 L, n* N要紀錄執行慢的 SQL 語句, 可以透過修改 my.cnf 完成, my.cnf 多數在以下位置:) Y& g1 w* b7 `1 K
. j# P' ?' D d7 r* y* u/etc/my.cnf# {$ m s' Q! x5 i/ ^
/etc/mysql/my.cnf' ?) N0 J. _5 D" ~7 q; f$ E& b$ s
3 Y6 w4 t" g: u
先開啟 my.cnf, 在 [mysqld] 段落加入以下幾行:
% X9 M% d, P& E; _, p$ ], Xslow_query_log = 1
m1 e" x$ c/ \slow_query_log_file = /var/log/mysql-slow.log
: x8 v8 g; I% k \, vlong_query_time = 2
5 @& p, `% c3 M% u7 L: o' S以上幾行的意思分別是:
4 A' P1 \/ T4 G, r0 P5 T+ f. k6 E+ x# _2 Z$ f" J9 Q9 t" w
slow_query_log = 1
. Z, F4 o: D) u0 t開啟紀錄執行慢的 SQL 語句:. z1 K# ?6 @! _. J9 z
; O0 R8 L/ R, H3 X- K6 [/ W' @slow_query_log_file = /var/log/mysql-slow.log
, D9 Y$ S& W: k% g設定紀錄檔的位置在 /var/log/mysql-slow.log+ q& i5 x3 [ \' @, y
8 L* b: r' c3 L `5 ]& m8 ~long_query_time = 2
" s) U1 o3 F2 c1 |# T設定當 SQL 語句執行時間超過 2 秒時, 便會將 SQL 語句儲存。 e1 l- w% z' |$ t1 L5 I& d% F
* Z- R4 ?2 Y' f0 O修改好 my.cnf 後, 重新啟動 MySQL 便完成了。! Y9 g' B' K' h4 C4 w- U' a
$ P2 V- c0 `! D% ?- w+ G5 T. m- Z' p
+ O: |9 n* i& n6 ?% b$ { |