Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

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

14.21 性能模式函数

MySQL 包含内置的 SQL 函数,用于格式化或检索性能模式数据,并且可以用作对应的 sys 模式存储函数的等效项。这些内置函数可以在任何模式中调用,不需要限定符,而 sys 函数需要 sys. 模式限定符或将 sys 作为当前模式。

表 14.31 性能模式函数

Name Description
FORMAT_BYTES() 将字节计数转换为带单位的值
FORMAT_PICO_TIME() 将皮秒时间转换为带单位的值
PS_CURRENT_THREAD_ID() 当前线程的性能模式线程 ID
PS_THREAD_ID() 给定线程的性能模式线程 ID

内置函数取代了对应的 sys 函数,这些函数将在未来版本的 MySQL 中删除。使用 sys 函数的应用程序应该调整为使用内置函数,而不是 sys 函数,考虑到内置函数和 sys 函数之间的一些小差异。

  • FORMAT_BYTES(count)

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

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

    Argument Value Result Units Result Units Indicator
    Up to 1023 字节 字节
    Up to 10242 − 1 kibibytes KiB
    Up to 10243 − 1 mebibytes MiB
    Up to 10244 − 1 gibibytes GiB
    Up to 10245 − 1 tebibytes TiB
    Up to 10246 − 1 pebibytes PiB
    10246 and up exbibytes 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)

    给定一个性能模式延迟或等待时间(以皮秒为单位),将其转换为人类可读的格式,并返回一个字符串,包括一个值和一个单位指示符。字符串包含四舍五入到 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 FORMAT_PICO_TIME() 可以代替 sys 模式的 format_time() 函数,考虑到以下差异:
    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() may be used instead of the sys schema format_time() function, keeping in mind these differences:

  • PS_CURRENT_THREAD_ID()

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

    线程 ID 返回值是性能模式表中的 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。后者可能发生在未instrumented 的线程中,或者如果 connection_idNULL

    连接 ID 参数是性能模式 threads 表或 SHOW PROCESSLIST 输出中的 PROCESSLIST_ID 列或 Id 列中的值类型。

    线程 ID 返回值是性能模式表中的 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() 函数,需要注意以下差异: