10.1.5 运行 MySQL Shell 报告

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

使用显示和观看命令

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

\show命令运行指定的报告,该报告可以是内置的 MySQL Shell 报告,也可以是已在 MySQL Shell 中注册的用户定义的报告。您可以指定报告支持的任何选项或附加参数。例如,以下命令运行内置的 report 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* (或) 指定刷新之间等待的秒数。默认值为 2 秒。可以指定小数秒,最小间隔为 0.1 秒,间隔最大可设置为 86400 秒(24 小时)。 -i *float*

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

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

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

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

使用shell.reports对象

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

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

在哪里:

  • session是用于执行报告的 MySQL Shell 会话对象。
  • argv是一个列表,其中包含传递给报告的附加参数的字符串值。
  • options是一个字典,其中包含与任何特定于报告的选项及其值相对应的键名称和值。选项的缩写形式不能与shell.reports对象一起使用。

返回值是一个带有 key 的字典 report,以及包含报告的 JSON 对象列表。对于列表类型的报告,每个列表都有一个元素,对于报告类型,有一个元素,对于打印类型,没有元素。

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

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

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