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

■ Summary(요약) 테이블

▶︎ objects_summary_global_by_type 테이블

성능 스키마는 개체 대기 이벤트를 집계하기 위해 objects_summary_global_by_type 테이블을 유지합니다.

예제 개체 대기 이벤트 요약 정보 :

mysql> SELECT * FROM performance_schema.objects_summary_global_by_type\G
...
*************************** 3. row ***************************
   OBJECT_TYPE: TABLE
 OBJECT_SCHEMA: test
   OBJECT_NAME: t
    COUNT_STAR: 3
SUM_TIMER_WAIT: 263126976
MIN_TIMER_WAIT: 1522272
AVG_TIMER_WAIT: 87708678
MAX_TIMER_WAIT: 258428280
...
*************************** 10. row ***************************
   OBJECT_TYPE: TABLE
 OBJECT_SCHEMA: mysql
   OBJECT_NAME: user
    COUNT_STAR: 14
SUM_TIMER_WAIT: 365567592
MIN_TIMER_WAIT: 1141704
AVG_TIMER_WAIT: 26111769
MAX_TIMER_WAIT: 334783032
...

 

objects_summary_global_by_type 테이블에는 테이블이 이벤트를 집계하는 방법을 나타내는 OBJECT_TYPE, OBJECT_SCHEMA OBJECT_NAME 그룹화 열이 있습니다. 행은 주어진 객체에 대한 이벤트를 요약합니다.

objects_summary_global_by_type에는 events_waits_summary_by_xxx 테이블과 동일한 요약 컬럼이 있습니다.

 

• Tuncate Table 허용 여부.

TRUNCATE TABLE 오브젝트 요약 테이블에 허용됩니다. 행을 제거하지 않고 요약 열을 0으로 재설정합니다.

 

▶︎ File I/O Summary(요약) 테이블

성능 스키마는 I/O 작업에 대한 정보를 집계하는 파일I/O 요약 테이블을 유지합니다.

mysql> SELECT * FROM performance_schema.file_summary_by_event_name\G
...
*************************** 2. row ***************************
               EVENT_NAME: wait/io/file/sql/binlog
               COUNT_STAR: 31
           SUM_TIMER_WAIT: 8243784888
           MIN_TIMER_WAIT: 0
           AVG_TIMER_WAIT: 265928484
           MAX_TIMER_WAIT: 6490658832
...
mysql> SELECT * FROM performance_schema.file_summary_by_instance\G
...
*************************** 2. row ***************************
                FILE_NAME: /var/mysql/share/english/errmsg.sys
               EVENT_NAME: wait/io/file/sql/ERRMSG
               EVENT_NAME: wait/io/file/sql/ERRMSG
    OBJECT_INSTANCE_BEGIN: 4686193384
               COUNT_STAR: 5
           SUM_TIMER_WAIT: 13990154448
           MIN_TIMER_WAIT: 26349624
           AVG_TIMER_WAIT: 2798030607
           MAX_TIMER_WAIT: 8150662536
...

 

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

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

- file_summary_by_instance에는 FILE_NAME, EVENT_NAME OBJECT_INSTANCE_BEGIN 컬럼이 있습니다. 행은 주어진 파일 이벤트 이름에 대한 이벤트를 요약합니다.

 

파일 I/O 요약 테이블에는 집계된 값을 포함하는 다음 요약 컬럼이 있습니다. 일부 컬럼은 일반적이며 세분화된 컬럼 값의 합계와 동일한 값을 갖습니다.

이러한 방식으로 하위 수준 컬럼을 합산하는 사용자 정의보기(user-defined views) 없이도 상위 수준의 집계를 직접 사용할 있습니다.

 

주요 컬럼

- COUNT_STAR, SUM_TIMER_WAIT, MIN_TIMER_WAIT, AVG_TIMER_WAIT, MAX_TIMER_WAIT

이러한 컬럼은 모든 I/O 작업을 집계합니다.

 

- COUNT_READ, SUM_TIMER_READ, MIN_TIMER_READ, AVG_TIMER_READ, MAX_TIMER_READ, SUM_NUMBER_OF_BYTES_READ

이러한 컬럼은 FGETS, FGETC, FREAD READ 포함한 모든 읽기 작업을 집계합니다.

 

