一、分页结果集

Linux系统

中,我们经常也会使用一些分页查看命令,例如less、more等。同样,MySQL客户端也提供了类似的命令,用来帮助我们对查询结果集进行分页。比如,SHOW ENGINE INNODB STATUS时通过分页看锁信息时是非常有用的,这样就不用一屏到底了。

mysql> pager less

PAGER set to 'less'

mysql> show engine innodb status\G

[...]

现在你可以轻松浏览结果集了(使用q退出,空格向下滚动等)。

如果你想离开你的自定义pager,这很容易,只需运行pager命令:

mysql> pager

Default pager wasn't set, using stdout.

或者

mysql> \n

PAGER set to stdout

但是pager命令并不局限于这种基本用法!你可以将查询输出传递给大多数能够处理文本的Unix程序。这里有一些例子。

二、丢弃结果集

有时你不关心结果集,只想查看时间信息。如果你通过更改索引为查询尝试不同的执行计划,则可能会出现这种情况。使用pager可以丢弃结果:

mysql> pager cat > /dev/null

PAGER set to 'cat > /dev/null'

# Trying an execution plan

mysql> SELECT ...

1000 rows in set (0.91 sec)

# Another execution plan

mysql> SELECT ...

1000 rows in set (1.63 sec)

现在,在一个屏幕上查看所有时间信息要容易得多。

三、比较结果集

假设你正在重写查询,并且想要在重写之前和之后检查结果集是否相同。不幸的是,它有很多行:

mysql> SELECT ...

[..]

989 rows in set (0.42 sec)

你可以计算校验和,只比较校验和,而不是手动比较每一行:

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)

嗯,校验和不匹配,出了点问题。我们重试一下:

# Rewritten query - correct

mysql> SELECT ...

32a1894d773c9b85172969c659175d2d  -

1 row in set (0.17 sec)

校验和是相同的,重写的查询很可能产生与原始查询相同的结果。

四、结合系统命令

如果MySQL上有很多连接,那么很难读取SHOW PROCESSLIST的输出。例如,如果你有几百个连接,并且你想知道有多少连接处于Sleep状态,手动计算SHOW PROCESSLIST输出中的行可能不是最佳解决方案。使用pager,它很简单:

mysql> pager grep Sleep | wc -l

PAGER set to 'grep Sleep | wc -l'

mysql> show processlist;

337

346 rows in set (0.00 sec)

这应该被解读为346个连接中337正处于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

当然,这些问题可以通过查询INFORMATION_SCHEMA来解决。例如,计算Sleep连接的数量可以通过以下方式完成:

mysql> SELECT COUNT(*) FROM INFORMATION_SCHEMA.PROCESSLIST WHERE COMMAND='Sleep';

+----------+

| COUNT(*) |

+----------+

|      320 |

+----------+

并计算每个状态的连接数可以通过以下方式完成:

mysql> SELECT COMMAND,COUNT(*) TOTAL FROM INFORMATION_SCHEMA.PROCESSLIST GROUP BY COMMAND ORDER BY TOTAL DESC;

+-------------+-------+

| COMMAND     | TOTAL |

+-------------+-------+

| Sleep       |   344 |

| Query       |     5 |

| Binlog Dump |     2 |

+-------------+-------+

但是,有些人可能对编写SQL查询感觉更舒服,而其他人则更喜欢使用命令行工具。

如你所见,pager是你的朋友!它非常易于使用,它可以以优雅和高效的方式解决问题。你甚至可以编写自定义脚本(如果它太复杂而无法放在一行中)并将其传递给pager。总之,多使用pager命令能让你的工作事半功倍。

