Глава 24. MySQL sys Schema

MySQL 8.0 схему sys, ряд объектов, который помогает DBA и разработчикам, интерпретирует данные, собранные Performance Schema. sys объекты схемы могут использоваться для типичной настройки и случаев использования диагноза. Объекты в этой схеме включают:

Для новых установок sys schema установлена по умолчанию во время инициализации каталога данных, если Вы используете mysqld с опцией --initialize или --initialize-insecure. Если это не желаемо, Вы можете удалить sys schema вручную после инициализации.

mysql_upgrade вернет ошибку, если sys schema существует, но не имеет представления version, при условии, что отсутствие этого представления указывает на создаваемую пользователем sys schema. Чтобы обновить в этом случае, удалите или переименуйте существующую sys schema.

Объекты sys schema имеют DEFINER 'mysql.sys'@'localhost'. Использование специализированного пользователя mysql.sys избегает проблем, которые происходят, если DBA переименовывает или удаляет учетную запись root.

24.1. Предпосылки для использования sys Schema

Перед использованием sys schema предпосылки, описанные в этом разделе, должны быть удовлетворены.

sys schema требует MySQL 5.6 или выше.

Поскольку sys schema обеспечивает альтернативное средство доступа к Performance Schema, то Performance Schema должна быть включена для работы sys schema. См. раздел 23.2.2 .

Для полного доступа к sys schema у пользователя должны быть эти привилегии:

Также необходимо иметь привилегии для объектов, лежащих в основе sys schema:

Определенные инструменты и потребители Performance Schema должны быть включены и (для инструментов) рассчитаны, чтобы в полной мере воспользоваться возможностями sys schema:

Вы можете использовать sys schema непосредственно, чтобы включить все дополнительные инструменты и потребители:

CALL sys.ps_setup_enable_instrument('wait');
CALL sys.ps_setup_enable_instrument('stage');
CALL sys.ps_setup_enable_instrument('statement');
CALL sys.ps_setup_enable_consumer('current');
CALL sys.ps_setup_enable_consumer('history_long');

Для использования sys schema Performance Schema по умолчанию достаточна для сбора данных. Включение всех инструментов и потребителец оказывает исполнительное влияние, таким образом, предпочтительно включать только ту дополнительную конфигурацию, в которой Вы нуждаетесь. Кроме того, помните, что, если Вы включаете дополнительную конфигурацию, Вы можете легко восстановить конфигурацию по умолчанию:

CALL sys.ps_setup_reset_to_default(TRUE);

24.2. Применение sys Schema

Вы можете сделать sys schema схемой по умолчанию так, чтобы ссылки на ее объекты не были квалифицированы с именем схемы:

mysql> USE sys;
Database changed
mysql> SELECT * FROM version;
+-------------+---------------------+
| sys_version | mysql_version       |
+-------------+---------------------+
| 1.5.1       | 8.0.1-dmr-debug-log |
+-------------+---------------------+
Обзор version показывает версии sys schema и сервера MySQL.

Для доступа к объектам sys schema в то время как по умолчанию принята иная схема, надо квалифицировать объектные ссылки с именем схемы:

mysql> SELECT * FROM sys.version;
+-------------+---------------------+
| sys_version | mysql_version       |
+-------------+---------------------+
| 1.5.1       | 8.0.1-dmr-debug-log |
+-------------+---------------------+
Примеры в этой главе обычно принимают sys как схему по умолчанию.

sys содержит много представлений, которые суммируют таблицы Performance Schema различными способами. Большинство этих представлений прибывает в пары, где у одного члена пары есть то же самое имя, как у другого участника, плюс приставка x$. Например, обхор host_summary_by_file_io суммирует ввод/вывод файла, сгруппированный по хостам, и выводит на экран времена ожидания, преобразованные от пикосекунд в более читаемые значения (с модулями):

mysql> SELECT * FROM host_summary_by_file_io;
+------------+-------+------------+
| host       | ios   | io_latency |
+------------+-------+------------+
| localhost  | 67570 | 5.38 s     |
| background |  3468 | 4.18 s     |
+------------+-------+------------+
Представление x$host_summary_by_file_io суммирует те же самые данные, но выводит на экран неотформатированные времена ожидания в пикосекундах:
mysql> SELECT * FROM x$host_summary_by_file_io;
+------------+-------+---------------+
| host       | ios   | io_latency    |
+------------+-------+---------------+
| localhost  | 67574 | 5380678125144 |
| background |  3474 | 4758696829416 |
+------------+-------+---------------+
Представление без x$ предназначен, чтобы обеспечить вывод, который более удобен для пользователя. Представление с x$ выводит на экран те же самые значения в сырой форме и предназначено больше для использования с другими инструментами, которые выполняют их собственную обработку данных. Для дополнительной информации о различиях между не-x$ и x$ представлениях см. раздел 24.4.3.

Чтобы исследовать определение объекта в sys schema, используйте соответствующий запрос SHOW или INFORMATION_SCHEMA. Например, чтобы исследовать определения представления session и функции format_bytes(), используйте эти запросы:

mysql> SHOW CREATE VIEW session;
mysql> SHOW CREATE FUNCTION format_bytes;
Однако, те запросы выводят на экран определения в относительно неотформатированной форме. Чтобы рассмотреть определения объекта с большим количеством читаемого форматирования, получите доступ к индивидуальным файлам .sql, доступным на web-сайте для разработчиков sys schema https://github.com/mysql/mysql-sys.

mysqldump и mysqlpump не выводят sys schema по умолчанию. Чтобы произвести файл дампа, назовите sys schema явно на командной строке, используя любую из этих команд:

mysqldump --databases --routines sys > sys_dump.sql
mysqlpump sys > sys_dump.sql
Чтобы повторно установить схему из файла дампа, используйте эту команду:
mysql < sys_dump.sql

24.3. Сообщение продвижения sys Schema

Следующие представления sys schema обеспечивают продвижение, сообщающее для продолжительных транзакций:

processlist
session
x$processlist
x$session
Предполагая, что необходимые инструменты и потребители включены, столбец progress этих представлений показывает процент работы, завершенной для этапов по сообщениям поддержки продвижения.

Сообщение продвижения этапа требует, чтобы events_stages_current был включен, так же как инструменты, для которых желаема информация о продвижении. Инструменты для этих этапов в настоящее время поддерживают сообщение продвижения:

stage/sql/Copying to tmp table
stage/innodb/alter table (end)
stage/innodb/alter table (flush)
stage/innodb/alter table (insert)
stage/innodb/alter table (log apply index)
stage/innodb/alter table (log apply table)
stage/innodb/alter table (merge sort)
stage/innodb/alter table (read PK and internal sort)
stage/innodb/buffer pool load
Для этапов, которые не поддерживают оцененное и завершенное сообщение работы, или если необходимые инструменты или потребители не включены, столбец progress всегда NULL.

24.4. Объектная ссылка sys Schema

sys schema включает таблицы, триггеры, представления, хранимые процедуры и функции. Следующие разделы обеспечивают детали для каждого из этих объектов.

24.4.1. Индекс объектов sys Schema

Следующяя таблица дает список объектов sys schema и обеспечивает краткое описание каждого.

Таблица 24.1. Таблицы и триггеры sys Schema

Имя таблицы или триггера Описание
sys_config Параметры конфигурации sys schema
sys_config_insert_set_user Триггер insert sys_config
sys_config_update_set_user Триггер update sys_config

Таблица 24.2. Представления sys Schema

Имя представления Описание
host_summary, x$host_summary Деятельность запроса, файловый ввод/вывод и соединения, сгруппированные по хосту.
host_summary_by_file_io, x$host_summary_by_file_io Файловый ввод/вывод, сгруппированный по хосту.
host_summary_by_file_io_type, x$host_summary_by_file_io_type Файловый ввод/вывод, сгруппированный по хосту и типам событий.
host_summary_by_stages, x$host_summary_by_stages Этапы запроса, сгруппированные по хосту.
host_summary_by_statement_latency, x$host_summary_by_statement_latency Статистика запроса, сгруппированная по хосту.
host_summary_by_statement_type, x$host_summary_by_statement_type Выполненные запросы, сгруппированные по хосту и запросу.
innodb_buffer_stats_by_schema, x$innodb_buffer_stats_by_schema Буферная информация InnoDB , сгруппированная схемой.
innodb_buffer_stats_by_table, x$innodb_buffer_stats_by_table Буферная информация InnoDB, сгруппированная схемой и таблицей.
innodb_lock_waits, x$innodb_lock_waits Информация о блокировке InnoDB.
io_by_thread_by_latency, x$io_by_thread_by_latency Потребители ввода/вывода, сгруппированные потоком.
io_global_by_file_by_bytes, x$io_global_by_file_by_bytes Глобальные потребители ввода/вывода, сгруппированные файлом и байтами.
io_global_by_file_by_latency, x$io_global_by_file_by_latency Глобальные потребители ввода/вывода, сгруппированные файлом и временем ожидания.
io_global_by_wait_by_bytes, x$io_global_by_wait_by_bytes Глобальные потребители ввода/вывода, сгруппированные байтами.
io_global_by_wait_by_latency, x$io_global_by_wait_by_latency Глобальные потребители ввода/вывода, сгруппированные временем ожидания.
latest_file_io, x$latest_file_io Новый ввод/вывод, сгруппированный файлом и потоком.
memory_by_host_by_current_bytes, x$memory_by_host_by_current_bytes Использование памяти, сгруппированное хостом.
memory_by_thread_by_current_bytes, x$memory_by_thread_by_current_bytes Использование памяти, сгруппированное потоком.
memory_by_user_by_current_bytes, x$memory_by_user_by_current_bytes Использование памяти, сгруппированное пользователем.
memory_global_by_current_bytes, x$memory_global_by_current_bytes Использование памяти, сгруппированное типом распределения.
memory_global_total, x$memory_global_total Полное использование памяти.
metrics Метрики сервера.
processlist , x$processlist Информация о Processlist.
ps_check_lost_instrumentation Переменные, которые потеряли инструменты.
schema_auto_increment_columns Информация о столбце AUTO_INCREMENT.
schema_index_statistics, x$schema_index_statistics Статистика индекса.
schema_object_overview Типы объектов в пределах каждой схемы.
schema_redundant_indexes Индексы Duplicate или redundant.
schema_table_lock_waits, x$schema_table_lock_waits Сеансы, ждущие блокировок метаданных.
schema_table_statistics, x$schema_table_statistics Табличная статистика.
schema_table_statistics_with_buffer, x$schema_table_statistics_with_buffer Табличная статистика, включая буферную статистику бассейна InnoDB.
schema_tables_with_full_table_scans, x$schema_tables_with_full_table_scans Таблицы, получаемые доступом с полными просмотрами.
schema_unused_indexes Индексы не в активном использовании.
session, x$session Информация о Processlist для пользовательских сеансов.
session_ssl_status Информация о соединении SSL.
statement_analysis, x$statement_analysis Статистика совокупности запроса.
statements_with_errors_or_warnings, x$statements_with_errors_or_warnings Запросы, которые произвели ошибки или предупреждения.
statements_with_full_table_scans, x$statements_with_full_table_scans Запросы, которые сделали полное сканирование таблицы.
statements_with_runtimes_in_95th_percentile, x$statements_with_runtimes_in_95th_percentile Запросы с самым высоким средним временем выполнения.
statements_with_sorting, x$statements_with_sorting Запросы, которые выполнили сортировки.
statements_with_temp_tables, x$statements_with_temp_tables Запросы, которые использовали временные таблицы.
user_summary , x$user_summary Пользовательский запрос и деятельность соединения.
user_summary_by_file_io, x$user_summary_by_file_io Файловый ввод/вывод, сгруппированный пользователем.
user_summary_by_file_io_type, x$user_summary_by_file_io_type Файловый ввод/вывод, сгруппированный пользователем и событием.
user_summary_by_stages, x$user_summary_by_stages События этапа, сгруппированные пользователем.
user_summary_by_statement_latency, x$user_summary_by_statement_latency Статистика запросов, сгруппированная пользователем.
user_summary_by_statement_type, x$user_summary_by_statement_type Выполненные запросы, сгруппированные пользователем и запросом.
version Текущие версии sys schema и сервера MySQL.
wait_classes_global_by_avg_latency, x$wait_classes_global_by_avg_latency Среднее время ожидания класса, сгруппированное классом событий.
wait_classes_global_by_latency, x$wait_classes_global_by_latency Общее время ожидания класса, сгруппированное классом событий.
waits_by_host_by_latency, x$waits_by_host_by_latency Ждущие события, сгруппированные узлом и событием.
waits_by_user_by_latency, x$waits_by_user_by_latency Ждущие события, сгруппированные пользователем и событием.
waits_global_by_latency, x$waits_global_by_latency Ждущие события, сгруппированные и событием.
x$ps_digest_95th_percentile_by_avg_us Вспомогательное представление для 95%-ных представлений.
x$ps_digest_avg_latency_distribution Вспомогательное представление для 95%-ных представлений.
x$ps_schema_table_statistics_io Вспомогательное представление для представлений табличной статистики.
x$schema_flattened_keys Вспомогательное представление для schema_redundant_indexes.

Таблица 24.3. Хранимые процедуры sys Schema

Имя процедуры Описание
create_synonym_db() Создает синоним для схемы
diagnostics() Собирает системную диагностическую информацию
execute_prepared_stmt() Выполнит подготовленный запрос
ps_setup_disable_background_threads() Отключит фоновую инструментовку потока
ps_setup_disable_consumer() Отключит потребителей
ps_setup_disable_instrument() Отключит инструменты
ps_setup_disable_thread() Отключит инструментовку для потока
ps_setup_enable_background_threads() Включит фоновую инструментовку потока
ps_setup_enable_consumer() Включит потребителей
ps_setup_enable_instrument() Включит инструменты
ps_setup_enable_thread() Включит инструментовку для потока
ps_setup_reload_saved() Перезагрузит сохраненную конфигурацию Performance Schema
ps_setup_reset_to_default() Сбросит сохраненную конфигурацию Performance Schema
ps_setup_save() Сохранит конфигурацию Performance Schema
ps_setup_show_disabled() Выведет на экран отключенную конфигурацию Performance Schema
ps_setup_show_disabled_consumers() Выведет на экран отключенных потребителей Performance Schema
ps_setup_show_disabled_instruments() Выведет на экран отключенные инструменты Performance Schema
ps_setup_show_enabled() Выведет на экран включенную конфигурацию Performance Schema
ps_setup_show_enabled_consumers() Выведет на экран включенных потребителей Performance Schema
ps_setup_show_enabled_instruments() Выведет на экран включенные инструменты Performance Schema
ps_statement_avg_latency_histogram() Выведет на экран гистограмму времени ожидания запросов
ps_trace_statement_digest() Трассировка инструментов Performance Schema для обзора
ps_trace_thread() Дамп данных потоков Performance Schema
ps_truncate_all_tables() Усеченные сводные таблицы Performance Schema
statement_performance_analyzer() Сообщение о запросах, работающих на сервере
table_exists() Существует ли таблица

Таблица 24.4. Сохраненные функции sys Schema

Имя функции Описание
extract_schema_from_file_name() Извлекает имя схемы из имени пути к файлу
extract_table_from_file_name() Извлекает имя таблицы из имени пути к файлу
format_bytes() Конвертирует байтовое значение, чтобы оценить с модулями
format_path() Заменяет каталоги данных и временных файлов в пути с символическими значениями
format_statement() Усекает длинный запрос к фиксированной длине
format_time() Значение пикосекунд конвертируется, чтобы оценить с модулями
list_add() Добавляет элемент в список
list_drop() Удалить элемент из списка
ps_is_account_enabled() Проверить, включена ли инструментовка учетной записи
ps_is_consumer_enabled() Проверить, включен ли потребитель
ps_is_instrument_default_enabled() Проверить, включен ли инструмент
ps_is_instrument_default_timed() Проверить, рассчитан ли инструмент
ps_is_thread_instrumented() Проверить, инструментован ли поток
ps_thread_account() Возвратит учетную запись для ID потока
ps_thread_id() Возвратит ID потока для ID соединения
ps_thread_stack() Возвратит информацию о событии для ID потока
ps_thread_trx_info() Возвратит информацию о транзакции для ID потока
quote_identifier() Возвратит строку как заключенный в кавычки идентификатор
sys_get_config() Возвратит параметр конфигурации sys schema
version_major() Главный номер версии MySQL
version_minor() Младший номер версии MySQL
version_patch() Номер версии выпуска MySQL

24.4.2. Таблицы и триггеры sys Schema

Следующие разделы описывают таблицы и триггеры sys schema.

24.4.2.1. Таблица sys_config

Эта таблица содержит параметры конфигурации sys schema, одна строка на опцию. Изменения конфигурации, произведенные, обновляя эту таблицу, сохраняются через сеансы клиента и перезапуски сервера.

У таблицы sys_config есть эти столбцы:

Чтобы минимизировать число прямых чтений таблицы sys_config, функции sys schema, которые используют значение этой табличной проверки на определяемую пользователем переменную с соответствующим именем, которое является определяемой пользователем переменной, имеющей то же самое имя плюс @sys.. Например, переменная, соответствующая опции diagnostics.include_raw, @sys.diagnostics.include_raw . Если определяемая пользователем переменная существует в текущем сеансе и не-NULL, функция использует свое значение в предпочтении к значению в таблице sys_config. Иначе функция читает и использует значение из таблицы. В последнем случае функция также устанавливает соответствующую определяемую пользователем переменную в табличное значение так, чтобы дальнейшие ссылки на параметр конфигурации в пределах того же самого сеанса использовали переменную и не должны были считать таблицу снова.

Например, опция statement_truncate_len управляет максимальной длиной запросов, возвращенных функциец format_statement(). Значение по умолчанию 64. Чтобы временно изменить значение на 32 для Вашего текущего сеанса, установите переменную @sys.statement_truncate_len:

mysql> SET @stmt = 'SELECT variable, value, set_time, set_by FROM
                       sys_config';
mysql> SELECT format_statement(@stmt);
+----------------------------------------------------------+
| format_statement(@stmt)                                  |
+----------------------------------------------------------+
| SELECT variable, value, set_time, set_by FROM sys_config |
+----------------------------------------------------------+

mysql> SET @sys.statement_truncate_len = 32;
mysql> SELECT format_statement(@stmt);
+-----------------------------------+
| format_statement(@stmt)           |
+-----------------------------------+
| SELECT variabl ... ROM sys_config |
+-----------------------------------+
Последующие запросы format_statement() в пределах сеанса продолжают использовать определяемое пользователем значение переменной (32), а не значение, сохраненное в таблице (64).

Чтобы прекратить использовать определяемую пользователем переменную и вернуться к использованию значения в таблице, установите переменную в NULL в пределах Вашего сеанса:

mysql> SET @sys.statement_truncate_len = NULL;
mysql> SELECT format_statement(@stmt);
+----------------------------------------------------------+
| format_statement(@stmt)                                  |
+----------------------------------------------------------+
| SELECT variable, value, set_time, set_by FROM sys_config |
+----------------------------------------------------------+
Альтернативно, закончите свой текущий сеанс (чтобы заставить определяемую пользователем переменную больше не существовать) и начните новый сеанс.

Обычные отношения, описанные между опциями в таблице in the sys_config и определяемые пользователем переменные могут эксплуатироваться, чтобы произвести временные изменения конфигурации, которые заканчиваются, когда Ваш сеанс заканчивается. Однако, если Вы установите определяемую пользователем переменную и затем впоследствии измените соответствующее табличное значение в пределах того же самого сеанса, то измененное табличное значение не будет использоваться в том сеансе, пока определяемая пользователем переменная существует со значением не NULL. Измененное табличное значение будет использоваться в других сеансах, которым не назначали определяемую пользователем переменную.

Следующий список описывает опции в таблице sys_config и соответствующие определяемые пользователем переменные:

Другие опции могут быть добавлены к таблице sys_config. Например, процедуры diagnostics() и execute_prepared_stmt() используют опцию debug, если она существует, но эта опция, не является частью таблицы sys_config по умолчанию, потому что вывод отладки обычно включается только временно, устанавливая соответствующую опцию @sys.debug. Чтобы включить вывод отладки, не имея необходимости устанавливать ту переменную в отдельных сеансах, добавьте опцию к таблице:

mysql> INSERT INTO sys_config (variable, value) VALUES('debug', 'ON');
Чтобы изменить настройки отладки в таблице, сделайте две вещи. Во-первых, измените значение в таблице непосредственно:
mysql> UPDATE sys_config SET value = 'OFF' WHERE variable = 'debug';
Во-вторых, чтобы также гарантировать, что вызовы процедуры в пределах текущего сеанса используют измененное значение из таблицы, установите соответствующую определяемую пользователем переменную в NULL:
mysql> SET @sys.debug = NULL;

24.4.2.2. Триггер sys_config_insert_set_user

Для строк, добавленных к таблице sys_config запросом INSERT триггер sys_config_insert_set_user устанавливает столбец set_by к текущему пользователю.

24.4.2.3. Триггер sys_config_update_set_user

Триггер sys_config_update_set_user для таблицы sys_config подобен триггеру sys_config_insert_set_user, но для запросов UPDATE.

24.4.3. Представления sys Schema

Следующие разделы описывают представления sys schema.

sys schema содержит много представлений, которые суммируют таблицы Performance Schema различными способами. Большинство этих представлений прибывает в пары, такие, что у одного члена пары есть то же самое имя, как у другого участника плюс x$. Например, host_summary_by_file_io суммирует ввод/вывод файла, сгруппированный хостом, и выводит на экран времена ожидания, преобразованные из пикосекунд в более читаемые значения (с модулями):

mysql> SELECT * FROM host_summary_by_file_io;
+------------+-------+------------+
| host       | ios   | io_latency |
+------------+-------+------------+
| localhost  | 67570 | 5.38 s     |
| background |  3468 | 4.18 s     |
+------------+-------+------------+
x$host_summary_by_file_io суммирует те же самые данные, но выводит на экран неотформатированные времена ожидания в пикосекундах:
mysql> SELECT * FROM x$host_summary_by_file_io;
+------------+-------+---------------+
| host       | ios   | io_latency    |
+------------+-------+---------------+
| localhost  | 67574 | 5380678125144 |
| background |  3474 | 4758696829416 |
+------------+-------+---------------+
Представление без x$ предназначено, чтобы обеспечить вывод, который более удобен для пользователя и легче читать. Представление с x$ выводит на экран те же самые значения в сырой форме и предназначено больше для использования с другими инструментами, которые выполняют их собственную обработку данных.

Представления без x$ отличается от x$ этим:

24.4.3.1. Представления host_summary и x$host_summary