- COUNT_WRITE, SUM_TIMER_WRITE, MIN_TIMER_WRITE, AVG_TIMER_WRITE, MAX_TIMER_WRITE, SUM_NUMBER_OF_BYTES_WRITE

이러한 컬럼은 FPUTS, FPUTC, FPRINTF, VFPRINTF, FWRITE PWRITE 포함한 모든 쓰기 작업을 집계합니다.

 

- COUNT_MISC, SUM_TIMER_MISC, MIN_TIMER_MISC, AVG_TIMER_MISC, MAX_TIMER_MISC

이러한 컬럼은 CREATE, DELETE, OPEN, CLOSE, STREAM_OPEN, STREAM_CLOSE, SEEK, TELL, FLUSH, STAT, FSTAT, CHSIZE, RENAME SYNC 포함한 다른 모든 I/O 작업을 집계합니다. 이러한 작업에는 바이트 수가 없습니다.

 

• Tuncate Table 허용 여부.

TRUNCATE TABLE 파일 I / O 요약 테이블에 허용됩니다. 행을 제거하지 않고 요약 열을 0으로 재설정합니다.

 

MySQL 서버는 파일에서 읽은 정보를 캐싱하여 I/O 작업을 방지하기 위해 여러 기술을 사용하므로 I/O 이벤트를 발생시킬 것으로 예상되는 명령문이 그렇게하지 않을 있습니다.

캐시를 플러시하거나 서버를 다시 시작하여 상태를 재설정하여 I/O 발생하는지 확인할 있습니다.

 

▶︎ table_io_waits_summary_by_table 테이블

table_io_waits_summary_by_table 테이블은 wait/io/table/sql/handler 계측기에서 생성 된대로 모든 테이블 I/O 대기 이벤트를 집계합니다. 그룹화는 테이블 기준입니다.

 

table_io_waits_summary_by_table 테이블에는 테이블이 이벤트를 집계하는 방법을 나타내는 OBJECT_TYPE, OBJECT_SCHEMA OBJECT_NAME 같은 그룹화 컬럼이 있습니다.

이러한 컬럼은 events_waits_current 테이블에서와 동일한 의미를 갖습니다. 행이 적용되는 테이블을 식별합니다.

 

table_io_waits_summary_by_table에는 집계된 값을 포함하는 다음 요약 컬럼이 있습니다. 컬럼 설명에 표시된대로 일부 컬럼은 일반적이며 세분화된 컬럼값의 합계와 동일한 값을 갖습니다.

예를 들어 모든 쓰기를 집계하는 컬럼에는 삽입, 업데이트 삭제를 집계하는 해당 컬럼의 합계가 포함됩니다. 이러한 방식으로 하위 수준 열을 합산하는 사용자 정의보기 없이도 상위 수준의 집계를 직접 사용할 있습니다.

 

주요 컬럼

- COUNT_STAR, SUM_TIMER_WAIT, MIN_TIMER_WAIT, AVG_TIMER_WAIT, MAX_TIMER_WAIT

이러한 컬럼은 모든 I/O 작업을 집계합니다. 해당하는 xxx_READ xxx_WRITE 컬럼의 합계와 동일합니다.

 

- COUNT_READ, SUM_TIMER_READ, MIN_TIMER_READ, AVG_TIMER_READ, MAX_TIMER_READ

이러한 컬럼은 모든 읽기 작업을 집계합니다. 해당 xxx_FETCH 열의 합계와 동일합니다.

 

- COUNT_WRITE, SUM_TIMER_WRITE, MIN_TIMER_WRITE, AVG_TIMER_WRITE, MAX_TIMER_WRITE

이러한 컬럼은 모든 쓰기 작업을 집계합니다. 해당하는 xxx_INSERT, xxx_UPDATE xxx_DELETE컬럼의 합계와 동일합니다.

 

- COUNT_FETCH, SUM_TIMER_FETCH, MIN_TIMER_FETCH, AVG_TIMER_FETCH, MAX_TIMER_FETCH

이러한 컬럼은 모든 가져 오기 작업을 집계합니다.

 

- COUNT_INSERT, SUM_TIMER_INSERT, MIN_TIMER_INSERT, AVG_TIMER_INSERT, MAX_TIMER_INSERT

이러한 컬럼은 모든 삽입 작업을 집계합니다.

 

