英语法语西班牙语

Ad


OnWorks 网站图标

innotop - 云端在线

通过 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器在 OnWorks 免费托管服务提供商中运行 innotop

这是 innotop 命令,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器

程序:

您的姓名


innotop - MySQL 和 InnoDB 事务/状态监视器。

概要


正常监控服务器:

创新

要从文件监视 InnoDB 状态信息:

innotop /var/log/mysql/mysqld.err

要在管道和过滤器配置中以非交互方式运行 innotop:

innotop --count 5 -d 1 -n

要使用特定的用户名和密码监视另一个系统上的数据库:

innotop -u -p -H

商品描述


innotop 监控 MySQL 服务器。 它的每种模式都向您展示了什么的不同方面
发生在服务器中。 例如,有一种用于监控复制的模式,一种用于
查询,一个用于交易。 innotop 会定期刷新其数据,因此您会看到
更新视图。

innotop 为高级用户提供了许多功能,但您可以通过虚拟方式启动和运行它
没有配置。 如果您刚刚开始,请参阅“快速入门”。 按 '?' 在任何
运行 innotop 以获取上下文相关帮助的时间。

快速开始


要启动 innotop,请打开终端或命令提示符。 如果你已经安装了 innotop
在您的系统中,您应该能够输入“innotop”并按 Enter 键; 否则,你
将需要更改到 innotop 的目录并键入“perl innotop”。

如果没有指定选项,innotop 将尝试连接到本地主机上的 MySQL 服务器
将 mysql_read_default_group=client 用于其他连接参数。 如果你需要
指定不同的用户名和密码,分别使用 -u 和 -p 选项。 到
监视另一台主机上的 MySQL 数据库,请使用 -h 选项。

连接后,innotop 应显示如下内容:

[RO] 查询列表 (? for help) localhost, 01:11:19, 449.44 QPS, 14/7/163 con/run

CXN 加载 QPS 时慢 QCacheHit KCacheHit BpsIn BpsOut
本地主机总计 0.00 1.07k 697 0.00% 98.17% 476.83k 242.83k

