[MySQL] Performance Schema 모니터링 테이블 - Connection 및 Connection Attribute 테이블

■ Connection 테이블

클라이언트가 MySQL 서버에 연결하면 특정 사용자 이름과 특정 호스트에서 연결됩니다. Performance Schema 이러한 연결에 대한 통계를 제공하고 다음 테이블 사용하여 계정 (사용자 호스트 조합) 사용자 이름 호스트 이름별로 개별적으로 추적합니다.

accounts : 클라이언트 계정당 연결 통계

hosts : 클라이언트 호스트 이름당 연결 통계

users : 클라이언트 사용자 이름별 연결 통계

 

연결 테이블에서 계정의 의미는 사용자 호스트 값의 조합을 의미한다는 점에서 mysql시스템 데이터베이스의 MySQL grant tables(권한부여 테이블)에서의 의미와 유사합니다.

grant tables 경우 계정의 호스트 부분이 패턴이 있는 반면 성능 스키마 테이블의 경우 호스트값이 항상 특정 패턴 호스트 이름이라는 점이 다릅니다.

 

연결 테이블에는 통계의 기반이 되는 추적값당 현재 연결수를 추적하는 CURRENT_CONNECTIONS TOTAL_CONNECTIONS 컬럼이 있습니다. 표는 추적 값에 사용하는 내용이 다릅니다. 계정 테이블에는 사용자 호스트 조합 연결을 추적하는 USER HOST 컬럼이 있습니다. 사용자 호스트 테이블에는 사용자 이름과 호스트 이름별로 연결을 추적하기위한 각각 USER HOST컬럼이 있습니다.

 

성능 스키마는 또한 USER HOST컬럼 값이 NULL 행을 사용하여 인증에 실패한 사용자 세션에 대한 내부 스레드 스레드를 계산합니다.

 

user1 user2라는 클라이언트가 각각 hosta hostb에서 한번 연결된다고 가정합니다. 성능 스키마는 다음과 같이 연결을 추적합니다.

- accounts 테이블에는 user1/hosta, user1/hostb, user2/hosta user2/hostb 계정 값에 대해 4개의 행이 있으며 행은 계정당 하나의 연결을 계산합니다.

- users 테이블에는 hosta hostb 대해 개의 행이 있으며 행은 호스트 이름당 개의 연결을 계산합니다.

- users 테이블에는 user1 user2 대해 개의 행이 있으며 행은 사용자 이름당 개의 연결을 계산합니다.

클라이언트가 연결되면 성능 스키마는 테이블에 적합한 추적 값을 사용하여 연결 테이블에서 적용되는 행을 결정합니다. 그러한 행이 없으면 하나가 추가됩니다. 그런 다음 성능 스키마는 해당 행의 CURRENT_CONNECTIONS TOTAL_CONNECTIONS 컬럼을 하나씩 증가시킵니다.

클라이언트 연결이 끊어지면 성능 스키마는 행의 CURRENT_CONNECTIONS컬럼을 하나씩 감소시키고 TOTAL_CONNECTIONS컬럼을 변경하지 않은 상태로 둡니다.

 

연결 테이블에는 TRUNCATE TABLE 허용됩니다. 다음과 같은 효과가 있습니다.

- 현재 연결이 없는 계정, 호스트 또는 사용자에 대한 행이 제거됩니다 (CURRENT_CONNECTIONS=0 ).

- 제거되지 않은 행은 현재 연결만 계산하도록 재설정됩니다. CURRENT_CONNECTIONS>0 행의 경우 TOTAL_CONNECTIONS CURRENT_CONNECTIONS 재설정됩니다.

- 연결 테이블에 의존하는 요약 테이블은 섹션의 뒷부분에서 설명하는 것처럼 암시적으로 잘립니다.

 

▶︎ accounts Table

accounts 테이블에는 MySQL서버에 연결된 계정에 대한 행이 있습니다. 계정에 대해 테이블은 현재 연결 수를 계산합니다. 테이블 크기는 서버 시작시 자동으로 조정됩니다.

테이블 크기를 명시적으로 설정하려면 서버 시작시 performance_schema_accounts_size 시스템 변수를 설정합니다. 계정 통계를 비활성화하려면이 변수를 0으로 설정합니다.

 

- USER

연결을위한 클라이언트 사용자 이름입니다. 내부 스레드 또는 인증에 실패한 사용자 세션의 경우 NULL입니다.

 

- HOST

클라이언트가 연결된 호스트입니다. 내부 스레드 또는 인증에 실패한 사용자 세션의 경우 NULL입니다.

 

- CURRENT_CONNECTIONS

계정의 현재 연결 수입니다.

 

- TOTAL_CONNECTIONS

계정의 연결 수입니다.

 

▶︎ hosts Table

- HOST

클라이언트가 연결된 호스트입니다. 내부 스레드 또는 인증에 실패한 사용자 세션의 경우 NULL입니다.

 

- CURRENT_CONNECTIONS

호스트의 현재 연결 수입니다.

 

- TOTAL_CONNECTIONS

호스트의 연결 수입니다.

 

▶︎ users Table

users 테이블에는 MySQL서버에 연결된 사용자에 대한 행이 있습니다. 사용자 이름에 대해 테이블은 현재 연결수를 계산합니다. 테이블 크기는 서버 시작시 자동으로 조정됩니다.

테이블 크기를 명시 적으로 설정하려면 서버 시작시 performance_schema_users_size 시스템 변수를 설정합니다. 사용자 통계를 비활성화하려면이 변수를 0으로 설정합니다.

 

- USER

연결을위한 클라이언트 사용자 이름입니다. 내부 스레드 또는 인증에 실패한 사용자 세션의 경우 NULL입니다.

 

- CURRENT_CONNECTIONS

사용자의 현재 연결 수입니다.

 

- TOTAL_CONNECTIONS

사용자의 연결 수입니다.

 

 

 

 

■ Connection Attribute 테이블

연결 속성은 애플리케이션 프로그램이 연결시 서버에 전달할 수있는 - 쌍입니다. libmysqlclient 클라이언트 라이브러리에 의해 구현된 C API 기반으로하는 애플리케이션의 경우

mysql_options() mysql_options4()함수가 연결 속성 세트를 정의합니다. 다른 MySQL 커넥터는 자체 속성 정의 방법을 제공할 있습니다.

 

다음 성능 스키마 테이블은 속성 정보를 표시합니다.

- session_account_connect_attrs : 현재 세션 세션 계정과 연관된 기타 세션에 대한 연결 속성

- session_connect_attrs : 모든 세션에 대한 연결 속성

 

밑줄(_) 시작하는 속성 이름은 내부용으로 예약되어 있으며 응용 프로그램에서 작성해서는 안됩니다. 규칙은 MySQL 애플리케이션 속성과 충돌하지 않고 새로운 속성을 도입하도록 허용하고 애플리케이션 프로그램이 내부 속성과 충돌하지 않는 자체 속성을 정의할 있도록 합니다.

 

사용 가능한 연결 속성

주어진 연결에서 수있는 연결 속성 세트는 플랫폼, 연결을 설정하는 사용되는 MySQL 커넥터 또는 클라이언트 프로그램과 같은 요인에 따라 다릅니다.

 

libmysqlclient 클라이언트 라이브러리는 다음 속성을 설정합니다.

+ _client_name : 클라이언트 이름 (클라이언트 라이브러리의 libmysql).

+ _client_version : 클라이언트 라이브러리 버전입니다.

+ _os : 운영 체제 ( : Linux, Win64).

+ _pid : 클라이언트 프로세스 ID.

+ _platform : 컴퓨터 플랫폼 ( : x86_64).

+ _thread : 클라이언트 스레드 ID (Windows에만 해당).

다른 MySQL 커넥터는 자체 연결 속성을 정의 있습니다.

 

MySQL Connector/J 다음 속성을 정의합니다.

+ _client_license : 커넥터 라이센스 유형.

+ _runtime_vendor : JRE (Java Runtime Environment) 공급 업체입니다.

+ _runtime_version : JRE (Java Runtime Environment) 버전.

 

MySQL Connector / NET 다음 속성을 정의합니다.

+ _client_version : 클라이언트 라이브러리 버전입니다.

+ _os : 운영 체제 ( : Linux, Win64).

+ _pid : 클라이언트 프로세스 ID.

+ _platform : 컴퓨터 플랫폼 ( : x86_64).

+ _program_name : 클라이언트 이름.

+ _thread : 클라이언트 스레드 ID (Windows에만 해당).

 

PHP 컴파일 방법에 따라 달라지는 속성을 정의합니다.

+ libmysqlclient 사용하여 컴파일 : 앞에서 설명한 표준 libmysqlclient 속성.

+ mysqlnd 사용하여 컴파일 : 오직 mysqlnd값을 가진 _client_name 속성.

 

많은 MySQL 클라이언트 프로그램은 클라이언트 이름과 동일한 값으로 program_name 속성을 설정합니다.

예를 들어 mysqladmin mysqldump program_name 각각 mysqladmin mysqldump 설정합니다.

 

일부 MySQL 클라이언트 프로그램은 추가 속성을 정의합니다.

+ mysqlbinlog :

* _client_role : binary_log_listener

 

+ 복제본 연결 :

* program_name : mysqld

* _client_role : binary_log_listener

* _client_replication_channel_name : 채널 이름.

 

+ FEDERATED 스토리지 엔진 연결 :

* program_name : mysqld

* _client_role : federated_storage

 

연결 속성 제한

클라이언트에서 서버로 전송되는 연결 속성 데이터의 양에는 제한이 있습니다.

+ 연결 시간 전에 클라이언트가 부과하는 고정 제한입니다.

+ 연결시 서버에서 부과하는 고정 제한입니다.

+ 연결시 성능 스키마에 의해 부과되는 구성 가능한 제한입니다.

 

C API 사용하여 시작된 연결의 경우 libmysqlclient 라이브러리는 클라이언트측 연결 속성 데이터의 크기에 64KB 제한을 적용합니다.

제한을 초과하는 mysql_options() 호출은 CR_INVALID_PARAMETER_NO 오류를 생성합니다. 다른 MySQL 커넥터는 연결 속성 데이터를 서버로 전송할 있는 양에 대해 자체 클라이언트측 제한을 부과할 있습니다.

 

서버 측에서 연결 속성 데이터에 대한 다음 크기 검사가 발생합니다.

+ 서버는 허용 수있는 연결 속성 데이터의 크기를 64KB 제한합니다. 클라이언트가 64KB 이상의 속성 데이터를 보내려고하면 서버는 연결을 거부합니다.

+ 허용된 연결의 경우 성능 스키마는 performance_schema_session_connect_attrs_size 시스템 변수의 값에 대해 집계 속성 크기를 확인합니다. 속성 크기가 값을 초과하면 다음 조치가 수행됩니다.

- 성능 스키마는 특성 데이터를 자르고 특성 잘림이 발생한 연결 수를 나타내는 Performance_schema_session_connect_attrs_lost 상태 변수를 증가시킵니다.

- 성능 스키마는 log_error_verbosity 시스템 변수가 1보다 경우 오류 로그에 메시지를 기록합니다.

[Warning] Connection attributes of length N were truncated

 

▶︎ session_account_connect_attrs 테이블

애플리케이션 프로그램은 연결시 서버로 전달할 - 연결 속성을 제공 있습니다.

session_account_connect_attrs 테이블에는 현재 세션 세션 계정과 연관된 기타 세션에 대한 연결 속성만 포함됩니다. 모든 세션에 대한 연결 속성을 보려면 session_connect_attrs 테이블을 사용합니다.

 

session_account_connect_attrs 테이블에는 다음 컬럼이 있습니다.

- PROCESSLIST_ID

세션의 연결 식별자입니다.

 

- ATTR_NAME

속성 이름입니다.

 

- ATTR_VALUE

속성 값입니다.

 

- ORDINAL_POSITION

속성이 연결 속성 세트에 추가 순서입니다.

 

session_account_connect_attrs 테이블에는 TRUNCATE TABLE 허용되지 않습니다.

 

▶︎ session_connect_attrs 테이블

애플리케이션 프로그램은 연결시 서버로 전달할 - 연결 속성을 제공할 있습니다.

session_connect_attrs 테이블은 모든 세션에 대한 연결 속성을 포함합니다. 현재 세션 세션 계정과 연관된 다른 세션에 대한 연결 속성만 보려면 session_account_connect_attrs 테이블을 사용합니다.

 

session_connect_attrs 테이블에는 다음 컬럼이 있습니다.

- PROCESSLIST_ID

세션의 연결 식별자입니다.

 

- ATTR_NAME

속성 이름입니다.

 

- ATTR_VALUE

속성 값입니다.

 

- ORDINAL_POSITION

속성이 연결 속성 세트에 추가된 순서입니다.

 

session_connect_attrs 테이블에는 TRUNCATE TABLE 허용되지 않습니다.

 

▣ Performance Schema 목차.

[MySQL] Performance Schema 소개 및 사용방법

 

[MySQL] Performance Schema 소개 및 사용방법

■ Performance Schema 소개 MySQL 성능 스키마는 낮은 수준에서 MySQL 서버 실행을 모니터링하는 기능입니다. 성능 스키마에는 다음과 같은 특성이 있습니다. - 성능 스키마는 런타임에 서버의 내부 실

myinfrabox.tistory.com

[MySQL] Performance Schema 상태 모니터링

 

[MySQL] Performance Schema 상태 모니터링

■ performance schema 상태 모니터링. 다음과 같은 쿼리로 performance schema의 상태를 확인할 수 있습니다. mysql> SHOW STATUS LIKE 'perf%'; +-----------------------------------------------+-------+ | V..