Эти представления суммируют деятельность запросов, ввод/вывод файла и соединения, сгруппированные хостом.

У представлений host_summary и x$host_summary есть эти столбцы:

24.4.3.2. Представления host_summary_by_file_io и x$host_summary_by_file_io

Эти представления суммируют ввод/вывод файла, сгруппированный хостом. По умолчанию, строки сортированы по убыванию полного времени ожидания ввода/вывода файла.

У представлений host_summary_by_file_io и x$host_summary_by_file_io есть эти столбцы:

24.4.3.3. Представления host_summary_by_file_io_type and x$host_summary_by_file_io_type

Эти представления суммируют ввод/вывод файла, сгруппированный типом событий и узлом. По умолчанию строки сортированы узлом и по убыванию полного времени ожидания ввода/вывода.

У представлений host_summary_by_file_io_type и x$host_summary_by_file_io_type есть эти столбцы:

24.4.3.4. Представления host_summary_by_stages и x$host_summary_by_stages

Эти представления суммируют этапы запроса, сгруппированные хостом. По умолчанию строки сортированы узлом и по убыванию полного времени ожидания.

У представлений host_summary_by_stages и x$host_summary_by_stages есть эти столбцы:

24.4.3.5. Представления host_summary_by_statement_latency и x$host_summary_by_statement_latency

Эти представления суммируют полную статистику запросов, сгруппированную узлом. По умолчанию строки сортированы по убыванию полного времени ожидания.

У представлений host_summary_by_statement_latency и x$host_summary_by_statement_latency есть эти столбцы:

24.4.3.6. Представления host_summary_by_statement_type и x$host_summary_by_statement_type

Эти представления суммируют сведения о выполненных запросах, сгруппированных типом запроса и узлом. По умолчанию строки сортированы узлом и по убыванию полного времени ожидания.

У представлений host_summary_by_statement_type и x$host_summary_by_statement_type есть эти столбцы:

24.4.3.7. Представления innodb_buffer_stats_by_schema и x$innodb_buffer_stats_by_schema

Эти представления суммируют информацию в таблице INFORMATION_SCHEMA INNODB_BUFFER_PAGE, группируя схемой. По умолчанию строки сортированы по убыванию размера буфера.

У представлений innodb_buffer_stats_by_schema и x$innodb_buffer_stats_by_schema есть эти столбцы:

24.4.3.8. Представления innodb_buffer_stats_by_table и x$innodb_buffer_stats_by_table

Эти представления суммируют информацию в таблице INFORMATION_SCHEMA INNODB_BUFFER_PAGE , группируя схемой и таблицей. По умолчанию строки отсортированы по убыванию размера буфера.

У представлений innodb_buffer_stats_by_table и x$innodb_buffer_stats_by_table есть эти столбцы:

24.4.3.9. Представления innodb_lock_waits и x$innodb_lock_waits

Эти представления суммируют блокировки InnoDB, которых ждут транзакции. По умолчанию строки сортированы по убыванию возраста блокировки.

У представлений innodb_lock_waits и x$innodb_lock_waits есть эти столбцы:

24.4.3.10. Представления io_by_thread_by_latency и x$io_by_thread_by_latency Views

Эти представления суммируют потребителей ввода/вывода, чтобы вывести на экран время ожидания ввода/вывода, сгруппированное потоком. По умолчанию строки отсортированы по убыванию полного времени ожидания ввода/вывода.

У представлений io_by_thread_by_latency и x$io_by_thread_by_latency есть эти столбцы:

24.4.3.11. Представления io_global_by_file_by_bytes и x$io_global_by_file_by_bytes

Эти представления суммируют глобальных потребителей ввода/вывода, чтобы вывести на экран количество ввода/вывода, сгруппированного файлом. По умолчанию строки отсортированы по убыванию полного ввода/вывода (байтов прочитано и записано).

У представлений io_global_by_file_by_bytes и x$io_global_by_file_by_bytes есть эти столбцы:

24.4.3.12. Представления io_global_by_file_by_latency и x$io_global_by_file_by_latency

Эти представления суммируют глобальных потребителей ввода/вывода, чтобы вывести на экран время ожидания ввода/вывода, сгруппированное файлом. По умолчанию строки отсортированы по убыванию полного времени ожидания.

У представлений io_global_by_file_by_latency и x$io_global_by_file_by_latency есть эти столбцы:

24.4.3.13. Представления io_global_by_wait_by_bytes и x$io_global_by_wait_by_bytes

Эти представления суммируют глобальных потребителей ввода/вывода, чтобы вывести на экран количество ввода/вывода и время ожидания ввода/вывода, сгруппированные случаем. По умолчанию строки сортированы по убыванию полного ввода/вывода (прочитано и записано байтов).

У представлений io_global_by_wait_by_bytes и x$io_global_by_wait_by_bytes есть эти столбцы:

24.4.3.14. Представления io_global_by_wait_by_latency и x$io_global_by_wait_by_latency

Эти представления суммируют глобальных потребителей ввода/вывода, чтобы вывести на экран количество ввода/вывода и время ожидания ввода/вывода, сгруппированное случаем. По умолчанию строки сортированы по убыванию полного времени ожидания.

У представлений io_global_by_wait_by_latency и x$io_global_by_wait_by_latency есть эти столбцы:

24.4.3.15. Представления latest_file_io и x$latest_file_io

Эти представления суммируют деятельность ввода/вывода файла, сгруппированную файлом и потоком. По умолчанию строки сортированы с новым вводом/выводом в начале.

У представлений latest_file_io и x$latest_file_io есть эти столбцы:

24.4.3.16. Представления memory_by_host_by_current_bytes и x$memory_by_host_by_current_bytes

Эти представления суммируют использование памяти, сгруппированное узлом. По умолчанию строки сортированы по убыванию использования объема памяти.

У представлений memory_by_host_by_current_bytes и x$memory_by_host_by_current_bytes есть эти столбцы:

24.4.3.17. Представления memory_by_thread_by_current_bytes и x$memory_by_thread_by_current_bytes

Эти представления суммируют использование памяти, сгруппированное потоком. По умолчанию строки сортированы по убыванию использования объема памяти.

У представлений memory_by_thread_by_current_bytes и x$memory_by_thread_by_current_bytes есть эти столбцы:

24.4.3.18. Представления memory_by_user_by_current_bytes и x$memory_by_user_by_current_bytes

Эти представления суммируют использование памяти, сгруппированное пользователем. По умолчанию строки сортированы по убыванию использования объема памяти.

У представлений memory_by_user_by_current_bytes и x$memory_by_user_by_current_bytes есть эти столбцы:

24.4.3.19. Представления memory_global_by_current_bytes и x$memory_global_by_current_bytes

Эти представления суммируют использование памяти, сгруппированное типом распределения (то есть событием). По умолчанию строки сортированы по убыванию используемого объема памяти.

У представлений memory_global_by_current_bytes и x$memory_global_by_current_bytes есть эти столбцы:

24.4.3.20. Представления memory_global_total и x$memory_global_total

Эти представления суммируют полное использование памяти в пределах сервера.

У представлений memory_global_total и x$memory_global_total есть эти столбцы:

24.4.3.21. Представление metrics

Это представление суммирует метрики сервера MySQL, чтобы показать имена переменной, значения и типы. По умолчанию строки сортированы типом и именем переменной.

Представление metrics включает эту информацию:

Есть некоторое дублирование информации между таблицами global_status и INNODB_METRICS, которое устраняет представление metrics.

Представление metrics имеет эти столбцы:

24.4.3.22. Представления processlist и x$processlist

Эти представления суммируют processlist информацию. Они предоставляют более полную информацию, чем запрос SHOW PROCESSLIST и таблица INFORMATION_SCHEMA PROCESSLIST, а также не блокируют ничего. По умолчанию строки сортированы по убыванию времени процесса и убыванию времени ожидания.

Описания столбца здесь кратки. Для дополнительной информации см. описание таблицы Performance Schema threads в раздел 23.9.16.3.

У представлений processlist и x$processlist есть эти столбцы:

24.4.3.23. Представление ps_check_lost_instrumentation

Это представление возвращает информацию о потерянных инструментах Performance Schema, чтобы указать, способна ли Performance Schema контролировать все данные во время выполнения.

У представления ps_check_lost_instrumentation есть эти столбцы:

24.4.3.24. Представление schema_auto_increment_columns

Это представление указывает, которые таблицы имеют столбцы AUTO_INCREMENT и предоставляют информацию о тех столбцах такую, как текущие и максимальные значения столбцов и отношение использования (отношение использованных к возможным значениям). По умолчанию строки отсортированы по убыванию отношения использования и максимальному значению столбца.

Таблицы в этих схемах исключены из вывода представления: mysql, sys, INFORMATION_SCHEMA, performance_schema.

У представления schema_auto_increment_columns есть эти столбцы:

24.4.3.25. Представления schema_index_statistics и x$schema_index_statistics

Эти представления обеспечивают индексную статистику. По умолчанию строки сортированы по убыванию и общему количеству времени ожидания индекса.

У представлений schema_index_statistics и x$schema_index_statistics есть эти столбцы:

24.4.3.26. Представление schema_object_overview

Это представление суммирует типы объектов в пределах каждой схемы. По умолчанию строки отсортированы типом объекта и схемой.

Для случаев MySQL с большим количеством объектов это представление может занять много времени для выполнения.

У представления schema_object_overview есть эти столбцы:

24.4.3.27. Представления schema_redundant_indexes и x$schema_flattened_keys

Представление schema_redundant_indexes отображает индексы, которые дублируют другие индексы или сокращены ими. Это вспомогательное представление для schema_redundant_indexes .

В следующих описаниях столбца доминантный индекс тот, который делает избыточное индексирование избыточным.

У представления schema_redundant_indexes есть эти столбцы:

У представления x$schema_flattened_keys есть эти столбцы:

24.4.3.28. Представления schema_table_lock_waits и x$schema_table_lock_waits

Это представление показывает, какие сеансы заблокированы, ожидая на блокировках метаданных, и что блокирует их.

Описания столбца здесь кратки. Для дополнительной информации см. описание таблицы Performance Schema metadata_locks в разделе 23.9.12.3.

У представлений schema_table_lock_waits и x$schema_table_lock_waits есть эти столбцы:

24.4.3.29. Представления schema_table_statistics и x$schema_table_statistics

Эти представления суммируют табличную статистику. По умолчанию строки сортированы по убыванию общего времени ожидания.

Это вспомогательные представления для x$ps_schema_table_statistics_io.

У представлений schema_table_statistics и x$schema_table_statistics есть эти столбцы:

24.4.3.30. Представления schema_table_statistics_with_buffer и x$schema_table_statistics_with_buffer

Эти представления суммируют табличную статистику, включая статистику буферного бассейна InnoDB. По умолчанию строки отсортированы по убыванию общего времени ожидания. Применяется вспомогательное представление x$ps_schema_table_statistics_io.

У представлений schema_table_statistics_with_buffer и x$schema_table_statistics_with_buffer есть эти столбцы:

24.4.3.31. Представления schema_tables_with_full_table_scans и x$schema_tables_with_full_table_scans

Они показывают, к каким таблицам получают доступ с полным сканированием таблицы. По умолчанию строки сортированы по убыванию просмотренных строк.

У представлений schema_tables_with_full_table_scans и x$schema_tables_with_full_table_scans есть эти столбцы:

24.4.3.32. Представление schema_unused_indexes

Это представлени показывает индексы, для которых нет никаких событий, которые указывают, что они не используются. По умолчанию строки сортированы схемой и таблицей.

Это представление является самым полезным, когда обработка идет столь достаточно долго, что ее рабочая нагрузка является важной. Иначе присутствие индекса в этом представлении, возможно, не является значащим.

У представления schema_unused_indexes есть эти столбцы:

24.4.3.33. Представления session и x$session

Эти представления подобны processlist и x$processlist, но они отфильтровывают фоновые процессы, чтобы вывести на экран только пользовательские сеансы. Для описаний столбцов см. раздел 24.4.3.22.

24.4.3.34. Представление session_ssl_status

Для каждого соединения это представление выводит на экран версию SSL, шифр и количество повторно использованных сеансов SSL.

У представления session_ssl_status есть эти столбцы:

24.4.3.35. Представления statement_analysis и x$statement_analysis

Эти представления перечисляют нормализованные запросы с соединенной статистикой. Контент подражает представлению MySQL Enterprise Monitor Query Analysis. По умолчанию строки сортированы по убыванию полного времени ожидания.

У представлений statement_analysis и x$statement_analysis есть эти столбцы:

24.4.3.36. Представления statements_with_errors_or_warnings и x$statements_with_errors_or_warnings

Эти представления выводят на экран нормализованные запросы, которые произвели ошибки или предупреждения. По умолчанию строки сортированы по убыванию количества ошибок и предупреждений.

У представлений statements_with_errors_or_warnings и x$statements_with_errors_or_warnings есть эти столбцы:

24.4.3.37. Представления statements_with_full_table_scans и x$statements_with_full_table_scans

Эти представления выводят на экран нормализованные запросы, которые сделали полное сканирование таблицы. По умолчанию строки сортированы по убыванию процента времени, за которое полный просмотр был сделан и убыванию полного времени ожидания.

У представлений statements_with_full_table_scans и x$statements_with_full_table_scans есть эти столбцы:

24.4.3.38. Представления statements_with_runtimes_in_95th_percentile и x$statements_with_runtimes_in_95th_percentile

Эти представления перечисляют запросы со временем выполнения в 95%. По умолчанию строки сортированы по убыванию среднего времени ожидания.

Оба представления используют два вспомогательных представления x$ps_digest_avg_latency_distribution и x$ps_digest_95th_percentile_by_avg_us.

У представлений statements_with_runtimes_in_95th_percentile и x$statements_with_runtimes_in_95th_percentile есть эти столбцы:

24.4.3.39. Представления statements_with_sorting и x$statements_with_sorting

Эти представления перечисляют нормализованные запросы, которые выполнили сортировки. По умолчанию строки сортированы по убыванию полного времени ожидания.

У представлений statements_with_sorting и x$statements_with_sorting есть эти столбцы:

24.4.3.40. Представления statements_with_temp_tables и x$statements_with_temp_tables

Эти представления перечисляют нормализованные запросы, которые использовали временные таблицы. По умолчанию строки сортированы по убыванию числа временных таблиц на диске и убыванию числа временных используемых таблиц в памяти.

У представлений statements_with_temp_tables и x$statements_with_temp_tables есть эти столбцы:

24.4.3.41. Представления user_summary и x$user_summary

Эти представления суммируют деятельность запросов, ввод/вывод файла и соединения, сгруппированные пользователем. По умолчанию строки сортированы по убыванию полного времени ожидания.

У представлений user_summary и x$user_summary есть эти столбцы:

24.4.3.42. Представления user_summary_by_file_io и x$user_summary_by_file_io

Эти представления суммируют ввод/вывод файла, сгруппированный пользователем. По умолчанию строки сортированы по убыванию полного времени ожидания ввода/вывода файла.

У представлений user_summary_by_file_io и x$user_summary_by_file_io есть эти столбцы:

24.4.3.43. Представления user_summary_by_file_io_type и x$user_summary_by_file_io_type

Эти представления суммируют ввод/вывод файла, сгруппированный типом событий и пользователем. По умолчанию строки сортированы по пользователю и убыванию полного времени ожидания.

У представлений user_summary_by_file_io_type и x$user_summary_by_file_io_type есть эти столбцы:

24.4.3.44. Представления user_summary_by_stages и x$user_summary_by_stages

Эти представления суммируют этапы, сгруппированные пользователем. По умолчанию строки сортированы по пользователю и убыванию полного времени ожидания этапа.

У представлений user_summary_by_stages и x$user_summary_by_stages есть эти столбцы:

24.4.3.45. Представления user_summary_by_statement_latency и x$user_summary_by_statement_latency

Эти представления суммируют полную статистику запросов, сгруппированную пользователем. По умолчанию строки сортированы по убыванию полного времени ожидания.

У представлений user_summary_by_statement_latency и x$user_summary_by_statement_latency есть эти столбцы:

24.4.3.46. Представления user_summary_by_statement_type и x$user_summary_by_statement_type

Эти представления суммируют информацию о выполненных запросах, сгруппированных по типу запроса и пользователю. По умолчанию строки сортированы по пользователю и убыванию полного времени ожидания.

У представлений user_summary_by_statement_type и x$user_summary_by_statement_type есть эти столбцы:

24.4.3.47. Представление version

Это представление обеспечивает текущие версии sys schema и MySQL server.

У представления version есть эти столбцы:

24.4.3.48. Представления wait_classes_global_by_avg_latency и x$wait_classes_global_by_avg_latency

Эти представления суммируют средние времена ожидания класса, сгруппированные классом событий. По умолчанию строки сортированы по убыванию среднего времени ожидания. Проигнорированы неактивные события.

Класс событий определен, отрезая от имени событий все после первых трех компонентов. Например, класс для wait/io/file/sql/slow_log wait/io/file.

У представлений wait_classes_global_by_avg_latency и x$wait_classes_global_by_avg_latency есть эти столбцы:

24.4.3.49. Представления wait_classes_global_by_latency и x$wait_classes_global_by_latency

Эти представления суммируют общие времена ожидания класса, сгруппированные классом событий. По умолчанию строки сортированы по убыванию полного времени ожидания. Проигнорированы неактивные события.

Класс событий определен, отрезая от имени событий все после первых трех компонентов. Например, класс для wait/io/file/sql/slow_log wait/io/file.

У представлений wait_classes_global_by_latency и x$wait_classes_global_by_latency есть эти столбцы:

24.4.3.50. Представления waits_by_host_by_latency и x$waits_by_host_by_latency

Эти представления суммируют ожидания событий, сгруппированные хостом и случаем. По умолчанию строки сортированы по хосту и убыванию полного времени ожидания. Проигнорированы неактивные события.

У представлений waits_by_host_by_latency и x$waits_by_host_by_latency есть эти столбцы:

24.4.3.51. Представления waits_by_user_by_latency и x$waits_by_user_by_latency

Эти представления суммируют ожидающие события, сгруппированные по пользователю и случаю. По умолчанию строки сортированы по пользователю и убыванию полного времени ожидания. Проигнорированы неактивные события.

У представлений waits_by_user_by_latency и x$waits_by_user_by_latency есть эти столбцы:

24.4.3.52. Представления waits_global_by_latency и x$waits_global_by_latency

Эти представления суммируют ожидающие события, сгруппированные случаем. По умолчанию строки сортированы по убыванию полного времени ожидания. Проигнорированы неактивные события.

У представлений waits_global_by_latency и x$waits_global_by_latency есть эти столбцы:

24.4.4. Хранимые процедуры sys Schema

Следующие разделы описывают хранимые процедуры sys schema.

24.4.4.1. Процедура create_synonym_db()

Учитывая имя схемы, эта процедура создает схему синонима, содержащую представления, которые обращаются ко всем таблицам и представлениям в оригинальной схеме. Это может использоваться, например, чтобы создать более короткое имя, которым можно сослаться на схему с длинным именем (такое, как info вместо INFORMATION_SCHEMA).

Параметры
Пример
mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| world              |
+--------------------+
mysql> CALL create_synonym_db('INFORMATION_SCHEMA', 'info');
+---------------------------------------+
| summary                               |
+---------------------------------------+
| Created 63 views in the info database |
+---------------------------------------+

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| info               |
| mysql              |
| performance_schema |
| sys                |
| world              |
+--------------------+
mysql> SHOW FULL TABLES FROM info;
+---------------------------------------+------------+
| Tables_in_info                        | Table_type |
+---------------------------------------+------------+
| character_sets                        | VIEW       |
| collation_character_set_applicability | VIEW       |
| collations                            | VIEW       |
| column_privileges                     | VIEW       |
| columns                               | VIEW       |
...

24.4.4.2. Процедура diagnostics()

Создает сообщение о текущем состоянии сервера в диагностических целях.

Эта процедура требует привилегию SUPER, потому что управляет сеансовой переменной sql_log_bin, чтобы отключить двоичное журналирование во время выполнения.

Данные, собранные для diagnostics(), включают эту информацию:

Некоторые изпредставлений схемы sys вычислены как (дополнительная) начальная буква и значения дельты:

Параметры
Опции

Работа diagnostics() может быть изменена, используя следующие параметры конфигурации или их соответствующие определяемые пользователем переменные (см. раздел 24.4.2.1):

Пример

Создайте отчет о диагностике, который запускает итерацию каждые 30 секунд и работает в течение самое большее 120 секунд, используя текущие настройки Performance Schema:

mysql> CALL diagnostics(120, 30, 'current');
Чтобы получить вывод из процедуры diagnostics() в файл, используйте команды клиента mysql teefilename и notee (см. раздел 5.5.1.2):
mysql> tee diag.out;
mysql> CALL diagnostics(120, 30, 'current');
mysql> notee;

24.4.4.3. Процедура execute_prepared_stmt()

Учитывая запрос SQL как строку, выполняет его как готовый запрос. Готовый запрос освобожден после выполнения, таким образом, это не подвергается повторному использованию. Таким образом, эта процедура полезна прежде всего для выполнения динамических запросов на одноразовой основе.

Эта процедура использует sys_execute_prepared_stmt как имя готового запроса. Если это имя запроса существует, когда процедуру вызывают, его предыдущий контент разрушен.

Параметры
Опции

execute_prepared_stmt() может быть изменена, используя следующие параметры конфигурации или их соответствующие определяемые пользователем переменные (см. раздел 24.4.2.1):

Пример
mysql> CALL execute_prepared_stmt('SELECT COUNT(*) FROM mysql.user');
+----------+
| COUNT(*) |
+----------+
|   15     |
+----------+

24.4.4.4. Процедура ps_setup_disable_background_threads()

Отключает инструментовку Performance Schema для всех фоновых потоков. Производит набор результатов, указывающий, сколько фоновых потоков было отключено. Уже отключенные потоки не считаются.

Параметры

Нет.

Пример
mysql> CALL ps_setup_disable_background_threads();
+--------------------------------+
| summary                        |
+--------------------------------+
| Disabled 24 background threads |
+--------------------------------+

24.4.4.5. Процедура ps_setup_disable_consumer()

Отключает потребителей Performance Schema с именами, которые содержит параметр. Производит набор результатов, указывающий, сколько потребителей было отключено. Уже отключенные потребители не считаются.

Параметры
Пример

Отключить всех потребителей запроса:

mysql> CALL ps_setup_disable_consumer('statement');
+----------------------+
| summary              |
+----------------------+
| Disabled 4 consumers |
+----------------------+

24.4.4.6. Процедура ps_setup_disable_instrument()

Отключает инструменты Performance Schema с именами, которые содержит параметр. Производит набор результатов, указывающий, сколько инструментов было отключено. Уже отключенные инструменты не считаются.

Параметры
Пример

Отключите определенный инструмент:

mysql> CALL ps_setup_disable_instrument('wait/lock/metadata/sql/mdl');
+-----------------------+
| summary               |
+-----------------------+
| Disabled 1 instrument |
+-----------------------+
Отключите все mutex инструменты:
mysql> CALL ps_setup_disable_instrument('mutex');
+--------------------------+
| summary                  |
+--------------------------+
| Disabled 177 instruments |
+--------------------------+

24.4.4.7. Процедура ps_setup_disable_thread()

Учитывая идентификатор соединения, отключает инструментовку Performance Schema для потока. Производит набор результатов, указывающий, сколько потоков было отключено. Уже отключенные потоки не считаются.

Параметры
Пример

Отключите определенное соединение по его ID:

mysql> CALL ps_setup_disable_thread(225);
+-------------------+
| summary           |
+-------------------+
| Disabled 1 thread |
+-------------------+
Отключите текущее соединение:
mysql> CALL ps_setup_disable_thread(CONNECTION_ID());
+-------------------+
| summary           |
+-------------------+
| Disabled 1 thread |
+-------------------+

24.4.4.8. Процедура ps_setup_enable_background_threads()

Включает инструментовку Performance Schema для всех фоновых потоков. Производит набор результатов, указывающий, сколько фоновых потоков было включено. Уже включенные потоки не считаются.

Параметры

Нет.

Пример
mysql> CALL ps_setup_enable_background_threads();
+-------------------------------+
| summary                       |
+-------------------------------+
| Enabled 24 background threads |
+-------------------------------+

24.4.4.9. Процедура ps_setup_enable_consumer()

Включает потребителей Performance Schema с именами, которые содержит параметр. Производит набор результатов, указывающий, сколько потребителей включились. Уже включенные потребители не считаются.

Параметры
Пример

Включите всех потребителей:

mysql> CALL ps_setup_enable_consumer('statement');
+---------------------+
| summary             |
+---------------------+
| Enabled 4 consumers |
+---------------------+

24.4.4.10. Процедура ps_setup_enable_instrument()

Включает инструменты Performance Schema с именами, которые содержит параметр. Производит набор результатов, указывающий, сколько инструментов было включено. Уже включенные инструменты не считаются.

Параметры
Пример

Включите определенный инструмент:

mysql> CALL ps_setup_enable_instrument('wait/lock/metadata/sql/mdl');
+----------------------+
| summary              |
+----------------------+
| Enabled 1 instrument |
+----------------------+
Включите все mutex инструменты:
mysql> CALL ps_setup_enable_instrument('mutex');
+-------------------------+
| summary                 |
+-------------------------+
| Enabled 177 instruments |
+-------------------------+

24.4.4.11. Процедура ps_setup_enable_thread()

Учитывая идентификатор соединения, включает инструментовку Performance Schema для потока. Производит набор результатов, указывающий, сколько потоков было включено. Уже включенные потоки не считаются.

Параметры
Пример

Включите определенное ID соединение:

mysql> CALL ps_setup_enable_thread(225);
+------------------+
| summary          |
+------------------+
| Enabled 1 thread |
+------------------+
Включите текущее соединение:
mysql> CALL ps_setup_enable_thread(CONNECTION_ID());
+------------------+
| summary|
+------------------+
| Enabled 1 thread |
+------------------+

24.4.4.12. Процедура ps_setup_reload_saved()

Перезагружает конфигурацию Performance Schema, сохраненную ранее в пределах того же самого использования сеанса с помощью ps_setup_save(). Для получения дополнительной информации см. описание ps_setup_save().

Эта процедура требует привилегии SUPER, потому что это управляет сеансовой перменной sql_log_bin, чтобы отключить двоичное журналирование во время выполнения.

Параметры

Нет.

24.4.4.13. Процедура ps_setup_reset_to_default()

Сбрасывает конфигурацию Performance Schema к ее настройкам по умолчанию.

Параметры
Пример
mysql> CALL ps_setup_reset_to_default(TRUE)\G
*************************** 1. row ***************************
status: Resetting: setup_actors
DELETE
FROM performance_schema.setup_actors
WHERE NOT (HOST = '%' AND USER = '%' AND ROLE = '%')

*************************** 1. row ***************************
status: Resetting: setup_actors
INSERT IGNORE INTO performance_schema.setup_actors
VALUES ('%', '%', '%')
...

24.4.4.14. Процедура ps_setup_save()

Сохраняет текущую конфигурацию Performance Schema. Это позволяет Вам изменить конфигурацию временно для отладки или других целей, затем восстановить это в предыдущее состояние, вызывая ps_setup_reload_saved() .

Чтобы предотвратить другие одновременные требования сохранить конфигурацию, ps_setup_save() приобретает блокировку sys.ps_setup_save вызовом функции GET_LOCK(). ps_setup_save() берет параметр тайм-аута, чтобы указать, сколько секунд ждать, если блокировка уже существует (это указывает, что у некоторого другого сеанса есть сохраненная конфигурация). Если тайм-аут истекает, не получая блокировку, ps_setup_save() терпит неудачу.

Это предназначено для вызова ps_setup_reload_saved() позже в пределах того же самого сеанса, что и ps_setup_save(), потому что конфигурация сохранена в таблицы TEMPORARY. ps_setup_save() удаляет временные таблицы и выпускает блокировку. Если Вы заканчиваете свой сеанс без вызова ps_setup_save(), таблицы и блокировка исчезают автоматически.

Эта процедура требует привилегии SUPER, потому что это управляет сеансовой перменной sql_log_bin, чтобы отключить двоичное журналирование во время выполнения.

Параметры
Пример
mysql> CALL ps_setup_save(10);
... make Performance Schema configuration changes ...
mysql> CALL ps_setup_reload_saved();

24.4.4.15. Процедура ps_setup_show_disabled()

Показывает все в настоящее время отключенные конфигурации Performance Schema.

Параметры
Пример
mysql> CALL ps_setup_show_disabled(TRUE, TRUE);
+----------------------------+
| performance_schema_enabled |
+----------------------------+
|  1                         |
+----------------------------+
+---------------+
| enabled_users |
+---------------+
| '%'@'%'       |
+---------------+
+-------------+----------------------+---------+-------+
| object_type | objects              | enabled | timed |
+-------------+----------------------+---------+-------+
| EVENT       | mysql.%              | NO      | NO    |
| EVENT       | performance_schema.% | NO      | NO    |
| EVENT       | information_schema.% | NO      | NO    |
| FUNCTION    | mysql.%              | NO      | NO    |
| FUNCTION    | performance_schema.% | NO      | NO    |
| FUNCTION    | information_schema.% | NO      | NO    |
| PROCEDURE   | mysql.%              | NO      | NO    |
| PROCEDURE   | performance_schema.% | NO      | NO    |
| PROCEDURE   | information_schema.% | NO      | NO    |
| TABLE       | mysql.%              | NO      | NO    |
| TABLE       | performance_schema.% | NO      | NO    |
| TABLE       | information_schema.% | NO      | NO    |
| TRIGGER     | mysql.%              | NO      | NO    |
| TRIGGER     | performance_schema.% | NO      | NO    |
| TRIGGER     | information_schema.% | NO      | NO    |
+-------------+----------------------+---------+-------+
...

24.4.4.16. Процедура ps_setup_show_disabled_consumers()

Показать всех в настоящее время отключенных потребителей Performance Schema.

Параметры

Нет.

Пример
mysql> CALL ps_setup_show_disabled_consumers();
+----------------------------------+
| disabled_consumers               |
+----------------------------------+
| events_stages_current            |
| events_stages_history            |
| events_stages_history_long       |
| events_statements_history        |
| events_statements_history_long   |
| events_transactions_history      |
| events_transactions_history_long |
| events_waits_current             |
| events_waits_history             |
| events_waits_history_long        |
+----------------------------------+

24.4.4.17. Процедура ps_setup_show_disabled_instruments()

Показывает все в настоящее время отключенные инструменты Performance Schema. Это может быть длинным списком.

Параметры

Нет.

Пример
mysql> CALL ps_setup_show_disabled_instruments()\G
*************************** 1. row ***************************
disabled_instruments: wait/synch/mutex/sql/TC_LOG_MMAP::LOCK_tc
 timed: NO
*************************** 2. row ***************************
disabled_instruments: wait/synch/mutex/sql/LOCK_des_key_file
 timed: NO
*************************** 3. row ***************************
disabled_instruments: wait/synch/mutex/sql/MYSQL_BIN_LOG::LOCK_commit
 timed: NO
...

24.4.4.18. Процедура ps_setup_show_enabled()

Показывает все в настоящее время включенные конфигурации Performance Schema.

Параметры
Пример
mysql> CALL ps_setup_show_enabled(FALSE, FALSE);
+----------------------------+
| performance_schema_enabled |
+----------------------------+
|  1                         |
+----------------------------+
1 row in set (0.00 sec)

+---------------+
| enabled_users |
+---------------+
| '%'@'%'       |
+---------------+
1 row in set (0.00 sec)

+-------------+---------+---------+-------+
| object_type | objects | enabled | timed |
+-------------+---------+---------+-------+
| EVENT       | %.%     | YES     | YES   |
| FUNCTION    | %.%     | YES     | YES   |
| PROCEDURE   | %.%     | YES     | YES   |
| TABLE       | %.%     | YES     | YES   |
| TRIGGER     | %.%     | YES     | YES   |
+-------------+---------+---------+-------+
5 rows in set (0.01 sec)

+-----------------------------+
| enabled_consumers           |
+-----------------------------+
| events_statements_current   |
| events_transactions_current |
| global_instrumentation      |
| thread_instrumentation      |
| statements_digest           |
+-----------------------------+

24.4.4.19. Процедура ps_setup_show_enabled_consumers()

Показать всех в настоящее время включенных потребителей Performance Schema.

Параметры

Нет.

Пример
mysql> CALL ps_setup_show_enabled_consumers();
+-----------------------------+
| enabled_consumers           |
+-----------------------------+
| events_statements_current   |
| events_transactions_current |
| global_instrumentation      |
| thread_instrumentation      |
| statements_digest           |
+-----------------------------+

24.4.4.20. Процедура ps_setup_show_enabled_instruments()

Показывает все в настоящее время включенные инструменты Performance Schema. Это может быть длинным списком.

Параметры

Нет.

Пример
mysql> CALL ps_setup_show_enabled_instruments()\G
*************************** 1. row ***************************
enabled_instruments: wait/io/file/sql/map
timed: YES
*************************** 2. row ***************************
enabled_instruments: wait/io/file/sql/binlog
timed: YES
*************************** 3. row ***************************
enabled_instruments: wait/io/file/sql/binlog_cache
timed: YES
...

24.4.4.21. Процедура ps_statement_avg_latency_histogram()

Выводит на экран текстовый график гистограммы средних значений времени ожидания для всех нормализованных запросов, прослеженных в пределах таблицы Performance Schema events_statements_summary_by_digest.

Эта процедура может использоваться, чтобы вывести на экран очень высокоуровневое изображение распределения времени ожидания запросов, работающих в пределах этого экземпляра MySQL.

Параметры

Нет.

Пример

Гистограмма выведена в модулях запросов. Например, * = 2 units в гистограмме означает, что каждый символ * представляет 2 запроса.

