已向 MySQL Shell 註冊的內建報表和使用者定義報表可以使用 \show
或 \watch
命令在任何互動式 MySQL Shell 模式 (JavaScript、Python 或 SQL) 中執行,或者使用 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 物件清單。對於清單類型的報表,每個清單都有一個元素,對於報表類型,有一個單一元素,對於列印類型,則沒有任何元素。
使用 shell.reports
物件時,如果存在選項字典,則即使沒有額外引數,也需要 argv
清單。使用 \help
命令來顯示報表函式的說明,並檢查報表是否需要任何引數或選項。report_name
例如,下列程式碼會執行名為 sessions
的使用者定義報表,該報表會顯示目前存在的工作階段。會建立一個 MySQL Shell 工作階段物件來執行報表。使用報表特定的選項,將傳回的列數限制為 10。沒有額外的引數,因此 argv
清單存在,但為空。
report = shell.reports.sessions(shell.getSession(), [], {'limit':10});