29.12.8 Таблицы подключений Performance Schema
При подключении клиента к серверу MySQL, он подключается под определенным именем пользователя и с определенного хоста. Performance Schema предоставляет статистику о таких подключениях, отслеживая их по каждой учетной записи (комбинация пользователя и хоста), а также отдельно по имени пользователя и имени хоста, используя эти таблицы:
Значение «учетной записи» в таблицах подключений аналогично ее значению в таблицах предоставления прав MySQL в базе данных системы mysql, в том смысле, что этот термин относится к комбинации значений пользователя и хоста. Они отличаются тем, что для таблиц предоставления прав часть хоста в учетной записи может быть шаблоном, тогда как для таблиц Performance Schema значение хоста всегда является конкретным именем хоста без шаблонов.
Каждая таблица подключений имеет столбцы CURRENT_CONNECTIONS и TOTAL_CONNECTIONS для отслеживания текущего и общего количества подключений по «значению отслеживания», на котором основана статистика. Таблицы различаются тем, что они используют для значения отслеживания. Таблица accounts имеет столбцы USER и HOST для отслеживания подключений по комбинации пользователя и хоста. Таблицы users и hosts имеют столбцы USER и HOST соответственно для отслеживания подключений по имени пользователя и имени хоста.
Performance Schema также подсчитывает внутренние потоки и потоки для пользовательских сессий, которые не смогли пройти аутентификацию, используя строки со значениями столбцов USER и HOST равными NULL.
Предположим, что клиенты с именами user1 и user2 подключаются по одному разу с hosta и hostb. Performance Schema отслеживает подключения следующим образом:
Таблица
accountsимеет четыре строки для значений учетной записиuser1/hosta,user1/hostb,user2/hostaиuser2/hostb, каждая строка считает одно подключение на учетную запись.Таблица
hostsимеет две строки дляhostaиhostb, каждая строка считает два подключения по имени хоста.Таблица
usersимеет две строки дляuser1иuser2, каждая строка считает два подключения по имени пользователя.
Когда клиент подключается, Performance Schema определяет, какая строка в каждой таблице подключений применима, используя значение отслеживания, соответствующее каждой таблице. Если такой строки нет, она добавляется. Затем Performance Schema увеличивает на единицу столбцы CURRENT_CONNECTIONS и TOTAL_CONNECTIONS в этой строке.
Когда клиент отключается, Performance Schema уменьшает на единицу столбец CURRENT_CONNECTIONS в строке и оставляет столбец TOTAL_CONNECTIONS без изменений.
Разрешено использовать TRUNCATE TABLE для таблиц подключений. Это имеет следующие последствия:
Удаляются строки для учетных записей, хостов или пользователей, у которых нет текущих подключений (строки со значением
CURRENT_CONNECTIONS = 0).Неудаленные строки сбрасываются, чтобы учитывать только текущие подключения: для строк со значением
CURRENT_CONNECTIONS > 0,TOTAL_CONNECTIONSсбрасывается до значенияCURRENT_CONNECTIONS.Сводные таблицы, зависящие от таблицы подключений, неявно усекаются, как описано позже в этом разделе.
Performance Schema поддерживает сводные таблицы, которые агрегируют статистику подключений для различных типов событий по учетной записи, хосту или пользователю. В названиях этих таблиц есть _summary_by_account, _summary_by_host или _summary_by_user. Чтобы определить их, используйте следующий запрос:
mysql> SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'performance_schema'
AND TABLE_NAME REGEXP '_summary_by_(account|host|user)'
ORDER BY TABLE_NAME;
+------------------------------------------------------+
| TABLE_NAME |
+------------------------------------------------------+
| events_errors_summary_by_account_by_error |
| events_errors_summary_by_host_by_error |
| events_errors_summary_by_user_by_error |
| events_stages_summary_by_account_by_event_name |
| events_stages_summary_by_host_by_event_name |
| events_stages_summary_by_user_by_event_name |
| events_statements_summary_by_account_by_event_name |
| events_statements_summary_by_host_by_event_name |
| events_statements_summary_by_user_by_event_name |
| events_transactions_summary_by_account_by_event_name |
| events_transactions_summary_by_host_by_event_name |
| events_transactions_summary_by_user_by_event_name |
| events_waits_summary_by_account_by_event_name |
| events_waits_summary_by_host_by_event_name |
| events_waits_summary_by_user_by_event_name |
| memory_summary_by_account_by_event_name |
| memory_summary_by_host_by_event_name |
| memory_summary_by_user_by_event_name |
+------------------------------------------------------+
Для получения подробностей об отдельных сводных таблицах подключений обратитесь к разделу, описывающему таблицы для обобщенного типа события:
Сводки событий ожидания: Раздел 29.12.20.1, «Сводные таблицы событий ожидания»
Сводки событий стадии: Раздел 29.12.20.2, «Сводные таблицы стадий»
Сводки событий оператора: Раздел 29.12.20.3, «Сводные таблицы операторов»
Сводки событий транзакций: Раздел 29.12.20.5, «Сводные таблицы транзакций»
Сводки событий памяти: Раздел 29.12.20.10, «Сводные таблицы памяти»
Сводки событий ошибок: Раздел 29.12.20.11, «Сводные таблицы ошибок»
Разрешено использовать TRUNCATE TABLE для сводных таблиц подключений. Она удаляет строки для учетных записей, хостов или пользователей без подключений и сбрасывает сводные столбцы в ноль для оставшихся строк. Кроме того, каждая сводная таблица, которая агрегируется по учетной записи, хосту, пользователю или потоку, неявно усекается путем усечения таблицы подключений, от которой она зависит. В следующей таблице описываются отношения между усечением таблицы подключений и неявно усекаемыми таблицами.
Таблица 29.2 Неявные последствия усечения таблицы подключений
| Усеченная таблица подключений | Неявно усеченные сводные таблицы |
|---|---|
accounts | Таблицы с именами, содержащими _summary_by_account, _summary_by_thread
|
hosts | Таблицы с именами, содержащими _summary_by_account, _summary_by_host, _summary_by_thread
|
users | Таблицы с именами, содержащими _summary_by_account, _summary_by_user, _summary_by_thread
|
Усечение сводной таблицы _summary_global также неявно усекает соответствующие сводные таблицы подключений и потоков. Например, усечение events_waits_summary_global_by_event_name неявно усекает сводные таблицы событий ожидания, агрегированные по учетной записи, хосту, пользователю или потоку.
© 2025 Oracle
Licensed under the GPLv2 License.