Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  Functions and Operators  /  Performance Schema Functions

14.21 性能模式函数

MySQL 包含了内置的 SQL 函数,这些函数用于格式化或检索性能模式数据,并且可以用作与对应 sys 架构存储函数相同的等效函数。这些内置函数可以在任何架构中调用,不需要前缀,和 sys 函数不同,它们需要使用 sys. 架构前缀或将 sys 设为当前架构。

表14.31 性能模式函数

Name Description
FORMAT_字节() 将字节数量转换为带单位的值
FORMAT_皮克秒时间() 将以皮秒为单位的时间转换为带单位的值
PS_当前线程ID() 性能模式中当前线程的ID
PS_线程ID() 给定线程的性能模式中的线程ID

内置函数取代了对应 sys 函数,这些函数已被弃用;预计它们将在未来版本的 MySQL 中移除。使用 sys 函数的应用程序应该调整为使用内置函数,而考虑到与 sys 函数之间的一些微小差异。有关这些差异的详细信息,请参阅本节中的函数描述。

  • FORMAT_字节(count)

    给定一个数字的字节数量,将其转换为人类可读的格式并返回一个字符串,该字符串包含一个值和单位指示器。字符串包含以 2 位小数表示的字节数量,并且至少有 3 个有效数字。数量少于 1024 字节将以整数形式表示,不进行四舍五入。如果 countNULL,则该函数返回 NULL

    单位指示器取决于字节数量参数的大小,如下表所示。

    Argument Value Result Units Result Units Indicator
    Up to 1023 字节 字节
    Up to 10242 − 1 千字节 KiB
    Up to 10243 − 1 兆字节 MiB
    Up to 10244 − 1 吉字节 GiB
    Up to 10245 − 1 太字节 TiB
    Up to 10246 − 1 皮字节 PiB
    10246 and up 艾字节 EiB
    mysql> SELECT FORMAT_BYTES(512), FORMAT_BYTES(18446644073709551615);
    +-------------------+------------------------------------+
    | FORMAT_BYTES(512) | FORMAT_BYTES(18446644073709551615) |
    +-------------------+------------------------------------+
    |  512 bytes        | 16.00 EiB                          |
    +-------------------+------------------------------------+

    FORMAT_字节() 可以用来替代 sys 架构中的 format_bytes() 函数,考虑到以下差异:

  • FORMAT_皮秒时间(time_val)

    给定一个以皮秒为单位的性能模式延迟或等待时间,将其转换为人类可读的格式并返回一个字符串,该字符串包含一个值和单位指示器。字符串包含以 2 位小数表示的时间,并且至少有 3 个有效数字。时间少于 1 纳秒将以整数形式表示,不进行四舍五入。

    如果 time_valNULL,则该函数返回 NULL

    单位指示器取决于时间值参数的大小,如下表所示。

    Argument Value Result Units Result Units Indicator
    Up to 103 − 1 皮秒 ps
    Up to 106 − 1 纳秒 ns
    Up to 109 − 1 微秒 us
    Up to 1012 − 1 毫秒 ms
    Up to 60×1012 − 1 s
    Up to 3.6×1015 − 1 分钟 min
    Up to 8.64×1016 − 1 小时 h
    8.64×1016 and up 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_皮秒时间() 可以用来替代 sys 架构中的 format_time() 函数,考虑到以下差异:

  • PS_CURRENT_THREAD_ID()

    返回一个 BIGINT UNSIGNED 值,表示分配给当前连接的性能模式线程 ID。

    返回的线程 ID 值是 Performance Schema 表中 THREAD_ID 列所指定的类型。

    性能模式配置对 PS_CURRENT_THREAD_ID() 的影响与对 PS_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 架构的 ps_thread_id() 函数并将其作为参数传递为 NULLCONNECTION_ID() 的快捷方式。

  • PS_THREAD_ID(connection_id)

    给定一个连接 ID,返回一个 BIGINT UNSIGNED 值,表示分配给该连接 ID 的性能模式线程 ID,或者如果没有为该连接 ID 分配线程 ID,则返回 NULL。后者可能发生在未被监视的线程上,或当 connection_idNULL 时。

    连接 ID 参数是 Performance Schema threads 表中 PROCESSLIST_ ID 列或 SHOW PROCESSLIST 输出中的 Id 列的类型。

    返回的线程 ID 值是 Performance Schema 表中 THREAD_ID 列所指定的类型。

    性能模式配置对 PS_THREAD_ID() 的影响如下。(这些注释也适用于 PS_CURRENT_THREAD_ID()。)

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

    PS_THREAD_ID() 可以代替 sys 架构下的 ps_thread_id() 函数,注意以下差异: