性能模式功能(sys)
从MySQL 8.0.16开始,MySQL包含格式化或检索“性能模式”数据的内置SQL函数,它们可用作等效的sys模式存储功能的等效项。内置函数可以在任何模式中调用,并且不需要限定符,这与sys需要sys.模式限定符或sys当前模式的函数不同。
表性能架构功能
| 名称 | 描述 | 
|---|---|
| FORMAT_BYTES()(引入8.0.16) | 将字节数转换为单位的值 | 
| FORMAT_PICO_TIME()(引入8.0.16) | 将以皮秒为单位的时间转换为单位的值 | 
| PS_CURRENT_THREAD_ID()(引入8.0.16) | 当前线程的性能架构线程ID | 
| PS_THREAD_ID()(引入8.0.16) | 给定线程的性能架构线程ID | 
内置函数将取代相应的sys函数,不推荐使用的函数将在以后的MySQL版本中删除。使用sys功能的应用程序应调整为使用内置功能,但要记住sys功能和内置功能之间的一些细微差异。有关这些差异的详细信息,请参阅本节中的功能描述。
- FORMAT_BYTES(count)- 给定一个数字字节计数,将其转换为人类可读的格式,并返回一个由值和单位指示符组成的字符串。该字符串包含四舍五入到小数点后两位的字节数,至少3个有效数字。小于1024字节的数字表示为整数,不进行四舍五入。 - 单位指示符取决于字节计数参数的大小,如下表所示。 - 参数值 - 结果单位 - 结果单位指标 - 高达1023 - 个字节 - 个字节 - 最高1024 2 − 1 - 千字节 - KiB - 高达1024 3 − 1 - 兆字节 - MiB - 高达1024 4 − 1 - 吉字节 - 吉卜 - 高达1024 5 − 1 - 兆字节 - 钛 - 高达1024 6 − 1 - PB - PiB - 1024 6以上 - 十亿字节 - 银行 - mysql> - SELECT FORMAT_BYTES(512), FORMAT_BYTES(18446644073709551615); +------------------- +------------------------------------ + | FORMAT_BYTES(512) | FORMAT_BYTES(18446644073709551615) | +------------------- +------------------------------------ + | 512 bytes | 16.00 EiB | +------------------- +------------------------------------ +- FORMAT_BYTES()已在MySQL 8.0.16中添加。记住以下区别,可以用它代替- sys模式- format_bytes()函数:- FORMAT_BYTES()使用- EiB单位指示器。- sys.format_bytes()才不是。
 
- FORMAT_PICO_TIME(time_val)- 给定数字性能模式延迟或等待时间(以皮秒为单位),将其转换为人类可读的格式,并返回由值和单位指示符组成的字符串。该字符串包含十进制时间,四舍五入到小数点后两位,并且最少3个有效数字。1纳秒以下的时间以整数表示,不进行四舍五入。 - 单位指示符取决于时间值参数的大小,如下表所示。 - 参数值 - 结果单位 - 结果单位指标 - 最高10 3 − 1 - 皮秒 - ps - 高达10 6 − 1 - 纳秒 - ns - 高达10 9 − 1 - 微秒 - 我们 - 最高10 12 − 1 - 毫秒 - 女士 - 高达60×10 12 − 1 - 秒 - s - 高达3.6×10 15 − 1 - 分钟 - 分 - 高达8.64×10 16 − 1 - 小时 - H - 8.64×10 16及以上 - 天 - 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()已在MySQL 8.0.16中添加。记住这些差异,可以用它代替- sys模式- format_time()功能:- 要表示分钟,请sys.format_time()使用m单位指示器,而FORMAT_PICO_TIME()使用min。
- sys.format_time()使用- w(星期)单位指示器。- FORMAT_PICO_TIME()才不是。
 
- 要表示分钟,请
- PS_CURRENT_THREAD_ID()- 返回一个 - BIGINT UNSIGNED值,该值表示分配给当前连接的性能架构线程ID。- 线程ID返回值是 - THREAD_IDPerformance Schema表的列中给定类型的值。- 性能模式配置的影响方式 - 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()已在MySQL 8.0.16中添加。它可以用作使用参数或调用- sys架构- ps_thread_id()函数的快捷方式。- NULL- CONNECTION_ID()
- PS_THREAD_ID(connection_id)- 给定一个连接ID,则返回一个 - BIGINT UNSIGNED值,该值表示分配给该连接ID的性能架构线程ID,或者- NULL如果该连接ID 不存在线程ID,则返回一个值。后者可能发生在未检测的线程上。- 连接ID参数是在 - PROCESSLIST_ID“性能模式”- threads表的- Id列或- SHOW PROCESSLIST输出的列中给定的类型的值。- 线程ID返回值是 - THREAD_IDPerformance Schema表的列中给定类型的值。- 性能架构配置会影响 - PS_THREAD_ID()操作,如下所示。(这些说明也适用于- PS_CURRENT_THREAD_ID()。)- 禁用thread_instrumentation使用者将禁止在线程级别收集和汇总统计信息,但是对无效PS_THREAD_ID()。
- 如果performance_schema_max_thread_instances不为0,则性能架构为线程统计信息分配内存,并为每个可用实例内存的线程分配一个内部ID。如果某些线程的实例内存不可用,则PS_THREAD_ID()返回NULL;在这种情况下,Performance_schema_thread_instances_lost将为非零。
- 如果performance_schema_max_thread_instances为0,则性能架构不分配线程内存,并PS_THREAD_ID()返回NULL。
- 如果性能架构本身被禁用,则会PS_THREAD_ID()产生错误。
 - mysql> - SELECT PS_THREAD_ID(6); +----------------- + | PS_THREAD_ID(6) | +----------------- + | 45 | +----------------- +- PS_THREAD_ID()已在MySQL 8.0.16中添加。记住以下区别,可以用它代替- sys模式- ps_thread_id()函数:- 参数为时NULL,sys.ps_thread_id()返回当前连接的线程ID,而PS_THREAD_ID()返回NULL。要获取当前的连接线程ID,请PS_CURRENT_THREAD_ID()改用。
 
- 禁用
