Documentation Home
MySQL 外壳 8.0  / 第 10 章扩展 MySQL Shell  / 10.1 使用 MySQL Shell 报告  /  10.1.5 运行 MySQL Shell 报告

10.1.5 运行 MySQL Shell 报告

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

使用 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 的用户自定义报告也可以作为shell.reports对象中的 API 函数访问。该 shell.reports对象在 JavaScript 和 Python 模式下可用,并使用注册期间提供的报表名称作为函数名称。该函数具有以下签名:

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

在哪里:

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

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

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

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

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

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

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