14.21 Функции Performance Schema
MySQL включает встроенные SQL-функции, которые форматируют или извлекают данные Performance Schema и могут использоваться как эквиваленты соответствующих sys функций схемы. Встроенные функции могут вызываться в любой схеме и не требуют квалификатора, в отличие от sys функций, которые требуют квалификатора схемы sys. или чтобы sys была текущей схемой.
Таблица 14.31 Функции 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 пикосекунды пс До 106 − 1 наносекунды нс До 109 − 1 микросекунды мкс До 1012 − 1 миллисекунды мс До 60×1012 − 1 секунды с До 3,6×1015 − 1 минуты мин До 8,64×1016 − 1 часы ч 8,64×1016 и выше дни д 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.