MySQL Shell 8.4  /  ...  /  运行 MySQL Shell 报告

10.1.5 运行 MySQL Shell 报告

可以使用 \show\watch 命令在任何交互式 MySQL Shell 模式(JavaScript、Python 或 SQL)中运行内置报告和已向 MySQL Shell 注册的用户定义报告,或者从 JavaScript 或 Python 脚本中使用 shell.reports 对象调用。不带参数的 \show 命令或 \watch 命令会列出所有可用的内置报告和用户定义报告。

使用 Show 和 Watch 命令

要使用 \show\watch 命令,必须有一个活动的 MySQL 会话。

\show 命令运行指定的报告,该报告可以是内置 MySQL Shell 报告,也可以是已向 MySQL Shell 注册的用户定义报告。您可以指定报告支持的任何选项或附加参数。例如,以下命令运行内置报告 query,该报告将单个 SQL 语句作为参数

\show query show session status

报告名称不区分大小写,并且短划线和下划线字符被视为相同。

\show 命令还提供以下标准选项

  • --vertical(或 -E)以垂直格式(而不是表格格式)显示返回列表的报告结果。

  • --help 显示指定报告的任何提供的帮助。(或者,您可以将 \help 命令与报告的名称一起使用,这将显示该报告函数的帮助。)

标准选项和特定于报告的选项位于参数之前。例如,以下命令运行内置报告 query 并以垂直格式返回结果

\show query --vertical show session status

\watch 命令以与 \show 命令相同的方式运行报告,但随后会定期刷新结果,直到您使用 Ctrl + C 取消该命令。 \watch 命令具有以下附加标准选项来控制刷新行为:

  • --interval=float(或 -i float)指定两次刷新之间等待的秒数。默认值为 2 秒。可以指定小数秒,最小间隔为 0.1 秒,间隔最多可以设置为 86400 秒(24 小时)。

    --nocls 指定在刷新之前不清除屏幕,因此仍然可以看到以前的结果。

例如,以下命令使用内置报告 query 显示语句计数器变量,并每 0.5 秒刷新一次结果

\watch query --interval=0.5 show global status like 'Com%'

引号由命令处理程序解释,而不是直接由服务器解释,因此如果在查询中使用引号,则必须在引号前面加上反斜杠 (\) 进行转义。

使用 shell.reports 对象

内置 MySQL Shell 报告和已向 MySQL Shell 注册的用户定义报告也可以作为 shell.reports 对象中的 API 函数访问。 shell.reports 对象在 JavaScript 和 Python 模式下可用,并使用注册期间提供的报告名称作为函数名称。该函数具有以下签名

Dict report(Session session, List argv, Dict options);

其中:

  • session 是要用于执行报告的 MySQL Shell 会话对象。

  • argv 是一个列表,其中包含传递给报告的附加参数的字符串值。

  • options 是一个字典,其键名和值对应于任何特定于报告的选项及其值。选项的简短形式不能与 shell.reports 对象一起使用。

返回值是一个字典,其中包含键 report,以及一个包含报告的 JSON 对象列表。对于 List 类型的报告,每个列表都有一个元素,对于 Report 类型,只有一个元素,对于 Print 类型,则没有元素。

对于 shell.reports 对象,如果存在选项字典,则即使没有附加参数,也需要 argv 列表。使用 \help report_name 命令显示报告函数的帮助,并检查报告是否需要任何参数或选项。

例如,以下代码运行名为 sessions 的用户定义报告,该报告显示当前存在的会话。创建了一个 MySQL Shell 会话对象来执行报告。使用了一个特定于报告的选项将返回的行数限制为 10 行。没有其他参数,因此 argv 列表存在但为空。

report = shell.reports.sessions(shell.getSession(), [], {'limit':10});