美文网首页
介绍一些有趣的MySQL pager命令

介绍一些有趣的MySQL pager命令

作者: hangba843 | 来源:发表于2019-01-06 22:09 被阅读0次

一、分页结果集

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命令

    一、分页结果集 在Linux系统中,我们经常也会使用一些分页查看命令,例如less、more等。同样,MySQL客...

  • MySQL 使用集锦

    1.MySql命令下分页显示数据: 输入: pager less; 即可 2.配置文件解释 每个节点名称表示的是...

  • mysql的一些高级操作

    介绍一些mysql的一些命令: 聚合 聚合函数有哪些:count() min() max() avg() su...

  • MySQL中常用的命令大全

    本文介绍下,mysql中常用的一些命令,包括创建与修改数据库、数据库中的表,mysql的权限管理命令grant、r...

  • Linux实用工具-mysql

    描述 这里简单介绍Linux下面mysql命令(以及相关命令)操作mysql数据库的方法。 举例 启动mysqld...

  • 十个实用MySQL命令及函数

    前言 今天介绍一些MySQL常用的实用命令,都是一些比较简单的命令。已经知道的朋友,就当是巩固吧,不知道的童鞋,可...

  • 15 个有趣好玩的linux shell 命令

    今天介绍一些有趣的linux shell命令,所有的命令都可以使用man + 命令名称来查看完整的使用方法。 1,...

  • 聊聊gost的Pager

    序 本文主要研究一下gost的Pager Pager gost/hash/page/pager.go Pager接...

  • 15个有趣好玩的linux shell命令

    今天介绍一些有趣的linux shell命令,所有的命令都可以使用man + 命令名称 来查看完整的使用方法。 1...

  • MYSQL的存储目录以及默认数据库

    介绍MYSQL的存储目录 Ⅰ、通过命令查找Mysql数据存放的位置 ​ 可以看到 路径是 /usr/...

网友评论

      本文标题:介绍一些有趣的MySQL pager命令

      本文链接:https://www.haomeiwen.com/subject/pemerqtx.html