- COUNT_UPDATE, SUM_TIMER_UPDATE, MIN_TIMER_UPDATE, AVG_TIMER_UPDATE, MAX_TIMER_UPDATE

이러한 컬럼은 모든 업데이트 작업을 집계합니다.

 

- COUNT_DELETE, SUM_TIMER_DELETE, MIN_TIMER_DELETE, AVG_TIMER_DELETE, MAX_TIMER_DELETE

이러한 컬럼은 모든 삭제 작업을 집계합니다.

 

• Tuncate Table 허용 여부.

TRUNCATE TABLE 테이블 I/O 요약 테이블에 허용됩니다. 행을 제거하지 않고 요약 열을 0으로 재설정합니다.

테이블을 자르면 table_io_waits_summary_by_index_usage 테이블도 잘립니다.

 

▶︎ table_io_waits_summary_by_index_usage 테이블

table_io_waits_summary_by_index_usage 테이블은 wait/io/table/sql/handler 계측기에서 생성된대로 모든 테이블 인덱스 I/O 대기 이벤트를 집계합니다. 그룹화는 테이블 인덱스를 기준으로합니다.

table_io_waits_summary_by_index_usage 컬럼은 table_io_waits_summary_by_table 거의 동일합니다. 유일한 차이점은 테이블 I/O 대기 이벤트가 기록될 사용된 인덱스의 이름에 해당하는 추가 그룹 열인 INDEX_NAME입니다.

- PRIMARY 값은 테이블 I / O 기본 인덱스를 사용했음을 나타냅니다.

- NULL 값은 테이블 I / O 인덱스를 사용하지 않았 음을 의미합니다.

- 삽입은 INDEX_NAME = NULL 대해 계산됩니다.

 

• Tuncate Table 허용 여부.

TRUNCATE TABLE 테이블 I / O 요약 테이블에 허용됩니다. 행을 제거하지 않고 요약 열을 0으로 재설정합니다. 테이블은 table_io_waits_summary_by_table 테이블이 잘려서 잘립니다.

테이블의 인덱스 구조를 변경하는 DDL 작업으로 인해 인덱스별 통계가 재설정될 있습니다.

 

▶︎ table_lock_waits_summary_by_table 테이블

table_lock_waits_summary_by_table 테이블은 wait/lock/table/sql/handler 계측기에서 생성 된대로 모든 테이블 잠금 대기 이벤트를 집계합니다. 그룹화는 테이블 기준입니다.

 

테이블에는 내부 외부 잠금에 대한 정보가 포함되어 있습니다.

내부 잠금은 SQL 계층의 잠금에 해당합니다. 이것은 현재 thr_lock() 대한 호출로 구현됩니다. 이벤트 행에서 이러한 잠금은 다음 하나가있는 OPERATION 컬럼으로 구분됩니다.

read normal

read with shared locks

read high priority

read no insert

write allow write

write concurrent insert

write delayed

write low priority

write normal

 

외부 잠금은 스토리지 엔진 계층의 잠금에 해당합니다. 이것은 현재 handler::external_lock() 대한 호출로 구현됩니다. 이벤트 행에서 이러한 잠금은 다음값 하나가 있는 OPERATION컬럼으로 구분됩니다.

read external

write external

 

table_lock_waits_summary_by_table 테이블에는 테이블이 이벤트를 집계하는 방법을 나타내는 OBJECT_TYPE, OBJECT_SCHEMA OBJECT_NAME 같은 그룹화 컬럼이 있습니다. 이러한 컬럼은 events_waits_current 테이블에서와 동일한 의미를 갖습니다. 행이 적용되는 테이블을 식별합니다.

table_lock_waits_summary_by_table에는 집계된 값을 포함하는 다음 요약 컬럼이 있습니다. 컬럼 설명에 표시된대로 일부 컬럼은 일반적이며 세분화된 컬럼값의 합계와 동일한 값을 갖습니다. 예를 들어 모든 잠금을 집계하는 컬럼은 읽기 쓰기 잠금을 집계하는 해당 컬럼의 합계를 보유합니다. 이러한 방식으로 하위 수준 컬럼을 합산하는 사용자 정의보기 없이도 상위 수준의 집계를 직접 사용할 있습니다.

- COUNT_STAR, SUM_TIMER_WAIT, MIN_TIMER_WAIT, AVG_TIMER_WAIT, MAX_TIMER_WAIT

이러한 컬럼은 모든 잠금 작업을 집계합니다. 해당하는 xxx_READ xxx_WRITE 열의 합계와 동일합니다.

 

- COUNT_READ, SUM_TIMER_READ, MIN_TIMER_READ, AVG_TIMER_READ, MAX_TIMER_READ

이러한 컬럼은 모든 읽기 잠금 작업을 집계합니다. 해당하는 xxx_READ_NORMAL, xxx_READ_WITH_SHARED_LOCKS, xxx_READ_HIGH_PRIORITY xxx_READ_NO_INSERT 열의 합계와 동일합니다.

 

- COUNT_WRITE, SUM_TIMER_WRITE, MIN_TIMER_WRITE, AVG_TIMER_WRITE, MAX_TIMER_WRITE

이러한 컬럼은 모든 쓰기 잠금 작업을 집계합니다. 해당하는 xxx_WRITE_ALLOW_WRITE, xxx_WRITE_CONCURRENT_INSERT, xxx_WRITE_LOW_PRIORITY xxx_WRITE_NORMAL 열의 합계와 동일합니다.

 

- COUNT_READ_NORMAL, SUM_TIMER_READ_NORMAL, MIN_TIMER_READ_NORMAL, AVG_TIMER_READ_NORMAL, MAX_TIMER_READ_NORMAL

이러한 컬럼은 내부 읽기 잠금을 집계합니다.

 

- COUNT_READ_WITH_SHARED_LOCKS, SUM_TIMER_READ_WITH_SHARED_LOCKS, MIN_TIMER_READ_WITH_SHARED_LOCKS, AVG_TIMER_READ_WITH_SHARED_LOCKS, MAX_TIMER_READ_WITH_SHARED_LOCKS

이러한 컬럼은 내부 읽기 잠금을 집계합니다.

 

- COUNT_READ_HIGH_PRIORITY, SUM_TIMER_READ_HIGH_PRIORITY, MIN_TIMER_READ_HIGH_PRIORITY, AVG_TIMER_READ_HIGH_PRIORITY, MAX_TIMER_READ_HIGH_PRIORITY

이러한 컬럼은 내부 읽기 잠금을 집계합니다.

 

- COUNT_READ_NO_INSERT, SUM_TIMER_READ_NO_INSERT, MIN_TIMER_READ_NO_INSERT, AVG_TIMER_READ_NO_INSERT, MAX_TIMER_READ_NO_INSERT

이러한 컬럼은 내부 읽기 잠금을 집계합니다.

 

- COUNT_READ_EXTERNAL, SUM_TIMER_READ_EXTERNAL, MIN_TIMER_READ_EXTERNAL, AVG_TIMER_READ_EXTERNAL, MAX_TIMER_READ_EXTERNAL

이러한 컬럼은 외부 읽기 잠금을 집계합니다.

 

- COUNT_WRITE_ALLOW_WRITE, SUM_TIMER_WRITE_ALLOW_WRITE, MIN_TIMER_WRITE_ALLOW_WRITE, AVG_TIMER_WRITE_ALLOW_WRITE, MAX_TIMER_WRITE_ALLOW_WRITE

이러한 컬럼은 내부 쓰기 잠금을 집계합니다.

 

- COUNT_WRITE_CONCURRENT_INSERT, SUM_TIMER_WRITE_CONCURRENT_INSERT, MIN_TIMER_WRITE_CONCURRENT_INSERT, AVG_TIMER_WRITE_CONCURRENT_INSERT, MAX_TIMER_WRITE_CONCURRENT_INSERT

이러한 컬럼은 내부 쓰기 잠금을 집계합니다.

 

- COUNT_WRITE_LOW_PRIORITY, SUM_TIMER_WRITE_LOW_PRIORITY, MIN_TIMER_WRITE_LOW_PRIORITY, AVG_TIMER_WRITE_LOW_PRIORITY, MAX_TIMER_WRITE_LOW_PRIORITY

이러한 컬럼은 내부 쓰기 잠금을 집계합니다.

 

- COUNT_WRITE_NORMAL, SUM_TIMER_WRITE_NORMAL, MIN_TIMER_WRITE_NORMAL, AVG_TIMER_WRITE_NORMAL, MAX_TIMER_WRITE_NORMAL

이러한 컬럼은 내부 쓰기 잠금을 집계합니다.

 