mysql> CALL ps_statement_avg_latency_histogram()\G
*************************** 1. row ***************************
Performance Schema Statement Digest Average Latency Histogram:

  . = 1 unit
  * = 2 units
  # = 3 units

(0 - 66ms) 88  | #############################
(66 - 133ms)   14  | ..............
(133 - 199ms)  4   | ....
(199 - 265ms)  5   | **
(265 - 332ms)  1   | .
(332 - 398ms)  0   |
(398 - 464ms)  1   | .
(464 - 531ms)  0   |
(531 - 597ms)  0   |
(597 - 663ms)  0   |
(663 - 730ms)  0   |
(730 - 796ms)  0   |
(796 - 863ms)  0   |
(863 - 929ms)  0   |
(929 - 995ms)  0   |
(995 - 1062ms) 0   |

  Total Statements: 114; Buckets: 16; Bucket Size: 66 ms;

24.4.4.22. Процедура ps_trace_statement_digest()

Трассирует все инструменты Performance Schema для определенного обзора запроса.

Если Вы находите запрос интересным в пределах таблицы Performance Schema events_statements_summary_by_digest, определите значение MD5 столбца DIGEST этой процедуре и укажите продолжительность и интервал. Результат: сообщение обо всей статистике, прослеженной в пределах Performance Schema для этого обзора в интервале.

Процедура также пытается выполнить EXPLAIN для самого длинного рабочего примера обзора во время интервала. Эта попытка могла бы потерпеть неудачу, потому что Performance Schema усекает длинные значения SQL_TEXT. Следовательно, EXPLAIN потерпит неудачу.

Эта процедура требует привилегии SUPER, потому что это управляет сеансовой переменной sql_log_bin, чтобы отключить двоичное журналирование во время выполнения.

Параметры
Пример
mysql> CALL ps_trace_statement_digest('891ec6860f98ba46d89dd20b0c03652c', 10, 0.1, TRUE, TRUE);
+--------------------+
| SUMMARY STATISTICS |
+--------------------+
| SUMMARY STATISTICS |
+--------------------+
1 row in set (9.11 sec)

+------------+-----------+-----------+-----------+---------------+------------+------------+
| executions | exec_time | lock_time | rows_sent | rows_examined | tmp_tables | full_scans |
+------------+-----------+-----------+-----------+---------------+------------+------------+
| 21         | 4.11 ms   | 2.00 ms   | 0         |  21           | 0          | 0          |
+------------+-----------+-----------+-----------+---------------+------------+------------+
1 row in set (9.11 sec)

+------------------------------------------+-------+-----------+
| event_name                               | count | latency   |
+------------------------------------------+-------+-----------+
| stage/sql/checking query cache for query | 16    | 724.37 us |
| stage/sql/statistics                     | 16    | 546.92 us |
| stage/sql/freeing items                  | 18    | 520.11 us |
| stage/sql/init                           | 51    | 466.80 us |
...
| stage/sql/cleaning up                    | 18    | 11.92 us  |
| stage/sql/executing                      | 16    | 6.95 us   |
+------------------------------------------+-------+-----------+
17 rows in set (9.12 sec)

+---------------------------+
| LONGEST RUNNING STATEMENT |
+---------------------------+
| LONGEST RUNNING STATEMENT |
+---------------------------+
1 row in set (9.16 sec)

+-----------+-----------+-----------+-----------+---------------+------------+-----------+
| thread_id | exec_time | lock_time | rows_sent | rows_examined | tmp_tables | full_scan |
+-----------+-----------+-----------+-----------+---------------+------------+-----------+
|166646     | 618.43 us | 1.00 ms   | 0         |   1           | 0          | 0         |
+-----------+-----------+-----------+-----------+---------------+------------+-----------+
1 row in set (9.16 sec)

# Truncated for clarity...
+-----------------------------------------------------------------+
| sql_text                                                        |
+-----------------------------------------------------------------+
| select hibeventhe0_.id as id1382_, hibeventhe0_.createdTime ... |
+-----------------------------------------------------------------+
1 row in set (9.17 sec)

+------------------------------------------+-----------+
| event_name                               | latency   |
+------------------------------------------+-----------+
| stage/sql/init                           | 8.61 us   |
| stage/sql/Waiting for query cache lock   | 453.23 us |
| stage/sql/init                           | 331.07 ns |
| stage/sql/checking query cache for query | 43.04 us  |
...
| stage/sql/freeing items                  | 30.46 us  |
| stage/sql/cleaning up                    | 662.13 ns |
+------------------------------------------+-----------+
18 rows in set (9.23 sec)

+----+-------------+--------------+-------+---------------+-----------+---------+-------------+------+-------+
| id | select_type | table        | type  | possible_keys | key       | key_len | ref         | rows | Extra |
+----+-------------+--------------+-------+---------------+-----------+---------+-------------+------+-------+
|  1 | SIMPLE      | hibeventhe0_ | const | fixedTime     | fixedTime | 775     | const,const | 1    | NULL  |
+----+-------------+--------------+-------+---------------+-----------+---------+-------------+------+-------+
1 row in set (9.27 sec)

Query OK, 0 rows affected (9.28 sec)

24.4.4.23. Процедура ps_trace_thread()

Выводит все данные Performance Schema для инструментованного потока в отформатированный файл графика .dot (для языка описания графика DOT). Каждый набор результатов, возвращенный из процедуры, должен использоваться для полного графика.

Эта процедура требует привилегии SUPER, потому что это управляет сеансовой переменной sql_log_bin, чтобы отключить двоичное журналирование во время выполнения.

Параметры
Пример
mysql> CALL ps_trace_thread(25, CONCAT('/tmp/stack-', REPLACE(NOW(),
               ' ', '-'), '.dot'), NULL, NULL, TRUE, TRUE, TRUE);
+-------------------+
| summary           |
+-------------------+
| Disabled 1 thread |
+-------------------+
1 row in set (0.00 sec)

+---------------------------------------------+
| Info                                        |
+---------------------------------------------+
| Data collection starting for THREAD_ID = 25 |
+---------------------------------------------+
1 row in set (0.03 sec)

+-----------------------------------------------------------+
| Info                                                      |
+-----------------------------------------------------------+
| Stack trace written to /tmp/stack-2014-02-16-21:18:41.dot |
+-----------------------------------------------------------+
1 row in set (60.07 sec)

+-------------------------------------------------------------------+
| Convert to PDF                                                    |
+-------------------------------------------------------------------+
| dot -Tpdf -o /tmp/stack_25.pdf /tmp/stack-2014-02-16-21:18:41.dot |
+-------------------------------------------------------------------+
1 row in set (60.07 sec)

+-------------------------------------------------------------------+
| Convert to PNG                                                    |
+-------------------------------------------------------------------+
| dot -Tpng -o /tmp/stack_25.png /tmp/stack-2014-02-16-21:18:41.dot |
+-------------------------------------------------------------------+
1 row in set (60.07 sec)

+------------------+
| summary          |
+------------------+
| Enabled 1 thread |
+------------------+
1 row in set (60.32 sec)

24.4.4.24. Процедура ps_truncate_all_tables()

Усекает все сводные таблицы Performance Schema, сбрасывая всю соединенную инструментовку как снимок. Производит набор результатов, указывающий, сколько таблиц было усечено.

Параметры
Пример
mysql> CALL ps_truncate_all_tables(FALSE);
+---------------------+
| summary             |
+---------------------+
| Truncated 44 tables |
+---------------------+

24.4.4.25. Процедура statement_performance_analyzer()

Создает сообщение о запросах, работающих на сервере. Представления вычислены, базируясь на полной деятельности и/или деятельности дельты.

Эта процедура требует привилегии SUPER, потому что это управляет сеансовой переменной sql_log_bin, чтобы отключить двоичное журналирование во время выполнения.

Параметры
Опции

Работа statement_performance_analyzer() может быть изменена, используя следующие параметры конфигурации или их соответствующие определяемые пользователем переменные (см. раздел 24.4.2.1):

Пример

Создать отчет с запросами в 95th percentile, начиная с последнего усечения events_statements_summary_by_digest с одноминутным периодом дельты:

  1. Составьте временную таблицу, чтобы сохранить начальный снимок.

  2. Создайте начальный снимок.
  3. Сохраните начальный снимок во временной таблице.
  4. Ждите одну минуту.
  5. Создайте новый снимок.
  6. Выполните анализ, основанный на новом снимке.
  7. Выполните анализ, основанный на дельте между начальным и новым снимками.

mysql> CALL statement_performance_analyzer('create_tmp',
               'mydb.tmp_digests_ini', NULL);
Query OK, 0 rows affected (0.08 sec)

mysql> CALL statement_performance_analyzer('snapshot', NULL, NULL);
Query OK, 0 rows affected (0.02 sec)

mysql> CALL statement_performance_analyzer('save', 'mydb.tmp_digests_ini',
               NULL);
Query OK, 0 rows affected (0.00 sec)

mysql> DO SLEEP(60);
Query OK, 0 rows affected (1 min 0.00 sec)

mysql> CALL statement_performance_analyzer('snapshot', NULL, NULL);
Query OK, 0 rows affected (0.02 sec)

mysql> CALL statement_performance_analyzer('overall', NULL,
               'with_runtimes_in_95th_percentile');
+-----------------------------------------+
| Next Output                             |
+-----------------------------------------+
| Queries with Runtime in 95th Percentile |
+-----------------------------------------+
1 row in set (0.05 sec)
...

mysql> CALL statement_performance_analyzer('delta', 'mydb.tmp_digests_ini', 'with_runtimes_in_95th_percentile');
+-----------------------------------------+
| Next Output                             |
+-----------------------------------------+
| Queries with Runtime in 95th Percentile |
+-----------------------------------------+
1 row in set (0.03 sec)
...
Создайте полное сообщение о запросах 95th percentile и 10 лучших запросах с полным сканированием таблицы:
mysql> CALL statement_performance_analyzer('snapshot', NULL, NULL);
Query OK, 0 rows affected (0.01 sec)

mysql> SET @sys.statement_performance_analyzer.limit = 10;
Query OK, 0 rows affected (0.00 sec)

mysql> CALL statement_performance_analyzer('overall', NULL,
               'with_runtimes_in_95th_percentile,with_full_table_scans');
+-----------------------------------------+
| Next Output                             |
+-----------------------------------------+
| Queries with Runtime in 95th Percentile |
+-----------------------------------------+
1 row in set (0.01 sec)
...
+-------------------------------------+
| Next Output                         |
+-------------------------------------+
| Top 10 Queries with Full Table Scan |
+-------------------------------------+
1 row in set (0.09 sec)
...
Используйте пользовательское представление, показывая лучшие 10 запросов, сортированных полным временем выполнения, освежая представление каждую минуту, используя команду watch в Linux:
mysql> CREATE OR REPLACE VIEW mydb.my_statements AS
    -> SELECT sys.format_statement(DIGEST_TEXT) AS query,
    ->        SCHEMA_NAME AS db, COUNT_STAR AS exec_count,
    ->        sys.format_time(SUM_TIMER_WAIT) AS total_latency,
    ->        sys.format_time(AVG_TIMER_WAIT) AS avg_latency,
    ->        ROUND(IFNULL(SUM_ROWS_SENT / NULLIF(COUNT_STAR, 0), 0)) AS
    ->        rows_sent_avg,
    ->        ROUND(IFNULL(SUM_ROWS_EXAMINED / NULLIF(COUNT_STAR, 0), 0))
    ->        AS rows_examined_avg,
    ->        ROUND(IFNULL(SUM_ROWS_AFFECTED / NULLIF(COUNT_STAR, 0), 0))
    ->        AS rows_affected_avg, DIGEST AS digest
    ->        FROM performance_schema.events_statements_summary_by_digest
    ->        ORDER BY SUM_TIMER_WAIT DESC;