CXN Cmd ID 用户主机数据库时间查询
本地主机查询 766446598 测试 10.0.0.1 foo 00:02 INSERT INTO 表 (

(此示例在右侧被截断,因此在运行 'man
innotop')

如果你的服务器很忙,你会看到更多的输出。 注意屏幕上的第一行,
它告诉你 readonly 设置为 true ([RO]),你处于什么模式以及什么服务器
你连接到。 您可以通过按键切换到其他模式; 按“T”切换
例如,到 InnoDB 事务列表。

按下 '?' 键查看当前模式下哪些键处于活动状态。 您可以按任何
这些键和 innotop 将执行请求的操作或提示您输入更多信息。
如果您的系统有 Term::ReadLine 支持,您可以使用 TAB 和其他键来自动完成
并编辑输入。

要退出 innotop,请按“q”键。

配置


innotop 主要是通过它的配置文件来配置的,但是一些配置
选项可以来自命令行。 您还可以指定一个文件来监视 InnoDB
状态输出; 有关更多详细信息,请参阅“监视文件”。

您可以通过在选项名称前加上 --no 来否定某些选项。 例如,--noinc
(或--no-inc)否定“--inc”。

- 颜色
启用或禁用终端着色。 对应于“颜色”配置文件设置。

--配置
指定要读取的配置文件。 这个选项是非粘性的,也就是说
不会持久化到配置文件本身。

- 数数
退出前仅刷新指定次数(滴答)。 每次刷新都是一个
暂停“间隔”秒,然后从 MySQL 连接请求数据和
打印到终端。

- 延迟
指定在滴答声(刷新)之间暂停的时间量。 对应于
配置选项“间隔”。

- 帮帮我
打印命令行使用摘要并退出。

- 主持人
要连接的主机。

--公司
指定 innotop 应该显示绝对数字还是相对数字(偏移量
从他们以前的值)。 对应于配置选项“status_inc”。

- 模式
指定 innotop 应启动的模式。 对应配置
选项“模式”。

--nonint
启用非交互式操作。 有关更多信息,请参阅“非交互式操作”。

- 密码
用于连接的密码。

- 港口
用于连接的端口。

--跳过中央
不要阅读中央配置文件。

- 用户
用于连接的用户。

- 版
输出版本信息并退出。

- 写
将配置选项“readonly”设置为 0,使 innotop 写入运行
配置到 〜/.innotop/innotop.conf 退出时,如果没有加载配置文件
在启动时。

热键


innotop 是交互式的,您可以通过按键来控制它。

· 大写键在模式之间切换。

· 小写键在当前模式下启动一些操作。

· 其他键做一些特殊的事情,比如更改配置或显示 innotop 许可证。

按 '?' 随时查看当前活动的键及其功能。

模式


innotop 的每种模式都从服务器检索并显示特定类型的数据
你在监控您可以使用大写键在模式之间切换。 下面是一个
每种模式的简要说明,按字母顺序排列。 要切换到模式,请按
在以下列表中列在其标题前面的键:

B: InnoDB 缓冲区
此模式显示有关 InnoDB 缓冲池、页面统计信息、插入
缓冲区和自适应哈希索引。 数据来自 SHOW INNODB STATUS。

此模式包含“buffer_pool”、“page_statistics”、“insert_buffers”和
默认情况下,“adaptive_hash_index”表。

C:命令摘要
此模式类似于 mytop 的命令摘要模式。 它显示“cmd_summary”
表,如下所示:

命令摘要 (? 寻求帮助) localhost, 25+07:16:43, 2.45 QPS, 3 thd, 5.0.40
_____________________ 命令摘要 _____________________
名称 值 Pct Last Incr Pct
选择_扫描 3244858 69.89% 2 100.00%
选择范围 1354177 29.17% 0 0.00%
选择_full_join 39479 0.85% 0 0.00%
选择_full_range_join 4097 0.09% 0 0.00%
选择范围检查 0 0.00% 0 0.00%

命令汇总表是通过从“STATUS_VARIABLES”中提取变量来构建的。
变量必须是数字,并且必须与“cmd_filter”给出的前缀匹配
配置变量。 然后变量按值降序排序,然后
与最后一个变量相比,如上所示。 百分比列是百分比
表中所有变量的总和,因此您可以看到
变量。

该示例显示了前缀为“Select_”时您看到的内容。 默认前缀是
“通讯_”。 您可以使用“s”键选择前缀。

这更像是在内存中运行 SHOW VARIABLES LIKE "prefix%" 并且很好
格式。

值在所有服务器上聚合。 Pct 列不正确
跨多个服务器聚合。 这是分组的已知限制
未来可能会修复的算法。

D: InnoDB 死锁
此模式显示了最后一个 InnoDB 死锁中涉及的事务。 第二张桌子
显示每个事务持有和等待的锁。 死锁是由循环引起的
在等待图中,所以应该有两个锁持有,一个等待除非
死锁信息被截断。

InnoDB 将死锁信息放在 SHOW INNODB 中的一些其他信息之前
状态输出。 如果有很多锁,死锁信息会增长很多
大,并且 SHOW INNODB STATUS 输出的大小有限制。 一个大的
死锁可以填满整个输出,甚至被截断,并阻止你看到
其他信息。 如果您在另一种模式下运行 innotop,例如 T
模式,突然间你什么也看不到,你可能想检查一下
死锁已经清除了您需要的数据。

如果有,您可以创建一个小的死锁来替换大的死锁。 使用“w”键
用一个小的“消除”大的僵局。 这将不起作用,除非你有
为连接定义了一个死锁表(参见“服务器连接”)。

您还可以配置 innotop 以自动检测何时需要大死锁
替换为一个小的(参见“auto_wipe_dl”)。

默认情况下,此模式显示“deadlock_transactions”和“deadlock_locks”表。

F:InnoDB 外键错误
该模式显示最后一个InnoDB外键错误信息,比如表所在的
它发生了,什么时候、谁以及什么查询导致了它,等等。

InnoDB 有各种各样的外键错误消息,其中许多只是
难以解析。 innotop 并不总是在这里做得最好,但代码太多了
致力于解析这个凌乱的、无法解析的输出,innotop 可能永远不会
在这方面很完美。 如果 innotop 没有显示您需要查看的内容,请查看
直接在状态文本处。

此模式默认显示“fk_error”表。

I: InnoDB I/O 信息
此模式显示 InnoDB 的 I/O 统计信息,包括 I/O 线程、待处理 I/O、文件
I/O 杂项和日志统计信息。 它显示“io_threads”、“pending_io”、
默认情况下,“file_io_misc”和“log_statistics”表。

L:锁
此模式显示有关当前锁的信息。 目前只有 InnoDB 锁
支持,默认情况下您只会看到事务正在等待的锁。
此信息来自 InnoDB 状态文本的 TRANSACTIONS 部分。 如果
你有一个非常繁忙的服务器,你可能有频繁的锁等待; 它有助于能够
查看哪些表和索引是锁的“热点”。 如果您的服务器正在运行
很好,这种模式应该什么都不显示。

你可以配置 MySQL 和 innotop 来监控不仅是事务的锁
正在等待,但目前持有的也在等待。 你可以用 InnoDB Lock 做到这一点
监视器 (http://dev.mysql.com/doc/en/innodb-monitor.html>)。 它没有记录在
MySQL 手册,但也使用以下语句创建锁监视器
影响 SHOW INNODB STATUS 的输出,其中 innotop 使用:

创建表 innodb_lock_monitor(a int) ENGINE=INNODB;

这会导致 InnoDB 每 16 秒左右将其输出打印到 MySQL 文件,如
手册中说明,但它也使正常的 SHOW INNODB STATUS 输出包括
锁定信息,innotop 可以解析和显示(这是未记录的
功能)。

这意味着您可以做看似不可能的事情:在有限的范围内(InnoDB
截断输出中的一些信息),你可以看到哪个事务持有
锁定其他正在等待的东西。 您还可以启用和禁用 InnoDB 锁
在此模式下使用按键映射进行监控。

此模式默认显示“innodb_locks”表。 这是屏幕示例
当一个连接正在等待另一个连接持有锁时:

_________________________________ InnoDB 锁 __________________________
CXN ID 类型 Waiting Wait Active Mode DB Table Index
本地主机 12 记录 1 00:10 00:10 X 测试 t1 PRIMARY
本地主机 12 表 0 00:10 00:10 IX 测试 t1
本地主机 12 记录 1 00:10 00:10 X 测试 t1 PRIMARY
本地主机 11 表 0 00:00 00:25 IX 测试 t1
本地主机 11 记录 0 00:00 00:25 X 测试 t1 PRIMARY

您可以看到第一个连接 ID 12 正在等待对 PRIMARY 键的锁定
test.t1,已经等了10秒。 第二个连接不等待,
因为 Waiting 列是 0,但它在同一个索引上持有锁。 那告诉你
连接 11 正在阻塞连接 12。

M:主/从复制状态
此模式以三种方式显示 SHOW SLAVE STATUS 和 SHOW MASTER STATUS 的输出
表。 前两个将slave的状态分为SQL和I/O线程状态,以及
最后显示主状态。 过滤器用于消除非从属服务器
从表和主表中的非主服务器。

此模式显示“slave_sql_status”、“slave_io_status”和“master_status”
默认情况下的表。

O:打开表
本节来自 MySQL 的 SHOW OPEN TABLES 命令。 默认情况下它被过滤
显示一个或多个查询正在使用的表,以便您快速查看
哪些表很“热”。 您可以使用它来猜测哪些表可能被锁定
含蓄地。

默认情况下,此模式显示“open_tables”模式。

问:查询列表
此模式显示 SHOW FULL PROCESSLIST 的输出,很像 我的顶的查询列表
模式。 这种模式确实 不能 显示 InnoDB 相关信息。 这可能是其中之一
一般用途最有用的模式。

有一个信息标题显示有关您的一般状态信息
服务器。 您可以使用“h”键打开和关闭它。 默认情况下,innotop 隐藏
非活动进程和它自己的进程。 您可以使用“i”打开和关闭这些
和 'a' 键。

您可以使用“e”键从该模式解释查询。 这将显示查询的
全文,EXPLAIN 的结果,在较新的 MySQL 版本中,甚至优化的
由 EXPLAIN EXTENDED 产生的查询。 innotop 还尝试重写某些查询
使它们可以解释。 例如,INSERT/SELECT 语句是可重写的。

默认情况下,此模式显示“q_header”和“processlist”表。

R:InnoDB 行操作和信号量
此模式显示 InnoDB 行操作、行操作杂项、信号量和
来自等待数组的信息。 它显示“row_operations”,
默认情况下,“row_operation_misc”、“semaphores”和“wait_array”表。

S:变量和状态
此模式计算统计信息,例如每秒查询数,并将它们打印出来
几种不同的风格。 您可以显示绝对值或增量值
滴答声。

您可以通过按一个键在视图之间切换。 's' 键打印一行
每次屏幕更新时,以 vmstat的. 'g' 键将视图更改为
相同数字的图形,有点像 负载. “v”键将视图更改为
左侧的变量名称透视表,连续更新滚动
屏幕从左到右。 您可以选择在屏幕上放置多少更新
使用“num_status_sets”配置变量。

在交互操作中,标题可以缩写以适应屏幕。 你选
使用“c”键显示哪些变量,从预定义的集合中选择,或
允许您创建自己的集合。 您可以使用“e”键编辑当前集。

这种模式不像其他模式那样真正显示任何表格。 相反,它使用一个
表定义以提取和格式化数据,但随后将结果转换为
输出之前的特殊方式。 它使用“var_status”表定义
本。

T:InnoDB 事务
此模式显示来自 InnoDB 监视器输出的事务,在 最佳- 类似的格式。
这种模式是我写innotop的原因。

您可以使用 'k' 和 'x' 键终止查询或进程,并使用
'e' 或 'f' 键。 InnoDB 不会在事务中打印完整的查询,所以
如果查询被截断,解释可能无法正常工作。

可以使用“h”键打开和关闭信息标题。 默认情况下,
innotop 隐藏不活动的事务和它自己的事务。 你可以打开这个
然后用“i”和“a”键关闭。

默认情况下,此模式显示“t_header”和“innodb_transactions”表。

创新达 状态


innotop 显示的第一行是各种“状态栏”。 它包含什么取决于
您所处的模式以及您正在监控的服务器。 前几个字总是
[RO](如果readonly设置为1),innotop模式,如“InnoDB Txns”为T模式,
然后提示按“?” 随时寻求帮助。

服务器
最简单的情况是当您监视单个服务器时。 在这种情况下,名称
连接是状态行的下一个。 这是您创建时给的名称
连接——很可能是 MySQL 服务器的主机名。 接下来是服务器的
正常运行时间。

如果您处于 InnoDB 模式,例如 T 或 B,则下一个词是“InnoDB”,后跟一些
有关用于渲染屏幕的 SHOW INNODB STATUS 输出的信息。 第一个字
是自上次 SHOW INNODB STATUS 以来的秒数,InnoDB 用它来计算
一些每秒统计数据。 接下来是一个笑脸,表示 InnoDB 是否
输出被截断。 如果笑脸是:-),一切都很好; 没有截断。 一种
:^| 意味着事务列表太长,InnoDB 只打印了一些
交易。 最后,皱眉:-( 表示输出不完整,这可能是由于
到打印太多锁信息的死锁(请参阅“D:InnoDB 死锁”)。

接下来的两个词表示服务器的每秒查询数(QPS)和线程数
(连接)存在。 最后,服务器的版本号是最后一件事。

处理器
如果您正在监视多个服务器(请参阅“服务器连接”),状态行会
不显示有关单个服务器的任何详细信息。 相反,它显示了
活动的连接。 同样,这些是您指定的连接名称,它们是
可能是服务器的主机名。 有错误的连接以
感叹号。

如果您正在监视一组服务器(请参阅“服务器组”),状态行会显示
组名。 如果组中的任何连接有错误,则该组的名称为
其次是没有错误的连接部分。

有关 innotop 错误处理的更多详细信息,请参阅“错误处理”。

监测 A 文件
如果您在命令行上提供文件名,则 innotop 将不会连接到任何位于以下位置的服务器
全部。 它将监视 InnoDB 状态输出的指定文件并将其用作其数据
来源。 它将始终显示一个名为“文件”的连接。 而且既然不能
连接到服务器,它无法确定它正在监控的服务器已经运行了多长时间;
因此它将服务器的正常运行时间计算为自 innotop 开始运行以来的时间。

服务器 管理


虽然 innotop 主要是一个监视器,可以让您观察和分析您的服务器,但它可以
还向服务器发送命令。 最常用的命令是终止查询
和停止或启动奴隶。

您可以终止连接,或者在较新版本的 MySQL 中终止查询但不终止查询
连接,来自“Q:查询列表”和“T:InnoDB 事务”模式。 按“k”发出
KILL 命令,或 'x' 发出 KILL QUERY 命令。 innotop 将提示您输入
要杀死的服务器和/或连接 ID(如果只有一个,innotop 不会提示您
任何输入的可能选择)。 innotop 预先选择运行时间最长的查询,或者
最旧的连接。 用“y”确认命令。

在“M: Master mode”中的“Slave Replication Status”中,您可以使用
'a' 和 'o' 键,分别。 您可以一次将这些命令发送给多个从站。
innotop 为你填写了一个默认的 START SLAVE 或 STOP SLAVE 命令,但是你可以
实际编辑命令并发送您想要的任何内容,例如 SET GLOBAL
SQL_SLAVE_SKIP_COUNTER=1 使从站启动时跳过一个 binlog 事件。

您也可以要求 innotop 计算任何从站使用的最早的 binlog 并发出一个
清除主机上的主机日志。 为此使用“b”键。 innotop 将提示您输入
master 在其上运行命令,然后提示您输入该 master 的连接名称
slaves(innotop 无法自己可靠地确定这一点)。 innotop 会发现
这些从属连接使用的最小二进制日志,并建议将其作为参数
清除主日志。

服务器 连接


当您使用“@”创建服务器连接时,innotop 会要求您提供一系列输入,如
如下:

DSN DSN 是数据源名称,它是传递给 DBI 模块的初始参数
用于连接到服务器。 它通常是这样的形式

DBI:mysql:;mysql_read_default_group=mysql;host=主机名

由于此 DSN 传递给 DBD::mysql 驱动程序,因此您应该阅读驱动程序的
“/search.cpan.org/dist/DBD-mysql/lib/DBD/mysql.pm”中的文档“http:
您可以在 DSN 中传递驱动程序的所有选项的确切详细信息。 你可以阅读
有关 DBI 的更多信息,请访问http://dbi.perl.org/docs/>,尤其是在
<http://search.cpan.org/~timb/DBI/DBI.pm>.

mysql_read_default_group=mysql 选项让 DBD 驱动程序读取您的 MySQL 选项
文件,例如 〜/.my.cnf 在 UNIX 系统上。 您可以使用它来避免指定
连接的用户名或密码。

InnoDB 死锁表
这个可选项目告诉 innotop 一个表名,它可以用来故意创建一个
小死锁(请参阅“D:InnoDB 死锁”)。 如果你指定这个选项,你只需要
确保该表不存在,并且 innotop 可以创建和删除该表
使用 InnoDB 存储引擎。 如果您愿意,您可以安全地省略或只接受默认值
不打算使用这个。

用户名
innotop 会询问您是否要指定用户名。 如果你说“y”,它就会
提示您输入用户名。 如果你有一个 MySQL 选项文件,它指定了你的
用户名,您不必指定用户名。

用户名默认为您在运行 innotop 的系统上的登录名。

密码
innotop 会询问您是否要指定密码。 和用户名一样,
密码是可选的,但有一个额外的提示询问您是否要保存
innotop 配置文件中的密码。 如果你不把它保存在
配置文件,innotop 每次启动都会提示你输入密码。
innotop 配置文件中的密码以明文形式保存,未加密
任何方式。

回答完这些问题后,您应该连接到服务器。 但
innotop 不仅限于监控单个服务器; 您可以定义许多服务器
连接并通过按“@”键在它们之间切换。 见“在
连接”。

服务器


如果你有多个 MySQL 实例,你可以把它们放到命名组中,比如'all',
'masters' 和 'slaves',innotop 可以一起监控。

可以用'#'键选择要监控的组,也可以按TAB键
切换到下一组。 如果您当前未监视组,请按 TAB
选择第一组。

要创建组,请按“#”键并键入新组的名称,然后键入
您希望该组包含的连接的名称。

交换 之间 连接


innotop 可让您快速切换正在监控的服务器。 最基本的方法是通过
按“@”键并键入要使用的连接的名称。 这个
设置是每个模式的,所以你可以在每个模式下监控不同的连接,innotop
记住您选择的连接。

您可以使用“n”键按字母顺序快速切换到“下一个”连接。
如果您正在监视服务器组(请参阅“服务器组”),这将切换到第一个
连接。

您还可以输入多个连接名称,innotop 将从它们中获取并显示数据
全部。 只需用空格分隔连接名称,例如“server1 server2”。
同样,如果您键入不存在的连接名称,innotop 将提示您
获取连接信息并创建连接。

一次监视多个连接的另一种方法是使用服务器组。 您可以使用
按 T​​AB 键按字母顺序切换到“下一个”组,或者如果您不是
监控任何组,TAB 将切换到第一组。

innotop 不会从连接中并行获取数据,因此如果您正在监视大型
组或许多连接,您可能会注意到滴答之间的延迟增加。

当您监控多个连接时,innotop 的状态栏会发生变化。 见“英诺拓
地位”。

ERROR 搬运


监控单个连接时错误处理不是那么重要,但至关重要
当您有许多活动连接时。 崩溃的服务器或丢失的连接不应该
崩溃 innotop。 因此,即使出现错误,innotop 也会继续运行; 它
只是不会显示来自发生错误的连接的任何信息。 因为
这一点,innotop 的行为可能会让您感到困惑。 这是一个功能,而不是一个错误!

innotop 不会继续查询有错误的连接,因为它们可能会变慢
innotop 并使其难以使用,特别是如果错误是连接和
导致超时。 相反,innotop 偶尔会重试连接以查看是否
错误仍然存​​在。 如果是这样,它将等到将来的某个时候。 这段等待
时间随着斐波那契数列的刻度增加,因此随着时间的推移它尝试的频率降低
通过。

由于错误可能仅在某些模式下发生,因为在
对于这些模式,innotop 会跟踪导致错误的模式。 如果你切换到一个
不同的模式,innotop 将重试连接而不是等待。

默认情况下,innotop 会在第一个表格底部以红色文本显示问题
屏幕上。 您可以使用“show_cxn_errors_in_tbl”禁用此行为
配置选项,默认启用。 如果启用了“调试”选项,
innotop 将在每个表的底部显示错误,而不仅仅是第一个。 而如果
启用“show_cxn_errors”,innotop 也会将错误文本打印到 STDOUT。 错误
消息可能仅以导致错误的模式显示,具体取决于模式和
innotop 是否避免查询该连接。

非交互式 我们的业务


您可以在非交互模式下运行 innotop,在这种情况下,它完全由
配置文件和命令行选项。 以非交互式方式启动innotop
模式,给 L"<--nonint"> 命令行选项。 这改变了 innotop 在
以下方式:

· 某些 Perl 模块未加载。 Term::Readline 未加载,因为 innotop
不以交互方式提示。 Term::ANSIColor 和 Win32::Console::ANSI 模块是
未加载。 Term::ReadKey 仍在使用,因为 innotop 可能需要提示
启动时的连接密码。

· innotop 不会在每次勾选后清除屏幕。

· innotop 不会对配置文件进行任何更改。

· 如果给出了“--count”并且innotop处于增量模式(参见“status_inc”和
"--inc"),innotop 实际上比指定的多刷新一次,以便它可以打印
增量统计。 这会在第一个滴答期间抑制输出,因此 innotop 可能
似乎挂起。

· innotop 在每种模式下只显示第一个表。 这是所以输出可以是
易于使用其他命令行实用程序(例如 awk 和 sed)进行处理。 改变
每种模式显示哪些表格,请参阅“表格”。 由于“Q:查询列表”模式是如此
重要的是,innotop 会自动禁用“q_header”表。 这确保您将
查看“processlist”表,即使您已将 innotop 配置为显示 q_header
交互式操作期间的表。 同样,在“T: InnoDB Transactions”模式下,
“t_header”表被抑制,所以你只能看到“innodb_transactions”表。

· 所有输出都是制表符分隔的,而不是与空格对齐的列,并且
innotop 打印每张表的全部内容,而不是只打印一屏
在一个时间。

· innotop 只打印列标题一次而不是每个刻度(参见“hide_hdr”)。
innotop 不打印表格标题(请参阅“display_table_captions”)。 innotop 确保
输出中没有空行。

· innotop 不支持“shorten”转换,它通常会缩短一些
数字转换为人类可读的格式。

· innotop 不打印状态行(参见“INNOTOP STATUS”)。

配置


几乎所有关于 innotop 的内容都是可配置的。 大多数事情都可以改变
内置命令,但您也可以编辑配置文件。

在运行 innotop 时,按“$”键打开配置编辑对话框。
按另一个键选择要编辑的数据类型:

S:语句睡眠时间
编辑 SQL 语句睡眠延迟,使 innotop 暂停指定数量的
执行语句后的时间。 有关每个的定义,请参阅“SQL 语句”
声明以及它的作用。 默认情况下,innotop 不会在任何语句之后延迟。

包含此功能,因此您可以自定义监控引起的副作用
你的服务器。 您可能看不到任何效果,但一些 innotop 用户已经注意到
某些 MySQL 版本在非常高的负载下启用 InnoDB 需要比平时更长的时间
执行显示全局状态。 如果 innotop 立即调用 SHOW FULL PROCESSLIST
之后,进程列表包含比机器实际平均更多的查询
任何给定的时刻。 配置 innotop 在调用 SHOW GLOBAL 后短暂暂停
STATUS 减轻了这种影响。

睡眠时间存储在配置文件的“stmt_sleep_times”部分。
根据您的硬件限制,支持小数秒睡眠。

c: 编辑列
在显示的表之一上启动表编辑器。 请参阅“表格编辑器”。 一个
在不进入配置对话框的情况下启动表编辑器的另一种方法是
用“^”键。

g:一般配置
启动配置编辑器以编辑全局和特定于模式的配置
变量(见“模式”)。 innotop 提示您从以下变量中选择一个变量
全局和模式特定的取决于当前模式。

k:行着色规则
在显示的表之一上启动行着色规则编辑器。 见“颜色”
了解详情。

p:管理插件
启动插件配置编辑器。 有关详细信息,请参阅“插件”。

s:服务器组
允许您创建和编辑服务器组。 请参阅“服务器组”。

t:选择显示的表格
允许您选择在此模式下显示哪些表。 参见“模式”和“表格”。

配置 文件


innotop 的默认配置文件位置是 $HOME/.innotop 和
/etc/innotop/innotop.conf,并按该顺序查找它们。 如果第一个
配置文件存在,第二个不会被处理。 那些可以被覆盖
“--config”命令行选项。 您可以安全地手动编辑它,但是 innotop 读取
启动时的配置文件,如果readonly设置为0,再写出来
当它退出时。 因此,如果 readonly 设置为 0,则您在 innotop 时手动进行的任何更改
正在运行会丢失。

innotop 不会将其整个配置存储在配置文件中。 它有一个巨大的
它只保存在内存中的一组默认配置值,以及配置
文件仅覆盖这些默认值。 当您自定义默认设置时,innotop
通知,然后将自定义存储到文件中。 这样可以减小文件大小,
使编辑更容易,并使升级更容易。

配置文件默认是只读的。 您可以使用“--write”覆盖它。 看
“只读”。

配置文件像 INI 文件一样被安排成部分。 每节开始
用 [section-name] 并以 [/section-name] 结尾。 每个部分的条目都有一个
不同的语法取决于他们需要存储的数据。 您可以在评论区发表评论
文件; 任何以 # 字符开头的行都是注释。 innotop 不会读取
评论,所以它不会在退出时将它们写回文件。 阅读中的评论-
不过,只有配置文件仍然有用。

文件的第一行是innotop 的版本号。 这让 innotop 注意到
文件格式不向后兼容,平滑升级而不破坏你的
自定义配置。

下面的列表描述了配置文件的每个部分及其数据
包含:

一般
'general' 部分包含全局配置变量和可能
特定于模式,但不属于任何其他部分。 语法很简单
键=值列表。 innotop 在每个值上面写了一个注释来帮助你编辑文件
用手。

S_func
控制 S 模式呈现(请参阅“S:变量和状态”)。 如果 g,值为
绘图; 如果是 s,则值类似于 vmstat; 如果 p,则值在透视表中。

S集
指定要在“S:变量和状态”模式下显示的变量集。 看
“变量集”。

自动擦除_dl
指示 innotop 在发现大死锁时自动清除它们。
发生这种情况时,您可能会注意到有轻微的延迟。 在下一个滴答声中,您将
通常会看到被大死锁截断的信息。

字符集
指定允许通过“no_ctrl_char”的字符类型
转型。 这可以防止不可打印的字符混淆终端
当您监视包含二进制数据(例如图像)的查询时。

默认值为 'ascii',它将正常 ASCII 之外的任何内容视为
控制字符。 其他允许的值为“unicode”和“none”。 '没有任何'
将每个字符视为一个控制字符,这对于折叠很有用
查询中的所有文本字段。

命令过滤器
这是在“C:命令摘要”模式下过滤变量的前缀。

颜色
是否允许终端着色。

cxn_超时
在 MySQL 4.0.3 及更高版本上,此变量用于设置连接的
超时,因此如果一段时间不使用,MySQL 不会关闭连接。
这可能是因为在特定模式下未监视连接,例如
例。

调试
此选项启用更详细的错误并使 innotop 在某些情况下更严格
地方。 它可以帮助调试过滤器和其他用户定义的代码。 它也是
使 innotop 在发生崩溃时将大量信息写入“调试文件”。

调试文件
发生崩溃时,innotop 将向其中写入信息的文件。 看
“文件”。

显示_table_captions
innotop 在大多数表格上方显示表格标题。 该变量抑制或
全局显示所有表格的标题。 一些表配置了
hide_caption 属性,它会覆盖它。

全球化
是否显示 GLOBAL 变量和状态。 innotop 只尝试在
支持显示变量和显示状态的 GLOBAL 选项的服务器。 在
某些 MySQL 版本,您需要某些权限才能执行此操作; 如果你没有
它们,innotop 将无法获取任何变量和状态数据。 这个
配置变量可让您运行 innotop 并获取您甚至可以获取的数据
没有提升的特权。

我无法再找到或重现不允许 GLOBAL 的情况,但我
知道有一个。

图形字符
定义在“S:变量和状态”模式下绘制图形时要使用的字符。

标题突出显示
定义如何突出显示列标题。 这只适用于 Term::ANSIColor 是
可用的。 有效值为“粗体”和“下划线”。

隐藏HDR
全局隐藏列标题。

间隔
innotop 刷新其数据的时间间隔(滴答)。 间隔是
实现为滴答之间的睡眠时间,因此真正的间隔会有所不同
取决于 innotop 获取和呈现数据所需的时间。

此变量接受几分之一秒。

模式
innotop 应该启动的模式。 允许的参数与
以交互方式选择模式的按键。 参见“模式”。

NUM_DIGITS
以小数和百分比显示的位数。 这个变量的范围
介于 0 和 9 之间,可以直接从“S:变量和状态”模式设置
'+' 和 '-' 键。 它用于“set_precision”、“shorten”和“percent”
转换。

状态集数量
控制在旋转的“S: Variables &
状态”模式。它还控制了innotop保留的旧变量集的数量
在它的内存中,所以这个变量越大,innotop 使用的内存就越多。

插件目录
指定可以找到插件的位置。 默认情况下,innotop 将插件存储在
innotop 配置目录的“plugins”子目录。

只读
配置文件是否只读。 这不能以交互方式设置。

显示_cxn_错误
使 innotop 打印连接错误到 STDOUT。 请参阅“错误处理”。

show_cxn_errors_in_tbl
使 innotop 将连接错误显示为屏幕上第一个表中的行。 看
“错误处理”。

显示百分比
在“百分比”转换返回的值后添加一个“%”字符。

显示状态栏
控制是否在显示屏中显示状态栏。 参见“创新达状态”。

跳过_innodb
禁用获取 SHOW INNODB STATUS,以防您的服务器没有 InnoDB
启用并且您不希望 innotop 尝试获取它。 这也很有用
当您没有 SUPER 权限时,需要运行 SHOW INNODB STATUS。

状态_公司
是否显示状态变量的绝对值或增量值。 增加的
值计算为与 innotop 看到的最后一个值的偏移量
多变的。 这是一个全局设置,但可能会成为特定于模式的
某点。 现在它的荣誉有点不一致; 有些模式不收费
关注它。

插件
此部分包含活动插件的包名称列表。 如果插件存在,
innotop 将激活它。 有关更多信息,请参阅“插件”。

过滤器
此部分包含用户定义的过滤器(请参阅“过滤器”)。 每一行都是格式
filter_name=text='filter text' tbls='table list'。

过滤器文本是子程序代码的文本。 表列表是一个列表
过滤器可以应用到的表。 默认情况下,用户定义的过滤器适用于
为其创建的表,但您可以通过编辑
配置文件中的定义。

主动过滤器
此部分存储每个表上哪些过滤器处于活动状态。 每一行都在
格式 table_name=filter_list。

表元元
此部分存储用户定义或用户自定义的列(请参阅“COLUMNS”)。 每个
行的格式为 col_name=properties,其中的属性是
名称=引用值列表。

连接
此部分包含您定义的服务器连接。 每一行都在
格式名称=属性,其中属性是名称=值列表。 属性
是不言自明的,唯一被特殊对待的是“pass”,它是
仅在设置了 'savepass' 时出现。 配置文件的这部分将是
如果使用任何 DSN、用户名或密码命令行选项,则跳过。 见“服务器
连接”。

active_connections
此部分包含在每种模式下哪些连接处于活动状态的列表。 每行是
格式为 mode_name=connection_list。

服务器组
此部分包含服务器组。 每行的格式为 name=connection_list。
请参阅“服务器组”。

活动服务器组
此部分包含在每种模式下哪个服务器组处于活动状态的列表。 每行是
格式为 mode_name=server_group。

所见最大值
本节包含变量的最大值。 这用于缩放
“S:变量和状态”模式下的图表。 每行的格式为 name=value。

活动列
此部分包含表列列表。 每一行都是格式
tbl_name=column_list。 参见“列”。

排序列
此部分包含排序定义。 每一行都是格式
tbl_name=column_list。 如果列以“-”为前缀,则该列按降序排序。
参见“排序”。

可见表
本节定义了在每种模式下哪些表可见。 每一行都在
格式 mode_name=table_list。 参见“表格”。

变量集
本节定义了在“S:状态和变量”模式下使用的变量集。 每行
格式为 name=variable_list。 参见“变量集”。

颜色
本节定义着色规则。 每一行都是格式
tbl_name=property_list。 参见“颜色”。

stmt_睡眠时间
本节包含语句休眠时间。 每一行都是格式
语句名称=睡眠时间。 请参阅“S:语句睡眠时间”。

通过...分组
本节包含表 group_by 表达式的列列表。 每行都在
格式 tbl_name=column_list。 参见“分组”。

自订


您可以大量自定义 innotop。 例如,您可以:

· 选择要显示的表格以及显示顺序。

· 选择这些表中的哪些列,并创建新列。

· 使用内置过滤器、用户定义过滤器和快速过滤器过滤显示哪些行
过滤器。

· 对行进行排序以将重要数据放在首位或将相关行组合在一起。

· 用颜色突出显示行。

· 自定义列的对齐方式、宽度和格式,并应用转换
到列以提取其值的一部分或根据需要设置值的格式(对于
例如,将大数缩短为熟悉的单位)。

· 设计您自己的表达式以根据需要提取和组合数据。 这给你
无限的灵活性。

所有这些以及更多内容将在以下部分进行解释。

TABLES
表是您所期望的:列的集合。 它还有一些其他的特性,
比如标题。 过滤器、排序规则和着色规则属于表和
将在后面的部分中介绍。

在内部,表元数据定义在名为 %tbl_meta 的数据结构中。 这个哈希
保存所有内置表定义,其中包含许多默认指令
诺托普。 元数据包括标题、用户自定义的列列表、
列列表、可见列列表、过滤器列表、颜色规则、排序列
列表、排序方向和有关表数据源的一些信息。 这大部分
可通过表格编辑器进行自定义(请参阅“表格编辑器”)。

您可以通过按“$”键来选择要显示的表。 参见“模式”和“表格”。

表生命周期如下:

· 每个表都以一个数据源开始,它是一个散列数组。 见下文
数据源的详细信息。

· 数据源的每个元素成为最终表中的一行。

· 对于数据源中的每个元素,innotop 从源中提取值并
创建一行。 这一行是另一个散列,后面的步骤将称为 $set。
innotop 提取的值由表的列确定。 每列都有一个
从表达式编译的提取子程序(参见“表达式”)。 所结果的
row 是一个哈希,其键的名称与列名称相同。

· innotop 过滤行,删除那些不需要显示的行。 看
“过滤器”。

· innotop 对行进行排序。 参见“排序”。

· innotop 将行组合在一起(如果指定)。 参见“分组”。

· innotop 为行着色。 参见“颜色”。

· innotop 转换每一行中的列值。 参见“转换”。

· innotop 可选地旋转行(参见“PIVOTING”),然后对它们进行过滤和排序。

· innotop 将行格式化并对齐为表。 在此步骤中,innotop 适用
进一步格式化列值,包括对齐、最大值和最小值
宽度。 innotop 还进行最后的错误检查,以确保没有由于以下原因导致的崩溃
未定义的值。 如果指定,innotop 然后添加一个标题,并且表格已准备好
打印。

如果表格被旋转,生命周期会略有不同,如上所述。 澄清,
如果表被旋转,过程是提取、分组、转换、旋转、过滤、排序,
创建。 如果没有旋转,则过程是提取、过滤、排序、分组、颜色、
改造,创造。 这个稍微复杂的过程并不能很好地映射到 SQL,但是
旋转使事情变得非常复杂。 粗略地说,过滤和排序
尽可能晚发生以影响最终结果,但早在
可能的效率。

每个内置表描述如下:

自适应哈希索引
显示有关 InnoDB 的自适应哈希索引的数据。 数据源:“STATUS_VARIABLES”。

缓冲池
显示有关 InnoDB 缓冲池的数据。 数据源:“STATUS_VARIABLES”。

命令摘要
显示加权状态变量。 数据源:“STATUS_VARIABLES”。

死锁_锁
显示上次检测到的死锁持有和等待的锁。 数据
来源:“死锁_锁”。

死锁交易
显示上次检测到的死锁中涉及的事务。 数据源:
“死锁_交易”。

说明
显示 EXPLAIN 的输出。 数据来源:“解释”。

文件io_杂项
显示有关 InnoDB 的文件和 I/O 操作的数据。 数据源:
“STATUS_VARIABLES”。

fk_错误
显示有关 InnoDB 上次外键错误的各种数据。 数据源:
“STATUS_VARIABLES”。

innodb_锁
显示 InnoDB 锁。 数据来源:“INNODB_LOCKS”。

innodb_事务
显示有关 InnoDB 当前事务的数据。 数据源:
“INNODB_TRANSACTIONS”。

插入缓冲区
显示有关 InnoDB 插入缓冲区的数据。 数据源:“STATUS_VARIABLES”。

io_线程
显示有关 InnoDB 的 I/O 线程的数据。 数据源:“IO_THREADS”。

日志统计
显示有关 InnoDB 日志系统的数据。 数据源:“STATUS_VARIABLES”。

主控状态
显示复制主机状态。 数据源:“STATUS_VARIABLES”。

打开表
显示打开的表格。 数据源:“OPEN_TABLES”。

页面统计
显示 InnoDB 页面统计信息。 数据源:“STATUS_VARIABLES”。

待定_io
显示 InnoDB 挂起的 I/O 操作。 数据源:“STATUS_VARIABLES”。

进程列表
显示当前 MySQL 进程(线程/连接)。 数据来源:“PROCESSLIST”。

q_header
显示各种状态值。 数据源:“STATUS_VARIABLES”。

行操作杂项
显示有关 InnoDB 的行操作的数据。 数据源:“STATUS_VARIABLES”。

行操作
显示有关 InnoDB 的行操作的数据。 数据源:“STATUS_VARIABLES”。

信号量
显示有关 InnoDB 的信号量和互斥锁的数据。 数据来源:“STATUS_VARIABLES”。

从属io_状态
显示有关从属 I/O 线程的数据。 数据源:“STATUS_VARIABLES”。

从属SQL状态
显示有关从属 SQL 线程的数据。 数据源:“STATUS_VARIABLES”。

t_header
显示各种 InnoDB 状态值。 数据源:“STATUS_VARIABLES”。

变量状态
显示用户可配置的数据。 数据源:“STATUS_VARIABLES”。

等待数组
显示有关 InnoDB 的 OS 等待数组的数据。 数据源:“OS_WAIT_ARRAY”。


列属于表。 您可以通过按“^”键来选择表格的列
启动“表格编辑器”并让您选择和编辑列。 从内部按“e”
表编辑器允许您编辑列的属性:

· hdr:列标题。 这出现在表格的第一行。

·公正:正当理由。 '-' 表示左对齐, '' 表示右对齐,就像
使用 printf 格式代码(不是巧合)。

· dec:是否进一步对齐小数点上的列。

· num:列是否为数字。 这会影响值的排序方式(词法或
数字)。

· 标签:关于列的小注释,出现在帮助用户的对话框中
选择列。

· src:innotop 用于从其源中提取列数据的表达式(请参阅
“数据源”)。 有关表达式的更多信息,请参阅“表达式”。

· minw:指定最小显示宽度。 这有助于稳定显示,从而
如果数据经常变化,则更容易阅读。

· maxw:类似于minw。

· trans:列转换列表。 参见“转换”。

· agg:聚合函数。 参见“分组”。 默认值为“第一个”。

· aggonly:控制该列是否仅在表上启用分组时显示
(见“分组”)。 默认情况下,这是禁用的。 这意味着列将始终是
默认情况下显示,无论是否启用分组。 如果设置了列的 aggonly
true,当您在表上切换分组时将出现该列。 几列
以这种方式设置,例如“processlist”和“innodb_transactions”上的计数列,
所以当分组未启用时你看不到计数,但当它启用时你会看到。

滤波器
过滤器从显示中删除行。 它们的行为很像 SQL 中的 WHERE 子句。
innotop 有几个内置过滤器,可以删除不相关的信息,如不活动
查询,但您也可以定义自己的查询。 innotop 还可以让您创建快速过滤器,
不会保存到配置文件中,只是一种快速查看的简单方法
只有一些行。

您可以在任何表上启用或禁用过滤器。 按 '%' 键(助记符:% 看起来
有点像在两个圆圈之间过滤一条线)并选择您想要的表格
过滤,如果问。 然后,您将看到可能的过滤器列表和过滤器列表
当前为该表启用。 输入要应用的过滤器名称,然后按
输入。

用户自定义 滤波器

如果您输入的名称不存在,innotop 将提示您创建过滤器。
如果您了解 Perl,过滤器很容易创建,如果您不知道,则并不难。 你在做什么
正在创建一个子例程,如果应显示该行,该子例程将返回 true。 该行是一个
散列引用作为 $set 传递给您的子程序。

例如,假设您想要过滤 processlist 表,以便您只看到查询
已经跑了五分钟多了。 为您的过滤器输入一个新名称,以及何时
提示输入子程序主体,按 TAB 启动终端的自动完成。
您将在“processlist”表中看到列的名称(innotop 通常尝试
帮助您使用自动完成列表)。 您想过滤“时间”列。 输入
文本 "$set->{time} > 300" 当查询超过五分钟时返回 true。
这就是你需要做的。

换句话说,您输入的代码被隐式上下文包围,看起来
喜欢这个:

子过滤器{
我的 ( $set ) = @_;
# 你的代码在这里
}

如果您的过滤器不起作用,或者如果其他东西突然表现不同,您可能
在您的过滤器中出现错误,innotop 正在悄悄地捕获错误。 尝试
启用“调试”以使 innotop 抛出错误。

快速过滤器

innotop 的快速过滤器是创建不持久的临时过滤器的快捷方式
当您重新启动 innotop 时。 要创建快速过滤器,请按“/”键。 英诺特将
提示您输入列名称和过滤器文本。 同样,您可以使用自动完成
列名。 过滤器文本可以只是您要“搜索”的文本。 为了
例如,要根据引用产品表的查询过滤“processlist”表,
输入“/”,然后输入“信息产品”。

过滤器文本实际上可以是任何 Perl 正则表达式,但当然是文字
像 'product' 这样的字符串作为正则表达式可以正常工作。

在幕后,innotop 将快速过滤器编译成一个特殊标记的过滤器,它是
否则像任何其他过滤器一样。 它只是没有保存到配置文件中。

要清除快速过滤器,请按“\”键,innotop 将立即清除它们。

排序
innotop 具有合理的内置默认值来将最重要的行排序到顶部
桌子。 与 innotop 中的其他任何内容一样,您可以自定义任何表的排序方式。

要启动排序对话框,请使用 '^' 键启动“表格编辑器”,如果
必要,然后按“s”键。 您将看到可用于排序的列列表
表达式和当前排序表达式(如果有)。 输入列列表
要排序并按 Enter。 如果要反向排序,请在列名前加上
减号。 例如,如果要按 a 列升序排序,则 b 列
降序,输入'a -b'。 您还可以在要添加的列前显式添加 +
升序排序,但这不是必需的。

某些模式已映射键以直接打开此对话框,并快速反向排序
方向。 按 '?' 像往常一样查看在任何模式下映射了哪些键。

GROUPING
innotop 可以将行分组或聚合在一起(这些术语可以互换使用)。 这个
非常类似于 SQL GROUP BY 子句。 您可以指定对某些列进行分组,
或者,如果您不指定任何内容,则整组行将被视为一个组。 这是
到目前为止与 SQL 非常相似,但与 SQL 不同的是,您还可以选择未分组的列。 创诺达
实际上聚合每一列。 如果没有明确指定分组函数,
默认为“第一”。 这基本上是一种方便,因此您不必指定
结果中所需的每一列的聚合函数。

您可以使用“=”键快速切换表的分组,这会切换其聚合
财产。 此属性不会保留到配置文件中。

表分组所依据的列在其 group_by 属性中指定。 什么时候
你打开分组,innotop 将 group_by 列放在表格的最左边,
即使它们不应该是可见的。 其余可见列出现在
在他们之后订购。

两个表具有默认的 group_by 列表和内置的计数列:“processlist”和
“innodb_transactions”。 按连接和状态分组,因此您可以快速查看
在您监控的每台服务器上,有多少查询或事务处于给定状态。
时间列聚合为总和; 其他列保留在默认的“第一”
聚合。

默认情况下,“S:变量和状态”模式中显示的表格也使用分组,因此您可以
跨多个服务器监控变量和状态。 中的默认聚合函数
这种模式是“平均”。

有效的分组函数在 %agg_funcs 散列中定义。 它们包括

第一
返回组中的第一个元素。


返回组中元素的数量,包括未定义的元素,很像
SQL 的 COUNT(*)。

avg 返回组中已定义元素的平均值。

sum 返回组中元素的总和。

这是工作中的分组示例。 假设您有一个非常繁忙的服务器,有数百个
打开连接的数量,并且您想查看有多少连接处于什么状态。 使用
内置分组规则,您可以按“Q”进入“Q:查询列表”模式。 按“=”
切换分组(如有必要,在提示时选择“processlist”表)。

您的显示现在可能如下所示:

查询列表 (? 寻求帮助) localhost, 32:33, 0.11 QPS, 1 thd, 5.0.38-log

CXN Cmd Cnt ID 用户主机时间查询
本地主机查询 49 12933 webusr 本地主机 19:38 SELECT * FROM
本地主机发送 Da 23 2383 webusr 本地主机 12:43 SELECT col1,
本地主机睡眠 120 140 webusr 本地主机 5:18:12
本地主机统计 12 19213 webusr 本地主机 01:19 SELECT * FROM

这实际上是一个令人担忧的画面。 你有很多空闲连接(睡眠),
和一些连接执行查询(查询和发送数据)。 没关系,但你
也有很多在Statistics状态,一共花了一分钟多。 这意味着
查询优化器很难优化您的语句。 有什么是
错误的; 优化查询通常需要几毫秒。 你可能没见过
如果您没有综合查看您的连接,请使用此模式。 (这是编的
例如,但它可能发生在现实生活中)。

枢轴转动
innotop 可以旋转表格以获得更紧凑的显示,类似于一个数据透视表
电子表格(也称为交叉表)。 透视表使列变成行。 认为
你从这张表开始:

富吧
=== ===
1 3
2 4

旋转后,表格将如下所示:

名称 set0 set1
============
富 1 2
小节3 4

为了获得合理的结果,您可能需要分组和旋转。 目前innotop
为“S:变量和状态”模式执行此操作。

COLORS
默认情况下,innotop 用颜色突出显示行,以便您一目了然地看到哪些行是
更重要。 您可以自定义着色规则并将您自己的着色规则添加到任何表格中。
使用“^”键打开表格编辑器,根据需要选择一个表格,然后按“o”打开
颜色编辑器对话框。

颜色编辑器对话框按规则显示应用于表格的规则
评估。 针对每条规则对每一行进行评估,以查看该规则是否与该行匹配; 如果
确实如此,该行将获得指定的颜色,并且不再评估其他规则。 规则
如下所示:

状态 eq 锁定黑色 on_red
cmd eq 睡眠白
用户 eq 系统用户 白
cmd eq 连接白色
cmd eq Binlog Dump 白色
时间 > 600 红色
时间 > 120 黄色
时间 > 60 绿色
时间 > 30 青色

这是“processlist”表的默认规则集。 按照优先顺序,这些
规则使锁定的查询在红色背景上变为黑色,“灰色”连接来自
复制和休眠查询,并使查询在运行时从青色变为红色
更长的时间。

(出于某种原因,ANSI 颜色代码“白色”实际上是浅灰色。您的终端的
显示可能会有所不同; 尝试找到您喜欢的颜色)。

您可以使用击键来上下移动规则,从而重新排列它们的优先级。 你
还可以删除规则并添加新规则。 如果添加新规则,innotop 会提示您
列,用于比较的运算符,用于比较列的值,
以及规则匹配时要分配的颜色。 每个都有自动完成和提示
步。

第三步中的值需要正确引用。 innotop 不会尝试引用
值,因为它不知道是否应该将值视为字符串或
数字。 如果要将列与字符串进行比较,例如在第一个
上面的规则,您应该输入用引号括起来的“Locked”。 如果您收到错误消息
关于一个裸词,你可能应该引用一些东西。

表情
表达式是 innotop 工作方式的核心,也是使您能够扩展
如您所愿。 回想一下“表格”中解释的表格生命周期。 表达式是
在最早的步骤中使用,它从数据源中提取值以形成行。

它通过为每一列调用一个子例程,将源数据集传递给它来实现这一点,一个
一组当前值和一组先前值。 这些都是需要的,所以
子程序可以计算诸如此刻度与前一个刻度之间的差异之类的东西
蜱。

从集合中提取数据的子例程是从表达式编译的。 这个
比仅仅命名值以填充列提供了更多的权力,因为它
允许从任何必要的数据计算列的值,但避免了
需要编写复杂而冗长的 Perl 代码。

innotop 以一串文本开头,它可以像值的名称一样简单,也可以像
复杂的作为一个成熟的 Perl 表达式。 它查看每个“裸词”标记中的
字符串并决定它是否应该是 $set 哈希的键。 一个裸字是一个
未加引号的值尚未被美元符号或卷曲等代码风格的东西包围
括号。 如果 innotop 确定裸字不是函数或其他有效的 Perl 代码,
它将其转换为哈希访问。 处理完整个字符串后,innotop 编译
一个子程序,像这样:

子计算列值{
我的 ( $set, $cur, $pre ) = @_;
我的 $val = # 扩展字符串在这里
返回 $val;
}

这是一个具体的例子,取自“Q:查询列表”模式下的头表“q_header”。
此表达式计算 qps,或每秒查询数,列的值,从
SHOW STATUS 返回的值:

问题/正常运行时间_雇用

innotop 决定两个词都是裸词,并将这个表达式转换为
以下 Perl 代码:

$set->{问题}/$set->{Uptime_hires}

当被子例程的其余代码包围时,这是可执行的 Perl
计算一个高分辨率的每秒查询值。

子程序的参数被命名为 $set、$cur 和 $pre。 在大多数情况下, $set 和
$cur 将是相同的值。 但是,如果设置了“status_inc”,则 $cur 将不一样
作为 $set,因为 $set 已经包含了增量差异的值
$cur 和 $pre 之间。

innotop 中的每一列都由以相同方式编译的子程序计算。 有
innotop 的内置列和用户定义的列之间没有区别。 这保持
事情是一致的和可预测的。

转型
转换会改变值的呈现方式。 例如,他们可以采取一些
秒并以 H:M:S 格式显示。 定义了以下转换:

商品化
每三个小数位向大数添加逗号。

dulint_to_int
接受两个无符号整数并将它们转换为单个 longlong。 这是
对使用两个整数作为事务的 InnoDB 的某些操作很有用
标识符,例如。

无ctrl_字符
从值中删除引用的控制字符。 这受“字符集”的影响
配置变量。

此转换仅在带引号的字符串内操作,例如,SET 的值
UPDATE 语句中的子句。 它不会改变 UPDATE 语句,但会
根据字符集,将引用的字符串折叠为 [BINARY] 或 [TEXT]。

百分
通过将数字乘以 XNUMX 将数字转换为百分比,并使用以下格式对其进行格式化
"num_digits" 小数点后的数字,并可选择添加百分号(请参阅
“显示百分比”)。

秒到时间
以天+小时:分钟:秒格式将秒数格式化为时间。

设置精度
用小数点后的“num_digits”位数格式化数字。

缩短
将数字格式化为 1024 (k/M/G/T) 的单位并使用“num_digits”位数
小数点后。

EDITOR
innotop 表编辑器允许您使用按键自定义表。 你开始表
'^' 键的编辑器。 如果屏幕上有不止一张桌子,它会提示你
选择其中之一。 完成后,innotop 将显示如下内容:

编辑缓冲池的表定义。 按 ? 寻求帮助,q 退出。

名称 hdr 标签 src
cxn CXN 连接来自哪个 cxn
buf_pool_size Size 缓冲池大小 IB_bp_buf_poo
buf_free Free Bufs b 中空闲的缓冲区 IB_bp_buf_fre
pages_total 页数 总页数 IB_bp_pages_t
pages_modified 脏页 修改后的页面(脏 IB_bp_pages_m
buf_pool_hit_rate 命中率 缓冲池命中率 IB_bp_buf_poo
total_mem_alloc Memory 分配的总内存 IB_bp_total_m
add_pool_alloc 添加池附加池 alloca IB_bp_add_poo

第一行显示您正在编辑哪个表格,并再次提醒您按“?” 为一个
键映射列表。 其余的是表格列的表格表示,
因为这很可能是您要编辑的内容。 但是,您可以编辑的不仅仅是
表格的列; 此屏幕可以启动过滤器编辑器、颜色规则编辑器等。

显示中的每一行显示您正在编辑的表格中的一列,以及
它的几个属性,例如它的标题和源表达式(参见“表达式”)。

键映射是 Vim 风格的,就像在许多其他地方一样。 按“j”和“k”移动
向上或向下突出显示。 然后您可以 (d)elete 或 (e)dit 突出显示的列。 你可以
还 (a) 在表格中添加一列。 这实际上只是激活了其中一列
为表格定义; 它会提示您从可用的列中进行选择,但不
当前显示。 最后,您可以使用“+”和“-”键对列重新排序。

您不仅可以使用表格编辑器编辑列,还可以编辑其他
属性,例如表的排序表达式和分组依据表达式。 按 '?' 查看
当然是完整的列表。

如果您想真正自定义和创建自己的列,而不是仅仅激活
一个当前未显示的内置,按 (n)new 键,innotop 将
提示您输入所需的信息:

· 列名:这需要是一个没有任何有趣字符的单词,例如 just
字母、数字和下划线。

· 列标题:这是出现在列顶部的标签,在
表头。 这可以有空格和有趣的字符,但要小心不要让
它太宽了,浪费了屏幕上的空间。

· 列的数据源:这是一个表达式,用于确定哪些数据来自
源(参见“表格”)innotop 将放入列中。 这可能只是名字
源中的一个项目,或者它可以是更复杂的表达式,如
“表达”。

一旦您输入了所需的数据,您的表格就会有一个新列。 没有
此列与内置列的区别; 它可以具有所有相同的属性
和行为。 innotop 会将列的定义写入配置文件,因此
它将在会话中持续存在。

这是一个例子:假设你想跟踪你的奴隶重试了多少次
交易。 根据 MySQL 手册,Slave_retried_transactions 状态
变量为您提供该数据:“自启动以来的总次数
复制从属 SQL 线程已重试事务。 这个变量是在版本中添加的
5.0.4.”这适合添加到“slave_sql_status”表中。

要添加列,请使用“M”键切换到复制监视模式,然后按
'^' 键启动表格编辑器。 出现提示时,选择 slave_sql_status 作为
表,然后按“n”创建列。 输入“重试”作为列名,“重试”
作为列标题,'Slave_retried_transactions' 作为源。 现在该列是
创建后,您会再次看到表编辑器屏幕。 按“q”退出表格编辑器,
你会在表格的末尾看到你的列。

变量 集合


在“S:变量和状态”模式中使用变量集来更容易地定义什么
要监视的变量。 在幕后,他们被编译成一个列表
表达式,然后放入一个列列表中,这样它们就可以像任何列中的列一样对待
其他表,在数据提取和转换方面。 但是,您受到保护
从乏味的细节中,通过一种对您来说应该感觉很自然的语法:SQL SELECT
名单。

变量集的数据源,实际上是整个 S 模式,是
显示状态、显示变量和显示 INNODB 状态。 想象一下你有一张大桌子
从这些语句返回的每个变量有一列。 这是数据源
变量集。 您现在可以像预期的那样查询此数据源。 例如:

问题、正常运行时间、问题/正常运行时间作为 QPS

在幕后,innotop 会将该变量集拆分为三个表达式,编译
它们并将它们转换为表定义,然后像往常一样提取。 这成为一个
“变量集”或“要监视的变量列表”。

innotop 允许您命名和保存变量集,并将它们写入配置
文件。 您可以使用“c”键选择要查看的变量集,或激活
下一组和上一组使用“>”和“<”键。 有很多内置的变量集
同样,这应该为您创建自己的产品提供一个良好的开端。 按“e”编辑
当前变量集,或者只是看看它是如何定义的。 要创建一个新的,只需按
'c' 并键入其名称。

您可能想使用“转换”中列出的一些函数来帮助格式化
结果。 特别是,“set_precision”通常可用于限制您的位数
看。 扩展上面的例子,这里是如何:

Questions, Uptime, set_precision(Questions/Uptime) 作为 QPS

实际上,这还需要更多的工作。 如果您的“间隔”小于 XNUMX
其次,您可能会被除以零,因为在这种模式下正常运行时间增加了
默认。 相反,使用 Uptime_hires:

Questions, Uptime, set_precision(Questions/Uptime_hires) 作为 QPS

这个例子很简单,但它显示了选择你想要的变量是多么容易
监控。

PLUGINS


innotop 有一个简单但强大的插件机制,你可以通过它扩展或修改它的
现有功能,并添加新功能。 innotop 的插件功能是
基于事件:插件注册自己以在事件发生时调用。 然后他们有
有机会影响事件。

innotop 插件是放置在 innotop 的“plugin_dir”目录中的 Perl 模块。 在 UNIX 上
系统,您可以放置​​到模块的符号链接,而不是放置实际文件
那里。 innotop 会自动发现该文件。 如果有对应的条目
“插件”配置文件部分,innotop 加载并激活插件。

模块必须符合 innotop 的插件接口。 另外,源代码
模块的编写方式必须使 innotop 可以检查文件并确定
包名称和描述。

小包装 来源
innotop 检查插件模块的源代码以确定 Perl 包名称。 它看起来
对于“package Foo”形式的一行; 如果找到,则将插件的包名称视为
是福。 当然包名可以是一个有效的 Perl 包名,双
分号等。

它还在源代码中寻找描述,使插件编辑器更人性化-
友好的。 描述是“# description: Foo”形式的注释行,其中“Foo”
是文本 innotop 将视为插件的描述。

插件 接口
innotop 插件接口非常简单:innotop 期望插件是一个对象——
面向模块,它可以调用某些方法。 方法是

新(%变量)
这是插件的构造函数。 它传递了一个 innotop 变量的散列,它
它可以操作(参见“插件变量”)。 它必须返回对新的引用
创建的插件对象。

在构建的时候,innotop 只加载了通用配置并创建了
默认内置变量及其默认内容(相当多)。
因此,程序的状态与 innotop 源代码中的完全相同,加上
配置文件中“常规”部分的配置变量。

如果您的插件操作变量,它会更改共享的全局数据
通过 innotop 和所有插件。 插件按照它们在列表中列出的顺序加载
配置文件。 你的插件可能在另一个插件之前或之后加载,所以有一个
如果插件修改其他数据,则插件之间可能会发生冲突或交互
插件使用或修改。

注册事件()
此方法必须返回插件感兴趣的事件列表(如果有)。
有关定义的事件,请参阅“插件事件”。 如果插件返回的事件不是
定义,事件被忽略。

事件处理程序
插件必须实现一个与它拥有的每个事件名称相同的方法
挂号的。 换句话说,如果插件从
注册事件(),它一定有 富()酒吧() 方法。 这些方法是
事件的回调。 有关每个事件的更多详细信息,请参阅“插件事件”。

插件 变量
插件的构造函数传递了一个 innotop 变量的哈希值,它可以操作。
如果插件对象保存它的副本以供以后使用,这可能是个好主意。 这
变量在 innotop 变量 %pluggable_vars 中定义,如下所示:

动作_for
键映射的 hashref。 这些是 innotop 的全局热键。

聚合函数
可用于分组的函数的 hashref。 参见“分组”。

配置
全局配置哈希。

连接
连接规范的 hashref。 这些只是如何规范
连接到服务器。

数据库
innotop 数据库连接的 hashref。 这些是实际的 DBI 连接对象。

过滤器
应用于表行的过滤器的 hashref。 有关更多信息,请参阅“过滤器”。

模式
模式的哈希引用。 有关更多信息,请参阅“模式”。

服务器组
服务器组的 hashref。 请参阅“服务器组”。

表元元
innotop 的表元数据的 hashref,每个表有一个条目(参见“表”
更多信息)。

反式函数
转换函数的 hashref。 参见“转换”。

变量集
变量集的 hashref。 参见“变量集”。

插件 展会活动
每个事件都在 innotop 源代码中的某处定义。 当 innotop 运行该代码时,
它为每个表示感兴趣的插件执行回调函数
事件。 innotop 为每个事件传递一些数据。 事件定义在
%event_listener_for 变量,如下:

提取值($set,$cur,$pre,$tbl)
此事件发生在从数据源中提取值的函数内。 这
参数是一组值、当前值、先前值和
表名。

设置为表
这个子程序很多地方都定义了事件,负责转
将 hashrefs 的 arrayref 转换为可以打印到屏幕的行的 arrayref。
事件都传递相同的数据:行的数组引用和表的名称
创建。 事件是 set_to_tbl_pre_filter,
set_to_tbl_pre_sort,set_to_tbl_pre_group,set_to_tbl_pre_colorize,
set_to_tbl_pre_transform、set_to_tbl_pre_pivot、set_to_tbl_pre_create、
set_to_tbl_post_create。

画屏($行)
此事件发生在将行打印到屏幕的子例程内。 $行
是字符串的arrayref。

简易 插件 例如:
解释插件功能的最简单方法可能是一个简单的例子。
以下模块在每个表的开头添加一列并将其值设置为
1.

用严格;
使用警告 FATAL => 'all';

包 Innotop::Plugin::Example;
# 描述:向每个表添加一个“示例”列

子新{
我的 ( $class, %vars ) = @_;
# 在 $self 中存储对 innotop 变量的引用
我的 $self = bless { %vars }, $class;

# 设计示例列
我的 $col = {
hdr => '例子',
只是 => '',
十二月 => 0,
数量 => 1,
标签 => '示例',
src => 'example', # 从数据源中的这一列中获取数据
tbl => '',
反式 => [],
};

# 将列添加到每个表中。
我的 $tbl_meta = $vars{tbl_meta};
foreach 我的 $tbl ( 值 %$tbl_meta ) {
# 将该列添加到已定义列的列表中
$tbl->{cols}->{example} = $col;
# 将该列添加到可见列列表中
unshift @{$tbl->{visible}}, 'example';
}

# 一定要返回对对象的引用。
返回 $self;
}

# 我想在数据集被渲染到表格中时被调用,拜托。
子 register_for_events {
我的 ( $self ) = @_;
返回 qw(set_to_tbl_pre_filter);
}

# 这个方法会在事件触发时调用。
子集_to_tbl_pre_filter {
我的 ( $self, $rows, $tbl ) = @_;
# 将示例列的数据源设置为值1。
foreach 我的 $row ( @$rows ) {
$row->{example} = 1;
}
}

1;

插件 编者
插件编辑器可让您查看 innotop 发现的插件并激活或停用
他们。 按 $ 启动编辑器以从任何模式启动配置编辑器。
按“p”键启动插件编辑器。 你会看到一个插件列表 innotop
发现。 您可以使用“j”和“k”键将突出显示移动到所需的一个,
然后按 * 键将其切换为活动或非活动状态。 退出编辑器并重启innotop
以使更改生效。

SQL 声明


innotop 使用一组有限的 SQL 语句从 MySQL 检索数据以进行显示。 这
语句是根据执行它们的服务器版本定制的;
例如,在 MySQL 5 和更新版本上,INNODB_STATUS 执行“SHOW ENGINE INNODB STATUS”,
而在早期版本中,它执行“SHOW INNODB STATUS”。 声明如下
如下:

执行的语句 SQL
==================================================
INNODB_STATUS SHOW [ENGINE] INNODB 状态
KILL_CONNECTION 杀死
KILL_QUERY 杀死查询
OPEN_TABLES 显示打开的表
进程列表显示完整进程列表
SHOW_MASTER_LOGS 显示主日志
SHOW_MASTER_STATUS 显示主状态
SHOW_SLAVE_STATUS 显示从机状态
SHOW_STATUS 显示 [全局] 状态
SHOW_VARIABLES 显示 [全局] 变量

数据 来源


每次 innotop 提取值以创建表(参见“EXPRESSIONS”和“TABLES”),它
从特定数据源执行此操作。 主要是因为从中提取的复杂数据
SHOW INNODB STATUS,这有点乱。 SHOW INNODB STATUS 包含混合
形成嵌套数据集的单个值和重复值。

每当 innotop 从 MySQL 获取数据时,它都会向每个集合添加两个额外的位:cxn 和
正常运行时间_雇用。 cxn 是数据来自的连接的名称。 正常运行时间_雇用
是服务器正常运行时间状态变量的高分辨率版本,如果
您的“间隔”设置为亚秒级。

以下是从中提取数据的数据源类型:

状态变量
这是最广泛的类别,最多类型的数据属于该类别。 它始于
SHOW STATUS 和 SHOW VARIABLES 的组合,但可能包括其他来源
根据需要,例如,显示主状态和显示从状态,以及许多
来自 SHOW INNODB STATUS 的非重复值。

死锁_锁
此数据是从 LATEST DETECTED DEADLOCK 中的事务列表中提取的
显示 INNODB 状态的部分。 它嵌套了两层深:事务,然后
锁。

DEADLOCK_TRANSACTIONS个
此数据来自 SHOW 的 LATEST DETECTED DEADLOCK 部分中的事务列表
INNODB 状态。 它嵌套了一层。

说明
此数据来自 EXPLAIN 返回的结果集。

INNODB_TRANSACTIONS
此数据来自 SHOW INNODB STATUS 的 TRANSACTIONS 部分。

IO_线程
此数据来自 SHOW INNODB 的 FILE I/O 部分中的线程列表
地位。

INNODB_LOCKS
此数据来自 SHOW INNODB STATUS 的 TRANSACTIONS 部分并嵌套了两个
层次深。

打开_表
此数据来自 SHOW OPEN TABLES。

处理员
此数据来自 SHOW FULL PROCESSLIST。

操作系统等待数组
此数据来自 SHOW INNODB STATUS 的 SEMAPHORES 部分并且嵌套了一层
深的。 它来自如下所示的行:

--线程 1568861104 已在 btr0cur.c 第 424 行等待....

MYSQL 特权


· 您必须以对许多应用程序具有 SUPER 权限的用户身份连接到 MySQL。
功能。

· 如果你没有SUPER权限,你仍然可以运行一些功能,但你不会
必须看到所有相同的数据。

· 您需要PROCESS 权限才能在Q 模式下查看当前正在运行的查询列表。

· 您需要特殊权限来启动和停止从服务器。

· 如果需要,您需要适当的权限来创建和删除死锁表(请参阅
“服务器连接”)。

系统 参赛要件


当然,您需要 Perl 来运行 innotop。 您还需要一些 Perl 模块:DBI、
DBD::mysql、Term::ReadKey 和 Time::HiRes。 这些应该包含在大多数 Perl 中
发行版,但如果不是,我建议使用随您的发行版分发的版本
操作系统或 Perl 发行版,而不是来自 CPAN。 Term::ReadKey 特别有
已知如果从 CPAN 安装会导致问题。

如果您有 Term::ANSIColor,innotop 将使用它来更易读地格式化标题并且
紧凑地。 (在 Microsoft Windows 下,您还需要 Win32::Console::ANSI for terminal
要遵守的格式代码)。 如果你安装 Term::ReadLine,最好
Term::ReadLine::Gnu,你会得到很好的自动完成支持。

我在 Gentoo GNU/Linux、Debian 和 Ubuntu 上运行 innotop,我收到了人们的反馈
在 Red Hat、CentOS、Solaris 和 Mac OSX 上成功运行它。 我看不出任何理由
为什么它不能在其他 UNIX-ish 操作系统上运行,但我不确定。 它也是
在 ActivePerl 下的 Windows 上运行没有问题。

innotop 已用于 MySQL 版本 3.23.58、4.0.27、4.1.0、4.1.22、5.0.26、5.1.15、
和 5.2.3。 如果它不能为您正确运行,则应该报告该错误。

使用 onworks.net 服务在线使用 innotop


免费服务器和工作站

下载 Windows 和 Linux 应用程序

  • 1
    移相器
    移相器
    Phaser 是一个快速、免费且有趣的开放式
    源 HTML5 游戏框架,提供
    WebGL 和 Canvas 渲染
    桌面和移动网络浏览器。 游戏
    可以共...
    下载移相器
  • 2
    附庸引擎
    附庸引擎
    VASSAL 是一个游戏引擎,用于创建
    电子版传统板
    和纸牌游戏。 它提供支持
    游戏块渲染和交互,
    和...
    下载 VASSAL 引擎
  • 3
    OpenPDF - iText 的分支
    OpenPDF - iText 的分支
    OpenPDF 是一个 Java 库,用于创建
    以及使用 LGPL 编辑 PDF 文件和
    MPL 开源许可证。 OpenPDF 是
    iText 的 LGPL/MPL 开源继承者,
    一个...
    下载 OpenPDF - iText 的分支
  • 4
    SAGA GIS
    SAGA GIS
    SAGA - 自动化系统
    地球科学分析 - 是地理
    信息系统 (GIS) 软件
    地理数据的强大功能
    加工和分析...
    下载 SAGA GIS
  • 5
    Java/JTOpen 工具箱
    Java/JTOpen 工具箱
    IBM Toolbox for Java / JTOpen 是一个
    Java类库支持
    客户端/服务器和互联网编程
    模型到运行 OS/400 的系统,
    i5/OS, 哦...
    下载 Java/JTOpen 工具箱
  • 6
    D3.js
    D3.js
    D3.js(或数据驱动文档的 D3)
    是一个 JavaScript 库,它允许你
    生成动态的交互式数据
    Web 浏览器中的可视化。 与D3
    您...
    下载 D3.js
  • 更多 ”

Linux 命令

Ad