14.22 Функции Performance Schema
MySQL включает встроенные SQL-функции, которые форматируют или извлекают данные Performance Schema и могут быть использованы в качестве эквивалентов соответствующим sys схемам хранимых функций. Встроенные функции могут вызываться в любой схеме и не требуют квалификатора, в отличие от sys функций, которые требуют либо квалификатора схемы sys., либо чтобы sys была текущей схемой.
Таблица 14.32 Функции Performance Schema
| Имя | Описание |
|---|---|
FORMAT_BYTES() | Преобразовать количество байтов в значение с единицами измерения |
FORMAT_PICO_TIME() | Преобразовать время в пикосекундах в значение с единицами измерения |
PS_CURRENT_THREAD_ID() | Идентификатор потока Performance Schema для текущего потока |
PS_THREAD_ID() | Идентификатор потока Performance Schema для заданного потока |
Встроенные функции заменяют соответствующие устаревшие sys функции; ожидается их удаление в будущей версии MySQL. Приложения, использующие sys функции, должны быть адаптированы к использованию встроенных функций, учитывая некоторые незначительные различия между sys функциями и встроенными функциями. Подробную информацию об этих различиях см. в описаниях функций в этом разделе.
-
Принимая числовое значение количества байтов, преобразует его в удобочитаемый формат и возвращает строку, содержащую значение и индикатор единиц измерения. Строка содержит число байтов, округлённое до 2 десятичных знаков и с минимально 3 значащими цифрами. Числа, меньшие 1024 байт, представляются целыми числами и не округляются. Возвращает
NULL, еслиcountравно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_BYTES()использует индикатор единиц измеренияEiB.sys.format_bytes()— нет.
-
Принимая числовое значение задержки или времени ожидания Performance Schema в пикосекундах, преобразует его в удобочитаемый формат и возвращает строку, содержащую значение и индикатор единиц измерения. Строка содержит десятичное время, округлённое до 2 десятичных знаков и с минимально 3 значащими цифрами. Времена менее 1 наносекунды отображаются как целые числа и не округляются.
Если
time_valравноNULL, эта функция возвращает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(), имея в виду эти различия:Для обозначения минут,
sys.format_time()использует индикатор единиц измеренияm, в то время какFORMAT_PICO_TIME()используетmin.sys.format_time()использует индикатор единиц измеренияw(недели).FORMAT_PICO_TIME()— нет.
-
Возвращает значение
BIGINT UNSIGNED, представляющее идентификатор потока Performance Schema, назначенный текущему соединению.Значение возвращаемого идентификатора потока является значением типа, указанного в столбце
THREAD_IDтаблиц Performance Schema.Конфигурация Performance 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()может быть использован как сокращение для вызова функцииsysсхемыps_thread_id()с аргументомNULLилиCONNECTION_ID(). -
Принимая идентификатор соединения, возвращает значение
BIGINT UNSIGNED, представляющее идентификатор потока Performance Schema, назначенный идентификатору соединения, илиNULL, если для идентификатора соединения нет идентификатора потока. Последнее может произойти для потоков, которые не отслеживаются, или еслиconnection_idравноNULL.Аргумент идентификатора соединения является значением типа, указанным в столбце
PROCESSLIST_IDтаблицы Performance Schemathreadsили столбцеIdвыводаSHOW PROCESSLIST.Возвращаемое значение идентификатора потока — это значение типа, указанного в столбце
THREAD_IDтаблиц Performance Schema.Конфигурация Performance Schema влияет на работу
PS_THREAD_ID()следующим образом. (Эти замечания также относятся кPS_CURRENT_THREAD_ID().)Отключение потребителя
thread_instrumentationотключает сбор и агрегацию статистических данных на уровне потоков, но не влияет наPS_THREAD_ID().Если
performance_schema_max_thread_instancesне равно 0, Performance Schema выделяет память для статистики потоков и присваивает внутренний идентификатор каждому потоку, для которого доступна память экземпляра. Если есть потоки, для которых память экземпляра недоступна,PS_THREAD_ID()возвращаетNULL; в этом случаеPerformance_schema_thread_instances_lostотлично от нуля.Если
performance_schema_max_thread_instancesравно 0, Performance Schema не выделяет память для потоков иPS_THREAD_ID()возвращаетNULL.Если сам Performance Schema отключен,
PS_THREAD_ID()генерирует ошибку.
mysql>
SELECT PS_THREAD_ID(6);+-----------------+ | PS_THREAD_ID(6) | +-----------------+ | 45 | +-----------------+PS_THREAD_ID()может использоваться вместо функцииsysсхемыps_thread_id(), имея в виду это различие:С аргументом
NULL,sys.ps_thread_id()возвращает идентификатор потока для текущего соединения, в то время какPS_THREAD_ID()возвращаетNULL. Чтобы получить идентификатор потока текущего соединения, используйтеPS_CURRENT_THREAD_ID()вместо этого.
© 2025 Oracle
Licensed under the GPLv2 License.