已向 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});