mysql pager_介绍一些有趣的MySQL pager命令相关推荐

  1. MySQL架构介绍(一)

    1.简介 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 ...

  2. 数据库【MySQL数据库介绍】

    数据库[MySQL数据库介绍] 1.MySQL概要 MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司.MySQL 是一种关联数据库管理系统,关联 ...

  3. mysql数据库建仓范式_存mysql个数

    MySQL学习笔记之数据类型详解 注:以下内容针对MySQL5.0及以上版本 MySQL的数据类型非常多,选择正确的数据类型对于获得高性能至关重要,本文是我结合网上看到的一些blog加上<高性能 ...

  4. mysql集群方案PXC_【Mysql】MySQL集群方案之PXC(percona xtradb cluster)

    Mysql PXC介绍 在传统的Mysql主从架构上,采用的Replaction是异步复制方式,这种方式会存在数据弱一致性的问题,数据写入主库之后因为网络及复制的延迟从库不能马上获取刚刚插入的数据,同 ...

  5. mysql pager cat_有趣的mysql pager命令

    一.分页结果集 在Linux系统中,我们经常也会使用一些分页查看命令,例如less.more等.同样,MySQL客户端也提供了类似的命令,用来帮助我们对查询结果集进行分页.比如,SHOW ENGINE ...

  6. MySQL数据库介绍、安装(服务端软件安装、客户端软件安装(图形化界面客户端和命令行客户端))

    1. MySQL数据库的介绍 MySQL是一个关系型数据库管理系统,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System, ...

  7. 17.1 MySQL主从介绍 17.2 准备工作 17.3 配置主 17.4 配置从 17.5 测试主从同步

    2019独角兽企业重金招聘Python工程师标准>>> 第十七章 MySQL主从配置 17.1 MySQL主从介绍 MySQL主从又叫做Replication.AB复制.简单讲就是A ...

  8. [第11天]mySQL简单介绍

    昨天我们说到了SQL,很多朋友说很难,我也知道很难的,说那个只是让大家有个基本的了解,不然以后说一些问题时会很困难的.今天我们来说mySQL,之所以说它是为了让大家对数据库能有个较深的了解.MySQL ...

  9. mysql的介绍;安装及基本配置;mysql数据库运行必备技能

    一.MySQL的介绍 1. 数据库:数据库集中存放位置 1) 常见的数据库类型:关系型(mysql.oracle.SQLserver2008,DB2),树型(windows注册表).非关系型(NoSQ ...

最新文章

  1. erp沙盘采购总监的心得_erp沙盘模拟采购总监心得
  2. 【.Net 学习系列】-- EF Core实践(Code First)
  3. Common Lisp 操作Mysql
  4. delphi 字符串处理中的怪异现象与处理
  5. 拓端tecdat|R语言文本挖掘tf-idf,主题建模,情感分析,n-gram建模研究
  6. c和指针(小白笔记)
  7. viper4android安装方法,安卓音效神器ViPER4Android_FX安装教程
  8. matlab实对称矩阵对角化,基于Matlab的实对称矩阵对角化
  9. java毕业设计网站ssm医院医药药品管理系统
  10. [ARM 的高级命名术 A32 T32 A64 Thumb Thumb2 AArch32 AArch64]
  11. Teiid 基于数据联邦的集成方案
  12. python多线程爬取m3u8视频(包含AES解密)
  13. [转]查看Zookeeper服务器状态信息的一些命令
  14. webpack安装及配置
  15. (一)Reactor模式详解
  16. 【图像处理】获取图片像素点
  17. Java equal
  18. 使用signal函数自定义信号处理方式
  19. 进销存管理系统的设计与实现(spring;springMVC;spring boot)
  20. 巨蟒python全栈开发-第11阶段 ansible_project1

热门文章

  1. 64安装oracle 9i,redhat 4.7 x86_64安装oracle 9i到17% copying naeet.o无响应
  2. MB1C MIGO入库时【不可能为条目A999 GBB CN01 BSA 7920确立帐户】解决方案
  3. 电脑里每个盘下都出现$RECYCLE.BIN和system volume information等文件夹
  4. HDU1753—大明A+B(大正小数相加)
  5. 恭喜这2个大模型开源项目进入OpenI启智社区孵化培育管道
  6. 激活Windows 10
  7. c++ error LNK2005......错误解决方法
  8. 如何使用POI导出excel表格,以及处理浏览器无法识别下载文件的问题
  9. 如何提升深度思考的能力
  10. 陪你读书之《R语言实战》