文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  函數與運算子  /  Performance Schema 函數

14.22 Performance Schema 函數

MySQL 包含內建的 SQL 函數,可格式化或擷取 Performance Schema 資料,並且可以作為對應 sys 結構描述儲存函數的等效函數使用。與 sys 函數不同,內建函數可以在任何結構描述中呼叫,且不需要限定詞,而 sys 函數需要 sys. 結構描述限定詞,或 sys 為目前的結構描述。

表 14.32 Performance Schema 函數

名稱 描述
FORMAT_BYTES() 將位元組計數轉換為帶單位的數值
FORMAT_PICO_TIME() 將皮秒時間轉換為帶單位的數值
PS_CURRENT_THREAD_ID() 目前執行緒的 Performance Schema 執行緒 ID
PS_THREAD_ID() 給定執行緒的 Performance Schema 執行緒 ID

內建函數取代對應的 sys 函數,後者已棄用;預計在未來版本的 MySQL 中將會移除。使用 sys 函數的應用程式應調整為改用內建函數,並記住 sys 函數與內建函數之間的一些細微差異。有關這些差異的詳細資訊,請參閱本節中的函數描述。

  • FORMAT_BYTES(count)

    給定數值位元組計數,將其轉換為人類可讀的格式,並傳回包含數值和單位指示器的字串。該字串包含四捨五入到小數點後 2 位,且至少 3 位有效數字的位元組數。小於 1024 位元組的數字表示為整數,且不四捨五入。如果 countNULL,則傳回 NULL

    單位指示器取決於位元組計數引數的大小,如下表所示。

    引數值 結果單位 結果單位指示器
    最多 1023 位元組 位元組
    最多 10242 − 1 千位元組 KiB
    最多 10243 − 1 百萬位元組 MiB
    最多 10244 − 1 吉位元組 GiB
    最多 10245 − 1 太位元組 TiB
    最多 10246 − 1 拍位元組 PiB
    10246 及以上 艾位元組 EiB
    mysql> SELECT FORMAT_BYTES(512), FORMAT_BYTES(18446644073709551615);
    +-------------------+------------------------------------+
    | FORMAT_BYTES(512) | FORMAT_BYTES(18446644073709551615) |
    +-------------------+------------------------------------+
    |  512 bytes        | 16.00 EiB                          |
    +-------------------+------------------------------------+

    FORMAT_BYTES() 可用於取代 sys 結構描述 format_bytes() 函數,但請記住此差異

  • FORMAT_PICO_TIME(time_val)

    給定數值的 Performance Schema 延遲或等待時間 (以皮秒為單位),將其轉換為人類可讀的格式,並傳回包含數值和單位指示器的字串。該字串包含四捨五入到小數點後 2 位,且至少 3 位有效數字的十進位時間。小於 1 奈秒的時間表示為整數,且不四捨五入。

    如果 time_valNULL,則此函數傳回 NULL

    單位指示器取決於時間值引數的大小,如下表所示。

    引數值 結果單位 結果單位指示器
    最多 103 − 1 皮秒 ps
    最多 106 − 1 奈秒 ns
    最多 109 − 1 微秒 us
    最多 1012 − 1 毫秒 ms
    最多 60×1012 − 1 s
    最多 3.6×1015 − 1 分鐘 min
    最多 8.64×1016 − 1 小時 h
    8.64×1016 及以上 d
    mysql> SELECT FORMAT_PICO_TIME(3501), FORMAT_PICO_TIME(188732396662000);
    +------------------------+-----------------------------------+
    | FORMAT_PICO_TIME(3501) | FORMAT_PICO_TIME(188732396662000) |
    +------------------------+-----------------------------------+
    | 3.50 ns                | 3.15 min                          |
    +------------------------+-----------------------------------+

    FORMAT_PICO_TIME() 可用於取代 sys 結構描述 format_time() 函數,但請記住這些差異

  • PS_CURRENT_THREAD_ID()

    傳回一個 BIGINT UNSIGNED 值,表示指派給目前連線的 Performance Schema 執行緒 ID。

    傳回的執行緒 ID 值是 Performance Schema 表格中 THREAD_ID 欄位中給定的類型值。

    Performance Schema 配置會以與 PS_THREAD_ID() 相同的方式影響 PS_CURRENT_THREAD_ID()。詳細資訊,請參閱該函數的描述。

    mysql> SELECT PS_CURRENT_THREAD_ID();
    +------------------------+
    | PS_CURRENT_THREAD_ID() |
    +------------------------+
    |                     52 |
    +------------------------+
    mysql> SELECT PS_THREAD_ID(CONNECTION_ID());
    +-------------------------------+
    | PS_THREAD_ID(CONNECTION_ID()) |
    +-------------------------------+
    |                            52 |
    +-------------------------------+

    PS_CURRENT_THREAD_ID() 可以作為呼叫 sys schema ps_thread_id() 函數時,使用 NULLCONNECTION_ID() 作為引數的快捷方式。

  • PS_THREAD_ID(connection_id)

    給定一個連線 ID,傳回一個 BIGINT UNSIGNED 值,表示指派給該連線 ID 的 Performance Schema 執行緒 ID;如果該連線 ID 沒有執行緒 ID,則傳回 NULL。後者可能發生在未檢測的執行緒,或 connection_idNULL 的情況。

    連線 ID 引數是 Performance Schema threads 表格的 PROCESSLIST_ID 欄位中,或 SHOW PROCESSLIST 輸出的 Id 欄位中給定的類型值。

    傳回的執行緒 ID 值是 Performance Schema 表格中 THREAD_ID 欄位中給定的類型值。

    Performance Schema 配置會以下列方式影響 PS_THREAD_ID() 的運作。(這些說明也適用於 PS_CURRENT_THREAD_ID()。)

    mysql> SELECT PS_THREAD_ID(6);
    +-----------------+
    | PS_THREAD_ID(6) |
    +-----------------+
    |              45 |
    +-----------------+

    PS_THREAD_ID() 可以用來替代 sys schema 的 ps_thread_id() 函數,請記住這個差異