Home  >  Article  >  Database  >  mysql中pager命令的妙用_MySQL

mysql中pager命令的妙用_MySQL

WBOY
WBOYOriginal
2016-06-01 13:36:341344browse

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
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn