有時發覺程式執行很慢, 其中一個要檢查的地方是資料庫。MySQL 可以將執行過的 SQL 語句全部紀錄下來, 或者可以只是將執行慢的 SQL 語句紀錄下來, 這樣對於 MySQL 語句的 Debug 就輕鬆很多了。. H2 X: T1 H# F- {( x$ |4 a
; F. O8 D2 K, w+ U; b" [; a5 f要紀錄執行慢的 SQL 語句, 可以透過修改 my.cnf 完成, my.cnf 多數在以下位置:
w2 S* w3 I0 I! f& [( P3 O- F$ o! i! v6 \4 v, i k1 j
/etc/my.cnf
/ A" K3 Y8 b5 w Z/etc/mysql/my.cnf
' K2 X' c- Y. _. d4 G m8 ^. J4 c5 P' Q+ ~/ W! \" V9 O
先開啟 my.cnf, 在 [mysqld] 段落加入以下幾行:0 ?+ [) Q4 P9 I" }1 Z/ o* x
slow_query_log = 1
& o N! I9 s& J" I* U+ l5 p1 Gslow_query_log_file = /var/log/mysql-slow.log
* W$ J5 l0 r1 S+ @' S0 } vlong_query_time = 2
5 E* S* S9 s+ C( s: m以上幾行的意思分別是:8 B( M6 R+ F7 {* K, \
+ J2 x6 ?, R7 A) Tslow_query_log = 1; S( [: n9 W, h8 F4 [4 V
開啟紀錄執行慢的 SQL 語句:
. S) S7 y! w7 z$ J0 j# A
3 V$ _4 u( z; m( ^- Gslow_query_log_file = /var/log/mysql-slow.log& R8 x; p% R2 {
設定紀錄檔的位置在 /var/log/mysql-slow.log
# J1 r( k1 B7 y# Y$ W. B2 `3 j: T% d, ~5 R* O* ^
long_query_time = 2
0 a9 b8 ^3 Q- s- v設定當 SQL 語句執行時間超過 2 秒時, 便會將 SQL 語句儲存。
: J2 L7 N% p% |* E8 z, q1 | R
" `/ l6 T3 {. B% h% t修改好 my.cnf 後, 重新啟動 MySQL 便完成了。4 W3 b D. Y( B, c/ U( [
; |0 r) J& g) F0 E
: z+ ?) P. y1 v1 w5 o3 a, G |
|