mysql中pager命令的妙用 在mysql 中,如果linux下,使用pager命令將大大提高工作效率,下面重點看幾個例子: 1 首先看下基本用法 www.2cto.com mysql> pager less PAGER set to 'less' mysql> show engine innodb status\G 這個時候就可以開始使用了less模式了,可以使用空格到下一頁,quit退出; 甚至可以直接執行linux下的腳本,比如有個腳本在 /tmp/下的lock_waits.sh 則可以: mysql> pager /tmp/lock_waits PAGER set to '/tmp/lock_waits' 會執行/tmp/lock_waits的腳本 www.2cto.com 2 當要處理大量的數據集的時候,如果只想關心結果,可以這樣: mysql> pager cat > /dev/null PAGER set to 'cat > /dev/null' #比如執行一系列的冗長的執行計劃語句 ,忽略中間過程輸出,直接只顯示耗時 mysql> SELECT ... 1000 rows in set (0.91 sec) mysql> SELECT ... 1000 rows in set (1.63 sec) 3 又比如,如果你在進行SQL調優,有大量的結果產生 mysql> SELECT ... [..] 989 rows in set (0.42 sec) 可以通過checksum去比較每次調整後的SQL語句所產生的結果是否是相同的 mysql> pager md5sum PAGER set to 'md5sum' # Original query mysql> SELECT ... 32a1894d773c9b85172969c659175d2d - 1 row in set (0.40 sec) # Rewritten query - wrong mysql> SELECT ... fdb94521558684afedc8148ca724f578 - 1 row in set (0.16 sec) 這裡checksum不同,所以重寫的SQL語句有問題 4 如果有大量的連接,用show processlist看會比較不大方便,比如要知道哪些當前的連接是睡眠或者死掉的,就不大方便,可以這樣: mysql> pager grep Sleep | wc -l PAGER set to 'grep Sleep | wc -l' mysql> show processlist; 337 346 rows in set (0.00 sec) 馬上看到當前有多少連接sleep了; www.2cto.com 進一步,要知道每一種狀態的連接情況,可以這樣: mysql> pager awk -F '|' '{print $6}' | sort | uniq -c | sort -r PAGER set to 'awk -F '|' '{print $6}' | sort | uniq -c | sort -r' mysql> show processlist; 309 Sleep 3 2 Query 2 Binlog Dump 1 Command 當然,也可以用SQL查詢的方式實現了: mysql> SELECT COUNT(*) FROM INFORMATION_SCHEMA.PROCESSLIST WHERE COMMAND='Sleep'; SELECT COMMAND,COUNT(*) TOTAL FROM INFORMATION_SCHEMA.PROCESSLIST GROUP BY COMMAND ORDER BY TOTAL DESC;