- COUNT_WRITE_EXTERNAL, SUM_TIMER_WRITE_EXTERNAL, MIN_TIMER_WRITE_EXTERNAL, AVG_TIMER_WRITE_EXTERNAL, MAX_TIMER_WRITE_EXTERNAL

이러한 컬럼은 외부 쓰기 잠금을 집계합니다.

 

• Tuncate Table 허용 여부.

TRUNCATE TABLE 테이블 잠금 요약 테이블에 허용됩니다. 행을 제거하지 않고 요약 열을 0으로 재설정합니다.

 

 

 

▶︎ Socket Summary 테이블

다음 소켓 요약 테이블은 소켓 작업에 대한 타이머 바이트 정보를 집계합니다.

- socket_summary_by_event_name : 소켓 계측기 모든 소켓 I/O 작업에 대해 wait/io/socket/* 계측기에서 생성한 집계 타이머 바이트 통계입니다.

- socket_summary_by_instance : 소켓 인스턴스 모든 소켓 I/O 작업에 대해 wait/io/socket/* 계측기에서 생성한 집계 타이머 바이트 통계. 연결이 종료되면 해당하는 socket_summary_by_instance 행이 삭제됩니다.

 

소켓 요약 테이블은 소켓이 클라이언트의 다음 요청을 기다리는 동안 유휴 이벤트에 의해 생성된 대기를 집계하지 않습니다. 유휴 이벤트 집계의 경우 대기 이벤트 요약 테이블을 사용합니다.

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

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

- socket_summary_by_instance에는 OBJECT_INSTANCE_BEGIN 열이 있습니다. 행은 주어진 개체에 대한 이벤트를 요약합니다.

 

소켓 요약 테이블에는 집계된 값을 포함하는 다음 요약 컬럼이 있습니다.

- COUNT_STAR, SUM_TIMER_WAIT, MIN_TIMER_WAIT, AVG_TIMER_WAIT, MAX_TIMER_WAIT

모든 작업을 집계합니다.

 

- COUNT_READ, SUM_TIMER_READ, MIN_TIMER_READ, AVG_TIMER_READ, MAX_TIMER_READ, SUM_NUMBER_OF_BYTES_READ

모든 수신 작업 (RECV, RECVFROM RECVMSG) 집계합니다.

 

- COUNT_WRITE, SUM_TIMER_WRITE, MIN_TIMER_WRITE, AVG_TIMER_WRITE, MAX_TIMER_WRITE, SUM_NUMBER_OF_BYTES_WRITE

모든 보내기 작업 (SEND, SENDTO SENDMSG) 집계합니다.

 

- COUNT_MISC, SUM_TIMER_MISC, MIN_TIMER_MISC, AVG_TIMER_MISC, MAX_TIMER_MISC

CONNECT, LISTEN, ACCEPT, CLOSE SHUTDOWN 같은 다른 모든 소켓 작업을 집계합니다. 이러한 작업에는 바이트 수가 없습니다.

 

socket_summary_by_instance 테이블에는 소켓의 클래스를 나타내는 EVENT_NAME 열도 있습니다.

client_connection, server_tcpip_socket, server_unix_socket.

컬럼을 그룹화하여 예를 들어 클라이언트 활동을 서버 수신 소켓의 활동과 분리할 ​​있습니다.

 

TRUNCATE TABLE 소켓 요약 테이블에 허용됩니다. events_statements_summary_by_digest 제외하고 tt 행을 제거하지 않고 요약 컬럼을 0으로 재설정합니다.

 

▶︎ Memory Summary 테이블

성능 스키마는 메모리 사용량을 계측하고 다음 요인에 따라 자세히 설명 메모리 사용량 통계를 집계합니다.

- 사용 메모리 유형 (다양한 캐시, 내부 버퍼 )

- 메모리 작업을 간접적으로 수행하는 스레드, 계정, 사용자, 호스트

 

성능 스키마는 다음과 같은 메모리 사용 측면을 측정합니다.

- 사용 메모리 크기

- 작업

- 저수위 고수위

 

메모리 크기는 서버의 메모리 소비를 이해하거나 조정하는 도움이됩니다.

작업 수는 서버가 성능에 영향을주는 메모리 할당 자에 가하는 전반적인 압력을 이해하거나 조정하는 도움이됩니다. 단일 바이트를 백만 할당하는 것은 번에 백만 바이트를 할당하는 것과 같지 않습니다. 크기와 개수를 모두 추적하면 차이가 드러날 있습니다.

로우 워터 마크와 하이 워터 마크는 워크로드 급증, 전체 워크로드 안정성 가능한 메모리 누수를 감지하는 중요합니다.

메모리 이벤트에는 시간이 지정되지 않으므로 메모리 요약 테이블에는 시간 정보가 포함되지 않습니다.

메모리 사용량 데이터 수집에 대한 자세한 내용은 메모리 계측 동작을 참조하십시오.

 

메모리 이벤트 요약 정보의 :

mysql> SELECT *
       FROM performance_schema.memory_summary_global_by_event_name
       WHERE EVENT_NAME = 'memory/sql/TABLE'\G
*************************** 1. row ***************************
                  EVENT_NAME: memory/sql/TABLE
                 COUNT_ALLOC: 1381
                  COUNT_FREE: 924
   SUM_NUMBER_OF_BYTES_ALLOC: 2059873
    SUM_NUMBER_OF_BYTES_FREE: 1407432
              LOW_COUNT_USED: 0
          CURRENT_COUNT_USED: 457
             HIGH_COUNT_USED: 461
    LOW_NUMBER_OF_BYTES_USED: 0
CURRENT_NUMBER_OF_BYTES_USED: 652441
   HIGH_NUMBER_OF_BYTES_USED: 669269

 

 

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

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

- memory_summary_by_host_by_event_name에는 HOST EVENT_NAME 열이 있습니다. 행은 지정된 호스트 이벤트 이름에 대한 이벤트를 요약합니다.

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

- memory_summary_by_user_by_event_name에는 USER EVENT_NAME 열이 있습니다. 행은 주어진 사용자 이벤트 이름에 대한 이벤트를 요약합니다.

- memory_summary_global_by_event_name에는 EVENT_NAME 열이 있습니다. 행은 주어진 이벤트 이름에 대한 이벤트를 요약합니다.

 

메모리 요약 테이블에는 집계된 값이 포함된 다음 요약 컬럼이 있습니다.

- COUNT_ALLOC, COUNT_FREE

메모리 할당 메모리 프리 함수에 대한 호출 수입니다.

 

- SUM_NUMBER_OF_BYTES_ALLOC, SUM_NUMBER_OF_BYTES_FREE

할당 해제된 메모리 블록의 집계 크기입니다.

 

- CURRENT_COUNT_USED

아직 해제되지 않은 현재 할당된 블록의 집계 수입니다. COUNT_ALLOC − COUNT_FREE 같은 편리한 컬럼입니다.

 

- CURRENT_NUMBER_OF_BYTES_USED

아직 해제되지 않은 현재 할당된 메모리 블록의 집계된 크기입니다. SUM_NUMBER_OF_BYTES_ALLOC − SUM_NUMBER_OF_BYTES_FREE 같은 편의 컬럼입니다.

 

- LOW_COUNT_USED, HIGH_COUNT_USED

CURRENT_COUNT_USED 열에 해당하는 최저 최고 수위 표시.

 

- LOW_NUMBER_OF_BYTES_USED, HIGH_NUMBER_OF_BYTES_USED

CURRENT_NUMBER_OF_BYTES_USED 컬럼에 해당하는 최저 최고 수위 표시.

 

- TRUNCATE TABLE 메모리 요약 테이블에 허용됩니다. 다음과 같은 효과가 있습니다.

일반적으로 잘림은 통계 기준을 재설정하지만 서버 상태를 변경하지는 않습니다. , 메모리 테이블을 잘라도 메모리가 해제되지 않습니다.

 

- COUNT_ALLOC COUNT_FREE 카운터를 동일한 값으로 줄임으로써 기준으로 재설정됩니다.

마찬가지로 SUM_NUMBER_OF_BYTES_ALLOC SUM_NUMBER_OF_BYTES_FREE 기준으로 재설정됩니다.

 

- LOW_COUNT_USED HIGH_COUNT_USED CURRENT_COUNT_USED 재설정됩니다.

LOW_NUMBER_OF_BYTES_USED HIGH_NUMBER_OF_BYTES_USED CURRENT_NUMBER_OF_BYTES_USED 재설정됩니다.

 

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

 

설정방법

mysql> select *
    -> from performance_schema.setup_instruments
    -> WHERE NAME LIKE 'memory/%';
+--------------------------------------------------------------------------------+---------+-------+
| NAME                                                                           | ENABLED | TIMED |
+--------------------------------------------------------------------------------+---------+-------+
| memory/performance_schema/mutex_instances                                      | YES     | NO    |
| memory/performance_schema/rwlock_instances                                     | YES     | NO    |
| memory/performance_schema/cond_instances                                       | YES     | NO    |
| memory/performance_schema/file_instances                                       | YES     | NO    |
| memory/performance_schema/socket_instances                                     | YES     | NO    |
| memory/performance_schema/metadata_locks                                       | YES     | NO    |
| memory/performance_schema/file_handle                                          | YES     | NO    |
| memory/performance_schema/accounts                                             | YES     | NO    |
......
| memory/partition/ha_partition::engine_array                                    | NO      | NO    |
| memory/partition/ha_partition::part_ids                                        | NO      | NO    |
| memory/sql/tz_storage                                                          | NO      | NO    |
| memory/sql/servers_cache                                                       | NO      | NO    |
| memory/sql/udf_mem                                                             | NO      | NO    |
+--------------------------------------------------------------------------------+---------+-------+

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

메모리 계측기의 경우 메모리 작업이 시간 제한되지 않기 때문에 setup_instruments TIMED 컬럼이 무시됩니다.

 

서버의 스레드가 계측된 메모리 할당을 실행하면 다음 규칙이 적용됩니다.

- 스레드가 계측되지 않았거나 메모리 계측기가 활성화되지 않은 경우 할당 메모리 블록이 계측되지 않습니다.

- 그렇지 않으면 (, 스레드와 계측기가 모두 활성화 ) 할당 메모리 블록이 계측됩니다.

 

할당 해제의 경우 다음 규칙이 적용됩니다.

- 메모리 할당 작업이 계측 경우 현재 계측기 또는 스레드 활성화 상태에 관계없이 해당 사용 가능한 작업이 계측됩니다.

- 메모리 할당 작업이 계측되지 않은 경우 현재 계측기 또는 스레드 활성화 상태에 관계없이 해당 사용 가능 작업이 계측되지 않습니다.

 

스레드 통계의 경우 다음 규칙이 적용됩니다.

크기 N 계측 메모리 블록이 할당되면 성능 스키마는 메모리 요약 테이블 열을 다음과 같이 업데이트합니다.

- COUNT_ALLOC : 1 증가

- CURRENT_COUNT_USED : 1 증가

- HIGH_COUNT_USED : CURRENT_COUNT_USED 새로운 최대 경우 증가

- SUM_NUMBER_OF_BYTES_ALLOC : N 증가

- CURRENT_NUMBER_OF_BYTES_USED : N 증가

- HIGH_NUMBER_OF_BYTES_USED : CURRENT_NUMBER_OF_BYTES_USED 새로운 최대 경우 증가

 

계측된 메모리 블록이 할당 해제되면 성능 스키마는 메모리 요약 테이블 열을 다음과 같이 업데이트합니다.

- COUNT_FREE : 1 증가

- CURRENT_COUNT_USED : 1 감소

- LOW_COUNT_USED : CURRENT_COUNT_USED 새로운 최소값 경우 감소

- SUM_NUMBER_OF_BYTES_FREE : N 증가

- CURRENT_NUMBER_OF_BYTES_USED : N 감소

- LOW_NUMBER_OF_BYTES_USED : CURRENT_NUMBER_OF_BYTES_USED 새로운 최소값이면 감소합니다.

 

상위 레벨 집계 (글로벌, 계정, 사용자, 호스트 ) 경우 낮은 워터 마크와 높은 워터 마크에 대해 예상대로 동일한 규칙이 적용됩니다.

- LOW_COUNT_USED LOW_NUMBER_OF_BYTES_USED 낮은 추정치입니다. 성능 스키마에 의해보고되는 값은 런타임에 효과적으로 사용되는 메모리의 최소 개수 또는 크기보다 작거나 같아야합니다.

- HIGH_COUNT_USED HIGH_NUMBER_OF_BYTES_USED 높은 추정치입니다. 성능 스키마에 의해보고 값은 런타임에 효과적으로 사용되는 메모리의 최대 개수 또는 크기보다 크거나 같도록 보장됩니다.

 

memory_summary_global_by_event_name 이외의 요약 테이블에서 낮은 추정값의 경우 메모리 소유권이 스레드간에 전송되면 값이 음수가 있습니다.

 

다음은 추정 계산의 예입니다. 그러나 예상 구현은 변경될 있습니다.

스레드 1 memory_summary_by_thread_by_event_name 테이블의 LOW_NUMBER_OF_BYTES_USED HIGH_NUMBER_OF_BYTES_USED 컬럼에 보고 된대로 실행 중에 1MB에서 2MB 범위의 메모리를 사용합니다.

스레드 2 마찬가지로 보고된 것처럼 실행 중에 10MB에서 12MB 범위의 메모리를 사용합니다.

 

스레드가 동일한 사용자 계정에 속하면 계정별 요약에서 계정이 11MB에서 14MB 범위의 메모리를 사용했다고 추정합니다. , 상위 레벨 집계에 대한 LOW_NUMBER_OF_BYTES_USED LOW_NUMBER_OF_BYTES_USED (최악의 경우 가정) 합계입니다.

마찬가지로 상위 레벨 집계의 HIGH_NUMBER_OF_BYTES_USED HIGH_NUMBER_OF_BYTES_USED (최악의 경우 가정) 합계입니다.

 

11MB 스레드가 동시에 낮은 사용량 표시에 도달 경우에만 발생할 수있는 낮은 추정치입니다.

14MB 스레드가 동시에 높은 사용량 표시에 도달 경우에만 발생할 수있는 높은 추정치입니다.

 

계정의 실제 메모리 사용량은 11.5MB에서 13.5MB 사이 있습니다.

 

용량 계획의 경우 최악의 경우를 보고하는 것이 실제로 바람직한 동작입니다. 일반적으로 세션이 서로 관련이 없을때 발생할 있는 일을 보여주기 때문입니다.

 

▶︎ Status Variable Summary 테이블

성능 스키마는 테이블에서 상태 변수 정보를 사용할 있도록 합니다. 또한 여기에 설명 요약 테이블에서 집계 상태 변수 정보를 사용할 있습니다.

상태 변수 요약 테이블에는 테이블이 상태 값을 집계하는 방법을 나타내는 하나 이상의 그룹화 컬럼이 있습니다.

- status_by_account에는 계정별로 상태 변수를 요약하는 USER, HOST VARIABLE_NAME 열이 있습니다.

- status_by_host에는 클라이언트가 연결된 호스트 상태 변수를 요약하는 HOST VARIABLE_NAME 열이 있습니다.

- status_by_user에는 클라이언트 사용자 이름별로 상태 변수를 요약하는 USER VARIABLE_NAME 열이 있습니다.

 

상태 변수 요약 테이블에는 집계 값이 포함 다음 요약 열이 있습니다.

- VARIABLE_VALUE

  활성 종료 세션에 대한 집계 상태 변수 값입니다.

 

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

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

 

세션이 종료되면 계정(account) 상태가 수집됩니다. 세션 상태 카운터는 전역 상태 카운터와 해당 계정 상태 카운터에 추가됩니다.

계정 통계가 수집되지 않은 경우 호스트 사용자 상태가 수집되면 세션 상태가 호스트 사용자 상태에 추가됩니다.

 

performance_schema_accounts_size, performance_schema_hosts_size performance_schema_users_size 시스템 변수가 각각 0으로 설정된 경우 계정, 호스트 사용자 통계가 수집되지 않습니다.

 

성능 스키마는 다음과 같이 상태 변수 요약 테이블에 대해 TRUNCATE TABLE 지원합니다. 모든 경우에 활성 세션의 상태는 영향을받지 않습니다.

- status_by_account : 종료 세션에서 사용자 호스트 상태까지 계정 상태를 집계 다음 계정 상태를 재설정합니다.

- status_by_host : 종료 세션에서 집계 호스트 상태를 재설정합니다.

- status_by_user : 종료 세션에서 집계 사용자 상태를 재설정합니다.

 

FLUSH STATUS 모든 활성 세션의 세션 상태를 전역 상태 변수에 추가하고 모든 활성 세션의 상태를 재설정하며 연결이 끊긴 세션에서 집계 계정, 호스트 사용자 상태 값을 재설정합니다.

 

▣ 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