当为周期性输出启用 InnoDB
监视器时,InnoDB
大约每 15 秒将输出写入 mysqld 服务器标准错误输出 (stderr
)。
InnoDB
将监视器输出发送到 stderr
而不是 stdout
或固定大小的内存缓冲区,以避免潜在的缓冲区溢出。
在 Windows 上,stderr
被定向到默认日志文件,除非另有配置。如果您希望将输出定向到控制台窗口而不是错误日志,请使用 --console
选项从控制台窗口中的命令提示符启动服务器。有关更多信息,请参见 Windows 上的默认错误日志目标.
在 Unix 和类 Unix 系统上,stderr
通常被定向到终端,除非另有配置。有关更多信息,请参见 Unix 和类 Unix 系统上的默认错误日志目标.
只有当您实际需要查看监视器信息时才应启用 InnoDB
监视器,因为输出生成会导致一些性能下降。此外,如果监视器输出被定向到错误日志,如果您忘记稍后禁用监视器,日志可能会变得非常大。
为了协助故障排除,InnoDB
在某些情况下会暂时启用标准 InnoDB
监视器输出。有关更多信息,请参见 第 17.20 节,“InnoDB 故障排除”.
InnoDB
监视器输出以包含时间戳和监视器名称的标题开头。例如
=====================================
2014-10-16 18:37:29 0x7fc2a95c1700 INNODB MONITOR OUTPUT
=====================================
标准 InnoDB
监视器 (INNODB MONITOR OUTPUT
) 的标题也用于锁定监视器,因为后者会生成相同的输出,但会添加额外的锁定信息。
innodb_status_output
和 innodb_status_output_locks
系统变量用于启用标准 InnoDB
监视器和 InnoDB
锁定监视器。
需要 PROCESS
权限才能启用或禁用 InnoDB
监视器。
启用标准 InnoDB 监视器
通过将 innodb_status_output
系统变量设置为 ON
来启用标准 InnoDB
监视器。
SET GLOBAL innodb_status_output=ON;
要禁用标准 InnoDB
监视器,请将 innodb_status_output
设置为 OFF
。
关闭服务器时,innodb_status_output
变量将被设置为默认的 OFF
值。
启用 InnoDB 锁定监视器
InnoDB
锁定监视器数据与 InnoDB
标准监视器输出一起打印。为了周期性地打印 InnoDB
锁定监视器数据,必须同时启用 InnoDB
标准监视器和 InnoDB
锁定监视器。
要启用 InnoDB
锁定监视器,请将 innodb_status_output_locks
系统变量设置为 ON
。为了周期性地打印 InnoDB
锁定监视器数据,必须同时启用 InnoDB
标准监视器和 InnoDB
锁定监视器。
SET GLOBAL innodb_status_output=ON;
SET GLOBAL innodb_status_output_locks=ON;
要禁用 InnoDB
锁监视器,请将 innodb_status_output_locks
设置为 OFF
。要禁用 InnoDB
标准监视器,请将 innodb_status_output
也设置为 OFF
。
关闭服务器时,innodb_status_output
和 innodb_status_output_locks
变量将被设置为默认值 OFF
。
要为 SHOW ENGINE INNODB STATUS
输出启用 InnoDB
锁监视器,您只需要启用 innodb_status_output_locks
。
按需获取标准 InnoDB 监视器输出
作为为定期输出启用标准 InnoDB
监视器的替代方法,您可以使用 SHOW ENGINE INNODB STATUS
SQL 语句按需获取标准 InnoDB
监视器输出,该语句会将输出提取到您的客户端程序。如果您使用的是 mysql 交互式客户端,如果您将通常的分号语句终止符替换为 \G
,则输出更易读。
mysql> SHOW ENGINE INNODB STATUS\G
SHOW ENGINE INNODB STATUS
输出还包括 InnoDB
锁监视器数据,如果启用了 InnoDB
锁监视器。
将标准 InnoDB 监视器输出定向到状态文件
可以通过在启动时指定 --innodb-status-file
选项来启用标准 InnoDB
监视器输出并将其定向到状态文件。使用此选项时,InnoDB
会在数据目录中创建一个名为 innodb_status.
的文件,并大约每 15 秒将输出写入该文件。pid
InnoDB
会在服务器正常关闭时删除状态文件。如果发生异常关闭,则可能需要手动删除状态文件。
--innodb-status-file
选项适用于临时使用,因为输出生成会影响性能,并且 innodb_status.
文件随着时间的推移可能会变得很大。pid