MySQL Shell 9.0  /  ...  /  執行 MySQL Shell 報告

10.1.5 執行 MySQL Shell 報告

已向 MySQL Shell 註冊的內建報告和使用者定義報告,可以使用 \show\watch 命令在任何互動式 MySQL Shell 模式 (JavaScript、Python 或 SQL) 中執行,或使用 JavaScript 或 Python 指令碼中的 shell.reports 物件呼叫。不帶參數的 \show 命令或 \watch 命令會列出所有可用的內建和使用者定義報告。

使用 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 float) 指定重新整理之間要等待的秒數。預設值為 2 秒。可以指定小數秒數,最小間隔為 0.1 秒,間隔可以設定為最多 86400 秒 (24 小時)。

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