Query OK, 0 rows affected (0.01 sec)

mysql> CALL statement_performance_analyzer('create_table',
               'mydb.digests_prev', NULL);
Query OK, 0 rows affected (0.10 sec)

shell> watch -n 60 "mysql sys --table -e \"
     > SET @sys.statement_performance_analyzer.view = 'mydb.my_statements';
     > SET @sys.statement_performance_analyzer.limit = 10;
     > CALL statement_performance_analyzer('snapshot', NULL, NULL);
     > CALL statement_performance_analyzer('delta', 'mydb.digests_prev', 'custom');
     > CALL statement_performance_analyzer('save', 'mydb.digests_prev', NULL);
     > \""

Every 60.0s: mysql sys --table -e "...  Mon Dec 22 10:58:51 2014
+----------------------------------+
| Next Output                      |
+----------------------------------+
| Top 10 Queries Using Custom View |
+----------------------------------+
+-------+----+------------+---------------+-------------+---------------+-------------------+-------------------+--------+
| query | db | exec_count | total_latency | avg_latency | rows_sent_avg | rows_examined_avg | rows_affected_avg | digest |
+-------+----+------------+---------------+-------------+---------------+-------------------+-------------------+--------+
...

24.4.4.26. Процедура table_exists()

Тестирует, существует ли данная таблица как регулярная, TEMPORARY или представление. Процедура возвращает тип таблицы в параметре OUT. Если временная и постоянная таблицы существуют с этим именем, вернется TEMPORARY.

Параметры
Пример
mysql> CREATE DATABASE db1;
Query OK, 1 row affected (0.01 sec)

mysql> USE db1;
Database changed
mysql> CREATE TABLE t1 (id INT PRIMARY KEY);
Query OK, 0 rows affected (0.03 sec)

mysql> CREATE TABLE t2 (id INT PRIMARY KEY);
Query OK, 0 rows affected (0.20 sec)

mysql> CREATE view v_t1 AS SELECT * FROM t1;
Query OK, 0 rows affected (0.02 sec)

mysql> CREATE TEMPORARY TABLE t1 (id INT PRIMARY KEY);
Query OK, 0 rows affected (0.00 sec)

mysql> CALL sys.table_exists('db1', 't1', @exists); SELECT @exists;
Query OK, 0 rows affected (0.01 sec)
+-----------+
| @exists   |
+-----------+
| TEMPORARY |
+-----------+
1 row in set (0.00 sec)

mysql> CALL sys.table_exists('db1', 't2', @exists); SELECT @exists;
Query OK, 0 rows affected (0.02 sec)
+------------+
| @exists    |
+------------+
| BASE TABLE |
+------------+
1 row in set (0.00 sec)

mysql> CALL sys.table_exists('db1', 'v_t1', @exists); SELECT @exists;
Query OK, 0 rows affected (0.02 sec)

+---------+
| @exists |
+---------+
| VIEW    |
+---------+
1 row in set (0.00 sec)

mysql> CALL sys.table_exists('db1', 't3', @exists); SELECT @exists;
Query OK, 0 rows affected (0.00 sec)
+---------+
| @exists |
+---------+
|         |
+---------+
1 row in set (0.00 sec)

24.4.5. Хранимые функции sys Schema

Следующие разделы описывают хранимые функции sys schema.

24.4.5.1. Функция extract_schema_from_file_name()

Учитывая имя пути к файлу, возвращает компонент пути, который представляет имя схемы. Эта функция предполагает, что имя файла находится в пределах каталога схемы. Поэтому это не будет работать с разделением или таблицей, определенной с использованием собственной табличной опции DATA_DIRECTORY.

Эта функция полезна, извлекая информацию о вводе/выводе файла из Performance Schema, которая включает имена пути к файлу. Это обеспечивает удобный способ вывести на экран имена схемы, которые могут быть более легко поняты чем полные пути и могут использоваться в соединениях для имен схемы объекта.

Параметры
Возвращаемое значение

VARCHAR(64).

Пример
mysql> SELECT extract_schema_from_file_name('/usr/local/mysql/data/world/City.ibd');
+-----------------------------------------------------------------------+
| extract_schema_from_file_name('/usr/local/mysql/data/world/City.ibd') |
+-----------------------------------------------------------------------+
| world                                                                 |
+-----------------------------------------------------------------------+

24.4.5.2. Функция extract_table_from_file_name()

Учитывая имя пути к файлу, возвращает компонент пути, который представляет имя таблицы.

Эта функция полезна, извлекая информацию о вводе/выводе файла из Performance Schema, которая включает имена пути к файлу. Это обеспечивает удобный способ вывести на экран имена таблиц, которые могут быть более легко поняты чем полные пути, и могут использоваться в соединениях для имен таблиц объекта.

Параметры
Возвращаемое значение

VARCHAR(64).

Пример
mysql> SELECT extract_table_from_file_name('/usr/local/mysql/data/world/City.ibd');
+----------------------------------------------------------------------+
| extract_table_from_file_name('/usr/local/mysql/data/world/City.ibd') |
+----------------------------------------------------------------------+
| City                                                                 |
+----------------------------------------------------------------------+

24.4.5.3. Функция format_bytes()

Учитывая значение в байтах, конвертирует это к удобочитаемому формату и возвращает строку, состоящую из значения и индикатора модулей. В зависимости от размера значения, части модулей: bytes, KiB (kibibytes), MiB (mebibytes), GiB (gibibytes), TiB (tebibytes) или PiB (pebibytes).

Параметры
Возвращаемое значение

TEXT.

Пример
mysql> SELECT format_bytes(512), format_bytes(18446644073709551615);
+-------------------+------------------------------------+
| format_bytes(512) | format_bytes(18446644073709551615) |
+-------------------+------------------------------------+
| 512 bytes         | 16383.91 PiB                       |
+-------------------+------------------------------------+

24.4.5.4. Функция format_path()

Учитывая путь, возвращает измененный путь после замены подпутей, которые соответствуют значениям следующих системных переменных в этом порядке:

datadir
tmpdir
slave_load_tmpdir
innodb_data_home_dir
innodb_log_group_home_dir
innodb_undo_directory
basedir
Значение, которое соответствует значению системной переменной sysvar заменено строкой @@global.sysvar.

Параметры
Возвращаемое значение

VARCHAR(512) CHARACTER SET utf8.

Пример
mysql> SELECT format_path('/usr/local/mysql/data/world/City.ibd');
+-----------------------------------------------------+
| format_path('/usr/local/mysql/data/world/City.ibd') |
+-----------------------------------------------------+
| @@datadir/world/City.ibd                            |
+-----------------------------------------------------+

24.4.5.5. Функция format_statement()

Учитывая строку (обычно представляющей запрос SQL), уменьшает это до длины, данной параметром конфигурации statement_truncate_len, и возвращает результат. Никакое усечение не происходит, если строка короче statement_truncate_len. Иначе средняя часть строки заменена многоточием (...).

Эта функция полезна для форматирования возможно длинных запросов, полученных из таблиц Performance Schema до известной установленной максимальной длины.

Параметры
Опции

format_statement() может быть изменена, используя следующие параметры конфигурации или их соответствующие определяемые пользователем переменные (см. раздел 24.4.2.1):

Возвращаемое значение

LONGTEXT.

Пример

По умолчанию format_statement() усекает запросы, чтобы они были не больше 64 символов. Установка @sys.statement_truncate_len изменяет длину усечения для текущего сеанса:

mysql> SET @stmt = 'SELECT variable, value, set_time, set_by
                       FROM sys_config';
mysql> SELECT format_statement(@stmt);
+----------------------------------------------------------+
| format_statement(@stmt)                                  |
+----------------------------------------------------------+
| SELECT variable, value, set_time, set_by FROM sys_config |
+----------------------------------------------------------+
mysql> SET @sys.statement_truncate_len = 32;
mysql> SELECT format_statement(@stmt);
+-----------------------------------+
| format_statement(@stmt)           |
+-----------------------------------+
| SELECT variabl ... ROM sys_config |
+-----------------------------------+

24.4.5.6. Функция format_time()

Учитывая время ожидания Performance Schema или время ожидания в пикосекундах, конвертирует это к удобочитаемому формату и возвращает строку, состоящую из значения и индикатора модулей. В зависимости от размера значения, часть модулей ns (nanoseconds), us (microseconds), ms (milliseconds), s (seconds), m (minutes), h (hours), d (days) или w (weeks).

Параметры
Возвращаемое значение

TEXT.

Пример
mysql> SELECT format_time(3501), format_time(188732396662000);
+-------------------+------------------------------+
| format_time(3501) | format_time(188732396662000) |
+-------------------+------------------------------+
| 3.50 ns           | 3.15 m                       |
+-------------------+------------------------------+

24.4.5.7. Функция list_add()

Добавляет значение к списку разделенных запятой значений и возвращает результат.

Эта функция и list_drop() могут быть полезны для управления значением таких системных переменных, как sql_mode и optimizer_switch , которым нужен список разделенных запятой значений.

Параметры
Возвращаемое значение

TEXT.

Пример
mysql> SELECT @@sql_mode;
+----------------------------------------+
| @@sql_mode                             |
+----------------------------------------+
| ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES |
+----------------------------------------+
mysql> SET @@sql_mode = list_add(@@sql_mode, 'NO_ENGINE_SUBSTITUTION');
mysql> SELECT @@sql_mode;
+---------------------------------------------------------------+
| @@sql_mode                                                    |
+---------------------------------------------------------------+
| ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION |
+---------------------------------------------------------------+
mysql> SET @@sql_mode = list_drop(@@sql_mode, 'ONLY_FULL_GROUP_BY');
mysql> SELECT @@sql_mode;
+--------------------------------------------+
| @@sql_mode                                 |
+--------------------------------------------+
| STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION |
+--------------------------------------------+

24.4.5.8. Функция list_drop()

Удаляет значение из списка разделенных запятой значений и возвращает результат. Для получения дополнительной информации см. описание list_add().

Параметры
Возвращаемое значение

TEXT.

24.4.5.9. Функция ps_is_account_enabled()

Возвращает YES или NO, чтобы указать, включена ли инструментовка Performance Schema для указанной учетной записи.

Параметры
Возвращаемое значение

ENUM('YES','NO').

Пример
mysql> SELECT ps_is_account_enabled('localhost', 'root');
+--------------------------------------------+
| ps_is_account_enabled('localhost', 'root') |
+--------------------------------------------+
| YES                                        |
+--------------------------------------------+

24.4.5.10. Функция ps_is_consumer_enabled()

Возвращает YES или NO, чтобы указать, включен ли данный потребитель Performance Schema, или NULL, если параметр не допустимое потребительское имя.

Эта функция составляет потребительскую иерархию, таким образом, потребителя не считают включенным, если все потребители, от которых он зависит, также не включены. Для информации о потребительской иерархии см. раздел 23.2.3.7 .

Параметры
Возвращаемое значение

ENUM('YES','NO').

Пример
mysql> SELECT ps_is_consumer_enabled('thread_instrumentation');
+--------------------------------------------------+
| ps_is_consumer_enabled('thread_instrumentation') |
+--------------------------------------------------+
| YES                                              |
+--------------------------------------------------+

