已使用 MySQL Shell 注册的内置报表和用户定义报表可以使用
\show
or\watch
命令以任何交互式 MySQL Shell 模式(JavaScript、Python 或 SQL)运行,或者使用shell.reports
来自 JavaScript 或 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=
(或)指定刷新之间等待的秒数。默认值为 2 秒。可以指定小数秒,最小间隔为 0.1 秒,间隔最大可以设置为 86400 秒(24 小时)。float
-i
float
--nocls
指定刷新前不清除屏幕,因此仍然可以看到以前的结果。
例如,以下命令使用内置报告
query
显示语句计数器变量并每 0.5 秒刷新一次结果:
\watch query --interval=0.5 show global status like 'Com%'
引号由命令处理程序而不是直接由服务器解释,因此如果在查询中使用它们,则必须通过在它们前面加上反斜杠 ( \
) 来转义它们。
内置的 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});