首頁  >  文章  >  資料庫  >  mysql中pager命令的妙用_MySQL

mysql中pager命令的妙用_MySQL

WBOY
WBOY原創
2016-06-01 13:36:341344瀏覽

bitsCN.com

mysql中pager命令的妙用

 

 在mysql 中,如果linux下,使用pager命令将大大提高工作效率,下面重点看几个例子: 

 

1 首先看下基本用法

 

  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的脚本

   

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了;

  进一步,要知道每一种状态的连接情况,可以这样: 

    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; 

 

bitsCN.com
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn