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

■ Stage Event 테이블

Performance Schema 계측기 도구중 단계(Stage)는 명령문 구문 분석, 테이블 열기 또는 파일 정렬 작업 수행과 같은 명령 실행 프로세스를 보여줍니다. 

스테이지는 SHOW PROCESSLIST 의해 표시되거나 INFORMATION_SCHEMA.PROCESSLIST 테이블에 표시되는 스레드 상태에 해당합니다. 상태 값이 변경되면 Stage가 시작되고 끝납니다.

이벤트 계층 구조 내에서 대기(Wait) 이벤트,트랜잭션(Transaction) 이벤트, 명령문(Statement) 이벤트와 같은 레벨에 존재합니다.

 

설정방법

다음과 같은 계측기들이 있습니다. 원하는 계측기에 ENABLED 컬럼을 YES, 타이머 정보까지 원한다면 TIMED컬럼을 YES 변경합니다.

mysql> SELECT *
       FROM performance_schema.setup_instruments
       WHERE NAME LIKE 'stage/%';
+----------------------------------------------------+---------+-------+
| NAME                                               | ENABLED | TIMED |
+----------------------------------------------------+---------+-------+
| stage/sql/After create                             | NO      | NO    |
| stage/sql/allocating local table                   | NO      | NO    |
| stage/sql/altering table                           | NO      | NO    |
| stage/sql/committing alter table to storage engine | NO      | NO    |
| stage/sql/Changing master                          | NO      | NO    |
| stage/sql/Checking master version                  | NO      | NO    |
| stage/sql/checking permissions                     | NO      | NO    |
| stage/sql/checking privileges on cached query      | NO      | NO    |
| stage/sql/checking query cache for query           | NO      | NO    |
| stage/sql/cleaning up                              | NO      | NO    |
| stage/sql/closing tables                           | NO      | NO    |
| stage/sql/Connecting to master                     | NO      | NO    |
| stage/sql/converting HEAP to MyISAM                | NO      | NO    |
| stage/sql/Copying to group table                   | NO      | NO    |
| stage/sql/Copying to tmp table                     | NO      | NO    |
| stage/sql/copy to tmp table                        | NO      | NO    |
| stage/sql/Creating sort index                      | NO      | NO    |
| stage/sql/creating table                           | NO      | NO    |
| stage/sql/Creating tmp table                       | NO      | NO    |
.......
+----------------------------------------------------+---------+-------+

 

컨슈머 테이블에서 해당 statement 이벤트를 YES 변경합니다.

mysql> SELECT *
       FROM performance_schema.setup_consumers
       WHERE NAME LIKE 'events_stages%';
+----------------------------+---------+
| NAME                       | ENABLED |
+----------------------------+---------+
| events_stages_current      | NO      |
| events_stages_history      | NO      |
| events_stages_history_long | NO      |
+----------------------------+---------+

 

stage 타이머에 대해 TIMER_NAME 원하는 시간단위로 변경합니다.

mysql> SELECT *
       FROM performance_schema.setup_timers
       WHERE NAME = 'stage';
+-------+------------+
| NAME  | TIMER_NAME |
+-------+------------+
| stage | NANOSECOND |
+-------+------------+

 

 

- Stage Event 진행정보

Performance Schema 단계 이벤트 테이블에는 행에 대한 단계 진행률 표시기를 함께 제공하는 개의 컬럼이 있습니다.

1. WORK_COMPLETED : 단계에 대해 완료된 작업 단위

2. WORK_ESTIMATED : 단계에 대해 예상되는 작업 단위

 

기기에 대한 진행 정보가 제공되지 않으면 컬럼은 NULL입니다. 가능한 경우 정보의 해석은 전적으로 기기 구현에 달려 있습니다. 성능 스키마 테이블은 진행률 데이터를 저장하는 컨테이너를 제공하지만 메트릭 자체의 의미에 대해서는 가정하지 않습니다.

1. 작업 단위는 처리 바이트, , 파일 또는 테이블수와 같이 실행 중에 시간이 지남에 따라 증가하는 정수 메트릭입니다. 특정 기기에 대한 작업 단위의 정의는 데이터를 제공하는 기기 코드에 맡겨집니다.

2. WORK_COMPLETED 값은 계측 코드에 따라 번에 하나 또는 여러 단위를 늘릴 있습니다.

3. WORK_ESTIMATED 값은 계측 코드에 따라 단계 중에 변경 있습니다.

 

스테이지 이벤트 진행률 표시기에 대한 계측은 다음 동작중 하나를 구현할 있습니다.

1. 진행 도구 없음

진행 데이터가 제공되지 않는 가장 일반적인 경우입니다. WORK_COMPLETED WORK_ESTIMATED 컬럼은 모두 NULL입니다.

2. 무제한 진행 도구

WORK_COMPLETED 컬럼만 의미가 있습니다. 0 표시하는 WORK_ESTIMATED 컬럼에는 데이터가 제공되지 않습니다.

모니터링 세션에 대한 events_stages_current 테이블을 쿼리하여 모니터링 애플리케이션은 지금까지 수행 작업량을보고 있지만 단계가 거의 완료되었는지 여부는보고 없습니다.

현재는 이와 같이 계측된 스테이지가 없습니다.

3. 제한된 진행 도구

WORK_COMPLETED WORK_ESTIMATED 컬럼은 모두 의미가 있습니다.

이러한 유형의 진행률 표시기는 나중에 설명하는 테이블 복사 도구와 같이 정의된 완료 기준이 있는 작업에 적합합니다. 모니터링된 세션에 대한 events_stages_current 테이블을 쿼리하여 모니터링 애플리케이션은 지금까지 수행된 작업의 양을보고 있으며 WORK_COMPLETED/WORK_ESTIMATED 비율을 계산하여 단계의 전체 완료 백분율을 보고할 있습니다.

 

stage/sql/copy to tmp 테이블 기기는 진행률 표시기가 작동하는 방식을 보여줍니다.

ALTER TABLE 문을 실행하는 동안 stage/sql/copy to tmp table stage 사용되며 단계는 복사 데이터의 크기에 따라 잠재적으로 오랫동안 실행될 있습니다.

 

테이블 복사 태스크에는 정의된 종료(모든 행이 복사 ) 있고 stage/sql/copy to tmp 테이블 스테이지는 제한된 진행 정보를 제공하도록 계측됩니다.

사용된 작업 단위는 복사된 수이며 WORK_COMPLETED WORK_ESTIMATED 모두 의미가 있으며 해당 비율은 작업 완료율을 나타냅니다.

 

 

 

 

▶︎ events_stages_current : 스레드에 대한 현재 스테이지 이벤트.

events_stages_current 테이블에는 현재 단계 이벤트가 포함됩니다. 테이블은 스레드의 가장 최근 모니터링된 스테이지 이벤트의 현재 상태를 보여주는 스레드당 하나의 행을 저장하므로 테이블 크기를 구성하기위한 시스템 변수가 없습니다.

 

스테이지 이벤트 행을 포함하는 테이블 중에서 events_stages_current 가장 기본입니다. 스테이지 이벤트 행을 포함하는 다른 테이블은 현재 이벤트에서 논리적으로 파생됩니다.

예를 들어 events_stages_history events_stages_history_long 테이블은 각각 스레드당 최대 수까지 그리고 모든 스레드에 걸쳐 전역적으로 종료된 가장 최근의 스테이지 이벤트 모음입니다.

 

주요 컬럼 :

- THREAD_ID, EVENT_ID

이벤트와 연관된 스레드 이벤트가 시작될 스레드 현재 이벤트 번호. 함께 취해진 THREAD_ID EVENT_ID 값은 행을 고유하게 식별합니다. 행에 동일한 쌍이 없습니다.

 

- END_EVENT_ID

컬럼은 이벤트가 시작될 NULL 설정되고 이벤트가 종료 스레드 현재 이벤트 번호로 업데이트됩니다.

 

- EVENT_NAME

이벤트를 생성 계측기의 이름입니다. 이것은 setup_instruments 테이블의 NAME 값입니다.

 

- SOURCE

이벤트를 생성한 계측된 코드가 포함 소스 파일의 이름과 계측이 발생한 파일의 번호입니다. 이를 통해 소스를 확인하여 관련된 코드를 정확히 확인할 있습니다.

 

- TIMER_START, TIMER_END, TIMER_WAIT

이벤트 타이밍 정보. 값의 단위는 피코 (1 조분의 1 )입니다. TIMER_START TIMER_END 값은 이벤트 타이밍이 시작되고 종료 된시기를 나타냅니다. TIMER_WAIT 이벤트 경과 시간 (기간)입니다.

이벤트가 완료되지 않은 경우 TIMER_END 현재 타이머 값이고 TIMER_WAIT 지금까지 경과한 시간입니다(TIMER_END-TIMER_START).

TIMED=NO 계측기에서 이벤트가 생성되면 타이밍 정보가 수집되지 않고 TIMER_START, TIMER_END TIMER_WAIT 모두 NULL입니다.

 

- WORK_COMPLETED, WORK_ESTIMATED

이러한 컬럼은 이러한 정보를 생성하기 위해 구현된 기기에 대한 단계 진행 정보를 제공합니다.

WORK_COMPLETED 단계에 대해 완료된 작업 단위 수를 나타내고 WORK_ESTIMATED 단계에 대해 예상되는 작업 단위 수를 나타냅니다.

 

- NESTING_EVENT_ID

이벤트가 중첩되는 이벤트의 EVENT_ID 값입니다. 스테이지 이벤트의 중첩 이벤트는 일반적으로 명령문 이벤트입니다.

 

- NESTING_EVENT_TYPE

중첩 이벤트 유형입니다. 값은 TRANSACTION, STATEMENT, STAGE 또는 WAIT입니다.

 

계측기(setup_instruments 테이블)에서 설정한 계측기와 관련이 있습니다.

EVENT_NAME 컬럼에 계측기 이름이 나타납니다.

events_stages_current 테이블에는 TRUNCATE TABLE 허용됩니다. 행을 제거합니다.

 

▶︎ events_stages_history 테이블 : 스레드별로 종료 가장 최근의 스테이지 이벤트.

events_stages_history 테이블에는 스레드별로 종료된 N개의 가장 최근 스테이지 이벤트가 포함됩니다. 스테이지 이벤트는 종료될 때까지 테이블에 추가되지 않습니다.

테이블에 주어진 스레드에 대한 최대 수가 포함된 경우 해당 스레드에 대한 행이 추가될 가장 오래된 스레드 행이 삭제됩니다. 스레드가 종료되면 모든 행이 삭제됩니다.

성능 스키마는 서버 시작 중에 N값을 자동으로 조정합니다. 스레드당 수를 명시적으로 설정하려면 서버 시작시 performance_schema_events_stages_history_size 시스템 변수를 설정합니다.

 

▶︎ events_stages_history_long 테이블 : 전역 적으로 (모든 스레드에서) 종료 가장 최근의 스테이지 이벤트.

events_stages_history_long 테이블에는 모든 스레드에서 전역적으로 종료된 N개의 가장 최근 스테이지 이벤트가 포함됩니다.

스테이지 이벤트는 종료될 때까지 테이블에 추가되지 않습니다. 테이블이 가득차면 어느 스레드가 어느 행을 생성했는지에 관계없이 행이 추가될 가장 오래된 행이 삭제됩니다.

성능 스키마는 서버 시작 중에 N값을 자동으로 조정합니다. 테이블 크기를 명시적으로 설정하려면 서버 시작시 performance_schema_events_stages_history_long_size 시스템 변수를 설정합니다.

 

▶︎ Stage Summary 테이블

성능 스키마는 현재 최근 단계 이벤트를 수집하기위한 테이블을 유지하고 해당 정보를 요약 테이블에 집계합니다.

 

단계 이벤트 요약 정보의 :

mysql> SELECT *
       FROM performance_schema.events_stages_summary_global_by_event_name\G
...
*************************** 5. row ***************************
    EVENT_NAME: stage/sql/checking permissions
    COUNT_STAR: 57
SUM_TIMER_WAIT: 26501888880
MIN_TIMER_WAIT: 7317456
AVG_TIMER_WAIT: 464945295
MAX_TIMER_WAIT: 12858936792
...
*************************** 9. row ***************************
    EVENT_NAME: stage/sql/closing tables
    COUNT_STAR: 37
SUM_TIMER_WAIT: 662606568
MIN_TIMER_WAIT: 1593864
AVG_TIMER_WAIT: 17907891
MAX_TIMER_WAIT: 437977248
...

 

단계 요약 테이블에는 테이블이 이벤트를 집계하는 방법을 나타내는 하나 이상의 그룹화 컬럼이 있습니다. 이벤트 이름은 setup_instruments 테이블의 이벤트 장비 이름을 참조합니다.

+ events_stages_summary_by_account_by_event_name에는 EVENT_NAME, USER HOST 열이 있습니다. 행은 지정된 계정 (사용자 호스트 조합) 이벤트 이름에 대한 이벤트를 요약합니다.

+ events_stages_summary_by_host_by_event_name에는 EVENT_NAME HOST 컬럼이 있습니다. 행은 지정된 호스트 이벤트 이름에 대한 이벤트를 요약합니다.

+ events_stages_summary_by_thread_by_event_name에는 THREAD_ID EVENT_NAME 열이 있습니다. 행은 주어진 스레드 이벤트 이름에 대한 이벤트를 요약합니다.

+ events_stages_summary_by_user_by_event_name에는 EVENT_NAME USER 컬럼이 있습니다. 행은 주어진 사용자 이벤트 이름에 대한 이벤트를 요약합니다.

+ events_stages_summary_global_by_event_name에는 EVENT_NAME 컬럼이 있습니다. 행은 주어진 이벤트 이름에 대한 이벤트를 요약합니다.

 

단계 요약 테이블에는 집계된 (COUNT_STAR, SUM_TIMER_WAIT, MIN_TIMER_WAIT, AVG_TIMER_WAIT MAX_TIMER_WAIT) 포함된 요약 컬럼이 있습니다.

이러한 컬럼은 단계 요약 테이블이 events_waits_current 아닌 events_stages_current에서 이벤트를 집계한다는 점을 제외하고는 대기 이벤트 요약 테이블에 있는 동일한 이름의 컬럼과 유사합니다.

 

• Tuncate Table 허용 여부.

TRUNCATE TABLE 스테이지 요약 테이블에 허용됩니다. 다음과 같은 효과가 있습니다.

1. 계정, 호스트 또는 사용자별로 집계되지 않은 요약 테이블의 경우 잘림은 행을 제거하지 않고 요약 열을 0으로 재설정합니다.

2. 계정, 호스트 또는 사용자별로 집계 요약 테이블의 경우 잘림은 연결이없는 계정, 호스트 또는 사용자에 대한 행을 제거하고 나머지 행에 대해 요약 열을 0으로 재설정합니다.

또한 계정, 호스트, 사용자 또는 스레드별로 집계 단계 요약 테이블은 종속 연결 테이블의 절단 또는 events_stages_summary_global_by_event_name 절단에 의해 내재적으로 절단됩니다.

 

▣ 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