25.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_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 |
+------------------------------------------------------+
Для получения подробной информации об отдельных сводных таблицах подключений, обратитесь к разделу, описывающему таблицы для суммируемого типа события:
Сводки событий ожидания: Раздел 25.12.15.1, “Сводки событий ожидания”
Сводки событий этапа: Раздел 25.12.15.2, “Сводки событий этапа”
Сводки событий операторов: Раздел 25.12.15.3, “Сводки событий операторов”
Сводки событий транзакций: Раздел 25.12.15.4, “Сводки событий транзакций”
Сводки событий памяти: Раздел 25.12.15.9, “Сводки событий памяти”
TRUNCATE TABLE разрешено для сводных таблиц подключений. Оно удаляет строки для учётных записей, хостов или пользователей без подключений и сбрасывает сводные столбцы в ноль для оставшихся строк. Кроме того, каждая сводная таблица, агрегированная по учётной записи, хосту, пользователю или потоку, неявно усекается при усечении таблицы подключений, от которой она зависит. В следующей таблице описаны взаимосвязи между усечением таблицы подключений и неявно усекаемыми таблицами.
Таблица 25.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.