可以使用 \show
或 \watch
命令在任何交互式 MySQL Shell 模式(JavaScript、Python 或 SQL)中运行内置报告和已向 MySQL Shell 注册的用户定义报告,或者从 JavaScript 或 Python 脚本中使用 shell.reports
对象调用。不带参数的 \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
)指定两次刷新之间等待的秒数。默认值为 2 秒。可以指定小数秒,最小间隔为 0.1 秒,间隔最多可以设置为 86400 秒(24 小时)。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 对象列表。对于 List 类型的报告,每个列表都有一个元素,对于 Report 类型,只有一个元素,对于 Print 类型,则没有元素。
对于 shell.reports
对象,如果存在选项字典,则即使没有附加参数,也需要 argv
列表。使用 \help
命令显示报告函数的帮助,并检查报告是否需要任何参数或选项。report_name
例如,以下代码运行名为 sessions
的用户定义报告,该报告显示当前存在的会话。创建了一个 MySQL Shell 会话对象来执行报告。使用了一个特定于报告的选项将返回的行数限制为 10 行。没有其他参数,因此 argv
列表存在但为空。
report = shell.reports.sessions(shell.getSession(), [], {'limit':10});