myinfrabox.tistory.com

[MySQL] Performance Schema 설정 테이블 - Setup 및 Instance 테이블

 

[MySQL] Performance Schema 설정 테이블 - Setup 및 Instance 테이블

■ Setup Tables setup_actors : 새로운 포그라운드 스레드(foreground threads : 접속 클라이언트 혹은 서버)에 대한 모니터링을 초기화하는 방법 setup_consumers : 이벤트 정보를 보내고 저장할 수 있는 대상 s..

myinfrabox.tistory.com

[MySQL] Performance Schema 모니터링 테이블 - Wait Event 및 Lock 테이블

 

[MySQL] Performance Schema 모니터링 테이블 - Wait Event 및 Lock 테이블

■ Wait Event 테이블 종류 성능 스키마 도구는 시간이 걸리는 이벤트를 대기합니다. 이벤트 계층 구조 내에서 대기 이벤트는 트랜잭션 이벤트 내에 중첩되는 명령문 이벤트 내에 중첩되는 스테이

myinfrabox.tistory.com

[MySQL] Performance Schema 모니터링 테이블 - Stage Event 테이블

 

[MySQL] Performance Schema 모니터링 테이블 - Stage Event 테이블

■ Stage Event 테이블 성능 스키마 단계는 명령문 구문 분석, 테이블 열기 또는 파일 정렬 작업 수행과 같은 명령 실행 프로세스 중 단계입니다. 스테이지는 SHOW PROCESSLIST에 의해 표시되거나 INFORMATI

myinfrabox.tistory.com

 

[MySQL] Performance Schema 모니터링 테이블 - Statement Event 테이블

 

[MySQL] Performance Schema 모니터링 테이블 - Statement Event 테이블

■ Statement Event 테이블 성능 스키마 도구 명령문 실행. 명령문 이벤트는 이벤트 계층 구조의 높은 수준에서 발생합니다. 이벤트 계층 구조 내에서 대기 이벤트는 트랜잭션 이벤트 내에 중첩되는

myinfrabox.tistory.com

[MySQL] Performance Schema 모니터링 테이블 - Transaction 테이블

 

[MySQL] Performance Schema 모니터링 테이블 - Transaction 테이블

■ Transaction 테이블 성능 스키마는 트랜잭션을 계측합니다. 이벤트 계층 구조 내에서 대기 이벤트는 트랜잭션 이벤트 내에 중첩되는 명령문 이벤트 내에 중첩되는 스테이지 이벤트 내에 중첩됩

myinfrabox.tistory.com

[MySQL] Performance Schema 모니터링 테이블 - Connection 및 Connection Attribute 테이블

 

[MySQL] Performance Schema 모니터링 테이블 - Connection 및 Connection Attribute 테이블

■ Connection 테이블 클라이언트가 MySQL 서버에 연결하면 특정 사용자 이름과 특정 호스트에서 연결됩니다. 성능 스키마는 이러한 연결에 대한 통계를 제공하고 다음 표를 사용하여 계정 (사용자

myinfrabox.tistory.com

[MySQL] Performance Schema 모니터링 테이블 - User, 시스템, 상태 및 기타 테이블

 

[MySQL] Performance Schema 모니터링 테이블 - User, 시스템, 상태 및 기타 테이블

■ User-Defined Variable 테이블 성능 스키마는 사용자 정의 변수를 노출하는 user_variables_by_thread 테이블을 제공합니다. 이들은 특정 세션 내에서 정의된 변수이며 이름 앞에 @문자를 포함합니다. user_v

myinfrabox.tistory.com

[MySQL] Performance Schema 모니터링 테이블 - Summary(요약) 테이블

 

[MySQL] Performance Schema 모니터링 테이블 - Summary(요약) 테이블

■ Summary(요약) 테이블 ▶︎ objects_summary_global_by_type 테이블 성능 스키마는 개체 대기 이벤트를 집계하기 위해 objects_summary_global_by_type 테이블을 유지합니다. 예제 개체 대기 이벤트 요약 정보..

myinfrabox.tistory.com

[MySQL] Performance Schema 모니터링 테이블 - Replication 테이블

 

[MySQL] Performance Schema 모니터링 테이블 - Replication 테이블

■ Replication 테이블 성능 스키마는 복제 정보를 노출하는 테이블을 제공합니다. 이는 SHOW SLAVE STATUS 문에서 사용할 수있는 정보와 비슷하지만 테이블 형식으로 표현하는 것이 더 접근하기 쉽고

myinfrabox.tistory.com

 

Designed by JB FACTORY