Loading...
MySQL 9.5 Reference Manual 9.5의 29.12.8 Performance Schema Connection Tables의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
29.12.8.1 The accounts Table 29.12.8.2 The hosts Table 29.12.8.3 The users Table
클라이언트가 MySQL 서버에 연결할 때, 특정 사용자 이름과 특정 호스트에서 연결합니다. Performance Schema는 이러한 커넥션에 대한 통계를 제공하며, account(사용자와 호스트 조합)별뿐만 아니라 사용자 이름 및 호스트 이름별로 별도로 다음과 같은 테이블을 사용하여 추적합니다:
커넥션 테이블에서 “account”의 의미는 MySQL grant 테이블에서의 의미와 유사한데, 이 용어가 사용자와 호스트 값의 조합을 나타낸다는 점에서 그렇습니다. 둘의 차이점은 grant 테이블에서는 account의 호스트 부분이 패턴일 수 있는 반면, Performance Schema 테이블에서는 호스트 값이 항상 구체적인 비패턴 호스트 이름이라는 점입니다.
각 커넥션 테이블에는 CURRENT_CONNECTIONS와 TOTAL_CONNECTIONS 컬럼이 있어, 해당 통계가 기반하고 있는 “tracking value”별 현재 및 총 커넥션 개수를 추적합니다. 각 테이블은 서로 다른 tracking value를 사용합니다.
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 account 값에 대해 네 개의 로우가 있으며, 각 로우는 account별로 하나의 커넥션을 카운트합니다.
hosts 테이블에는
hosta와 hostb에 대한 두 개의 로우가 있으며, 각 로우는 호스트 이름별로 두 개의 커넥션을 카운트합니다.
users 테이블에는
user1과 user2에 대한 두 개의 로우가 있으며, 각 로우는 사용자 이름별로 두 개의 커넥션을 카운트합니다.
클라이언트가 연결하면, Performance Schema는 각 커넥션 테이블마다 해당 테이블에 적합한 tracking value를 사용하여 어떤 로우가 적용되는지 결정합니다. 해당 로우가 없으면 하나를 추가합니다. 그런 다음 Performance Schema는 그 로우의 CURRENT_CONNECTIONS와 TOTAL_CONNECTIONS 컬럼을 1씩 증가시킵니다.
클라이언트가 연결을 끊으면, Performance Schema는 해당 로우의 CURRENT_CONNECTIONS 컬럼을 1 감소시키고, TOTAL_CONNECTIONS 컬럼은 변경하지 않습니다.
TRUNCATE TABLE은 커넥션 테이블에 대해 허용됩니다. 이 스테이트먼트는 다음과 같은 효과를 가집니다:
현재 커넥션이 없는 account, host, 또는 user에 대한 로우는 제거됩니다 (CURRENT_CONNECTIONS = 0인 로우).
제거되지 않은 로우는 현재 커넥션만 카운트하도록 리셋됩니다:
CURRENT_CONNECTIONS > 0인 로우의 TOTAL_CONNECTIONS 값은 CURRENT_CONNECTIONS로 리셋됩니다.
커넥션 테이블에 의존하는 요약 테이블은 이 절의 뒷부분에서 설명하는 대로 암묵적으로 truncate됩니다.
Performance Schema는 다양한 이벤트 타입에 대해 account, host, 또는 user별로 커넥션 통계를 집계하는 요약 테이블을 유지합니다. 이러한 테이블의 이름에는 _summary_by_account, _summary_by_host, _summary_by_user가 포함됩니다. 이를 식별하려면 다음 쿼리를 사용하십시오:
1mysql> SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES 2 WHERE TABLE_SCHEMA = 'performance_schema' 3 AND TABLE_NAME REGEXP '_summary_by_(account|host|user)' 4 ORDER BY TABLE_NAME; 5+------------------------------------------------------+ 6| TABLE_NAME | 7+------------------------------------------------------+ 8| events_errors_summary_by_account_by_error | 9| events_errors_summary_by_host_by_error | 10| events_errors_summary_by_user_by_error | 11| events_stages_summary_by_account_by_event_name | 12| events_stages_summary_by_host_by_event_name | 13| events_stages_summary_by_user_by_event_name | 14| events_statements_summary_by_account_by_event_name | 15| events_statements_summary_by_host_by_event_name | 16| events_statements_summary_by_user_by_event_name | 17| events_transactions_summary_by_account_by_event_name | 18| events_transactions_summary_by_host_by_event_name | 19| events_transactions_summary_by_user_by_event_name | 20| events_waits_summary_by_account_by_event_name | 21| events_waits_summary_by_host_by_event_name | 22| events_waits_summary_by_user_by_event_name | 23| memory_summary_by_account_by_event_name | 24| memory_summary_by_host_by_event_name | 25| memory_summary_by_user_by_event_name | 26+------------------------------------------------------+
각 커넥션 요약 테이블에 대한 세부 정보는 요약된 이벤트 타입의 테이블을 설명하는 섹션을 참조하십시오:
Wait 이벤트 요약: Section 29.12.20.1, “Wait Event Summary Tables”
Stage 이벤트 요약: Section 29.12.20.2, “Stage Summary Tables”
Statement 이벤트 요약: Section 29.12.20.3, “Statement Summary Tables”
Transaction 이벤트 요약: Section 29.12.20.5, “Transaction Summary Tables”
Memory 이벤트 요약: Section 29.12.20.10, “Memory Summary Tables”
Error 이벤트 요약: Section 29.12.20.11, “Error Summary Tables”
TRUNCATE TABLE은 커넥션 요약 테이블에 대해 허용됩니다. 이 스테이트먼트는 커넥션이 없는 account, host, 또는 user에 대한 로우를 제거하고, 나머지 로우에 대해서는 요약 컬럼을 0으로 리셋합니다. 추가로, account, host, user, 또는 thread별로 집계되는 각 요약 테이블은, 해당 요약 테이블이 의존하는 커넥션 테이블이 truncate될 때 암묵적으로 truncate됩니다. 다음 테이블은 커넥션 테이블의 truncation과 암묵적으로 truncate되는 테이블 간의 관계를 설명합니다.
Table 29.2 Implicit Effects of Connection Table Truncation
| Property | Value |
|---|---|
| Truncated Connection Table | Implicitly Truncated Summary Tables |
accounts | 이름에 _summary_by_account,<br> _summary_by_thread를 포함하는 테이블 |
hosts | 이름에 _summary_by_account,<br> _summary_by_host,<br> _summary_by_thread를 포함하는 테이블 |
users | 이름에 _summary_by_account,<br> _summary_by_user,<br> _summary_by_thread를 포함하는 테이블 |
_summary_global 요약 테이블을 truncate하면 해당하는 커넥션 및 thread 요약 테이블도 암묵적으로 truncate됩니다. 예를 들어,
events_waits_summary_global_by_event_name을 truncate하면 account, host, user, 또는 thread별로 집계되는 wait 이벤트 요약 테이블이 암묵적으로 truncate됩니다.
29.12.7 Performance Schema Transaction Tables
29.12.9 Performance Schema Connection Attribute Tables