24.4.5.11. The ps_is_instrument_default_enabled()

Возвращает YES или NO, чтобы указать, включен ли данный инструмент Performance Schema по умолчанию.

Параметры
Возвращаемое значение

ENUM('YES','NO').

Пример
mysql> SELECT ps_is_instrument_default_enabled('memory/innodb/row_log_buf');
+---------------------------------------------------------------+
| ps_is_instrument_default_enabled('memory/innodb/row_log_buf') |
+---------------------------------------------------------------+
| NO                                                            |
+---------------------------------------------------------------+
mysql> SELECT ps_is_instrument_default_enabled('statement/sql/alter_user');
+--------------------------------------------------------------+
| ps_is_instrument_default_enabled('statement/sql/alter_user') |
+--------------------------------------------------------------+
| YES                                                          |
+--------------------------------------------------------------+

24.4.5.12. Функция ps_is_instrument_default_timed()

Возвращает YES или NO, чтобы указать, рассчитан ли данный инструмент Performance Schema по умолчанию.

Параметры
Возвращаемое значение

ENUM('YES','NO').

Пример
mysql> SELECT ps_is_instrument_default_timed('memory/innodb/row_log_buf');
+-------------------------------------------------------------+
| ps_is_instrument_default_timed('memory/innodb/row_log_buf') |
+-------------------------------------------------------------+
| NO                                                          |
+-------------------------------------------------------------+
mysql> SELECT ps_is_instrument_default_timed('statement/sql/alter_user');
+------------------------------------------------------------+
| ps_is_instrument_default_timed('statement/sql/alter_user') |
+------------------------------------------------------------+
| YES                                                        |
+------------------------------------------------------------+

24.4.5.13. Функция ps_is_thread_instrumented()

Возвращает YES или NO, чтобы указать, включена ли инструментовка Performance Schema для данного соединения, UNKNOWN, если идентификатор неизвестен или NULL, если ID NULL.

Параметры
Возвращаемое значение

ENUM('YES','NO','UNKNOWN').

Пример
mysql> SELECT ps_is_thread_instrumented(43);
+-------------------------------+
| ps_is_thread_instrumented(43) |
+-------------------------------+
| UNKNOWN                       |
+-------------------------------+

mysql> SELECT ps_is_thread_instrumented(CONNECTION_ID());
+--------------------------------------------+
| ps_is_thread_instrumented(CONNECTION_ID()) |
+--------------------------------------------+
| YES                                        |
+--------------------------------------------+

24.4.5.14. Функция ps_thread_account()

Учитывая ID потока Performance Schema, возвращает учетную запись user_name@host_name, связанную с этим потоком.

Параметры
Возвращаемое значение

TEXT.

Пример
mysql> SELECT ps_thread_account(ps_thread_id(CONNECTION_ID()));
+--------------------------------------------------+
| ps_thread_account(ps_thread_id(CONNECTION_ID())) |
+--------------------------------------------------+
| root@localhost                                   |
+--------------------------------------------------+

24.4.5.15. Функция ps_thread_id()

Возвращает идентификатор потока Performance Schema для данного ID соединения или ID потока для текущего соединения, если идентификатор соединения NULL.

Параметры
Возвращаемое значение

BIGINT UNSIGNED.

Пример
mysql> SELECT ps_thread_id(260);
+-------------------+
| ps_thread_id(260) |
+-------------------+
| 285               |
+-------------------+

24.4.5.16. Функция ps_thread_stack()

Возвращается отформатированный в JSON стек всех запросов, этапов и событий в пределах Performance Schema для данного ID потока.

Параметры
Возвращаемое значение

LONGTEXT CHARACTER SET latin1.

Пример
mysql> SELECT ps_thread_stack(37, FALSE) AS thread_stack\G
*************************** 1. row ***************************
thread_stack: {"rankdir": "LR","nodesep": "0.10",
"stack_created": "2014-02-19 13:39:03", "mysql_version": "8.0.1-dmr-debug-log",
"mysql_user": "root@localhost","events": [{"nesting_event_id": "0",
"event_id": "10", "timer_wait": 256.35, "event_info": "sql/select",
"wait_info": "select @@version_comment limit 1\nerrors: 0\nwarnings: 0\nlock time:
...

24.4.5.17. Функция ps_thread_trx_info()

Возвращает объект JSON, содержащий информацию о данном потоке. Информация включает текущую транзакцию и запросы, которые это уже выполнило, полученные из таблиц Performance Schema events_transactions_current и events_statements_history. Потребителям для тех таблиц нужно позволить получить полные данные в объекте JSON.

Если вывод превышает длину усечения (65535 по умолчанию), ошибочный объект JSON будет возвращен:

{ "error": "Trx info truncated: Row 6 was cut by GROUP_CONCAT()" }
Подобные ошибочные объекты возвращены для других предупреждений, и исключения подняты во время функционального выполнения.

Параметры
Опции

ps_thread_trx_info() может быть изменена, используя следующие параметры конфигурации или их соответствующие определяемые пользователем переменные (см. раздел 24.4.2.1):

Возвращаемое значение

LONGTEXT.

Пример
mysql> SELECT ps_thread_trx_info(48)\G
*************************** 1. row ***************************
ps_thread_trx_info(48): [
  {
"time": "790.70 us",
"state": "COMMITTED",
"mode": "READ WRITE",
"autocommitted": "NO",
"gtid": "AUTOMATIC",
"isolation": "REPEATABLE READ",
"statements_executed": [
  {
"sql_text": "INSERT INTO info VALUES (1, \'foo\')",
"time": "471.02 us",
"schema": "trx",
"rows_examined": 0,
"rows_affected": 1,
"rows_sent": 0,
"tmp_tables": 0,
"tmp_disk_tables": 0,
"sort_rows": 0,
"sort_merge_passes": 0
  },
  {
"sql_text": "COMMIT",
"time": "254.42 us",
"schema": "trx",
"rows_examined": 0,
"rows_affected": 0,
"rows_sent": 0,
"tmp_tables": 0,
"tmp_disk_tables": 0,
"sort_rows": 0,
"sort_merge_passes": 0
  }
]
  },
  {
"time": "426.20 us",
"state": "COMMITTED",
"mode": "READ WRITE",
"autocommitted": "NO",
"gtid": "AUTOMATIC",
"isolation": "REPEATABLE READ",
"statements_executed": [
  {
"sql_text": "INSERT INTO info VALUES (2, \'bar\')",
"time": "107.33 us",
"schema": "trx",
"rows_examined": 0,
"rows_affected": 1,
"rows_sent": 0,
"tmp_tables": 0,
"tmp_disk_tables": 0,
"sort_rows": 0,
"sort_merge_passes": 0
  },
  {
"sql_text": "COMMIT",
"time": "213.23 us",
"schema": "trx",
"rows_examined": 0,
"rows_affected": 0,
"rows_sent": 0,
"tmp_tables": 0,
"tmp_disk_tables": 0,
"sort_rows": 0,
"sort_merge_passes": 0
  }
]
  }
]

24.4.5.18. Функция quote_identifier()

Учитывая строковый параметр, эта функция производит заключенный в кавычки идентификатор, подходящий для включения в запросы SQL. Это полезно, когда значение, которое будет использоваться в качестве идентификатора, является зарезервированным словом или содержит обратный апостроф (`).

Параметры

in_identifier TEXT: Идентификатор, чтобы заключить в кавычки.

Возвращаемое значение

TEXT.

Пример
mysql> SELECT quote_identifier('plain');
+---------------------------+
| quote_identifier('plain') |
+---------------------------+
| `plain`                   |
+---------------------------+

mysql> SELECT quote_identifier('trick`ier');
+-------------------------------+
| quote_identifier('trick`ier') |
+-------------------------------+
| `trick``ier`                  |
+-------------------------------+

mysql> SELECT quote_identifier('integer');
+-----------------------------+
| quote_identifier('integer') |
+-----------------------------+
| `integer`                   |
+-----------------------------+

24.4.5.19. Функция sys_get_config()

Учитывая имя параметра конфигурации, возвращает значение опции из таблицы sys_config или обеспеченное значение по умолчанию (которое может быть NULL), если опция не существует в таблице.

Если sys_get_config() возвращает значение по умолчанию, и это значение NULL, ожидается, что вызывающий в состоянии обработать NULL для данного параметра конфигурации.

В соответствии с соглашением, подпрограммы, которые вызывают sys_get_config(), сначала проверят, существует ли соответствующая определяемая пользователем переменная и она не NULL. Если так, подпрограмма использует переменное значение, не читая таблицу sys_config. Если переменная не существует или NULL, подпрограмма читает значение опции из таблицы и устанавливает определяемую пользователем переменную в это значение. Для получения дополнительной информации об отношениях между параметрами конфигурации и их соответствующими определяемыми пользователем переменными см. раздел 24.4.2.1.

Если Вы хотите проверить, был ли параметр конфигурации уже установлен, а если нет, использовать возвращаемое значение sys_get_config(), Вы можете использовать IFNULL(...) (см. пример позже). Однако, это не должно быть сделано в цикле (например, для каждой строки в наборе результатов), потому что для повторных запросов, где назначение необходимо только в первой итерации, используя IFNULL(...) как ожидают, будет значительно медленнее чем использование блока IF (...) THEN ... END IF; (см. пример позже).

Параметры
Возвращаемое значение

VARCHAR(128).

Пример

Получите значение конфигурации из таблицы sys_config, используя 128 как значение по умолчанию, если опция не присутствует в таблице:

mysql> SELECT sys.sys_get_config('statement_truncate_len', 128) AS Value;
+-------+
| Value |
+-------+
| 64    |
+-------+
Проверьте, установлена ли опция, в противном случае назначьте результат IFNULL(...) (использующий значение из таблицы sys_config):
mysql> SET @sys.statement_truncate_len =
    -> IFNULL(@sys.statement_truncate_len,
    ->    sys.sys_get_config('statement_truncate_len', 64));
Пример блока IF (...) THEN ... END IF;: Проверьте, установлена ли опция, в противном случае назначьте значение из таблицы sys_config:
IF (@sys.statement_truncate_len IS NULL) THEN
   SET @sys.statement_truncate_len = sys.sys_get_config('statement_truncate_len', 64);
END IF;

24.4.5.20. Функция version_major()

Эта функция возвращает главную версию сервера MySQL.

Параметры

Нет.

Возвращаемое значение

TINYINT UNSIGNED.

Пример
mysql> SELECT VERSION(), version_major();
+---------------------+-----------------+
| VERSION()           | version_major() |
+---------------------+-----------------+
| 8.0.1-dmr-debug-log | 8               |
+---------------------+-----------------+

24.4.5.21. Функция version_minor()

Эта функция возвращает младшую версию сервера MySQL.

Параметры

Нет.

Возвращаемое значение

TINYINT UNSIGNED.

Пример
mysql> SELECT VERSION(), version_minor();
+---------------------+-----------------+
| VERSION()           | version_minor() |
+---------------------+-----------------+
| 8.0.1-dmr-debug-log | 0               |
+---------------------+-----------------+

24.4.5.22. Функция version_patch()

Эта функция возвращает версию выпуска сервера MySQL.

Параметры

Нет.

Возвращаемое значение

TINYINT UNSIGNED.

Пример
mysql> SELECT VERSION(), version_patch();
+---------------------+-----------------+
| VERSION()           | version_patch() |
+---------------------+-----------------+
| 8.0.1-dmr-debug-log | 1               |
+---------------------+-----------------+