Loading...
MySQL 9.5 Reference Manual 9.5의 29.6 Performance Schema Instrument Naming Conventions의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
instrument 이름은 '/' 문자로 구분된 일련의 요소들로 구성됩니다. 예시 이름은 다음과 같습니다:
1wait/io/file/myisam/log 2wait/io/file/mysys/charset 3wait/lock/table/sql/handler 4wait/synch/cond/mysys/COND_alarm 5wait/synch/cond/sql/BINLOG::update_cond 6wait/synch/mutex/mysys/BITMAP_mutex 7wait/synch/mutex/sql/LOCK_delete 8wait/synch/rwlock/sql/Query_cache_query::lock 9stage/sql/closing tables 10stage/sql/Sorting result 11statement/com/Execute 12statement/com/Query 13statement/sql/create_table 14statement/sql/lock_tables 15errors
instrument name space는 트리와 유사한 구조를 가집니다. instrument 이름의 요소들은 왼쪽에서 오른쪽으로 갈수록 더 일반적인 것에서 더 구체적인 것으로 진행됩니다. 이름에 포함된 요소의 개수는 instrument의 유형에 따라 달라집니다.
이름에서 주어진 요소의 해석은 그 왼쪽에 있는 요소들에 따라 달라집니다. 예를 들어, myisam 은 다음 두 이름 모두에 나타나지만, 첫 번째 이름에서의 myisam 은 파일 I/O 와 관련이 있고, 두 번째 이름에서의 myisam 은 동기화 instrument 와 관련이 있습니다:
1wait/io/file/myisam/log 2wait/synch/cond/myisam/MI_SORT_INFO::cond
instrument 이름은 Performance Schema 구현에 의해 정의되는 구조를 가진 prefix와 instrument 코드를 구현하는 개발자가 정의하는 suffix로 구성됩니다. instrument prefix의 최상위 요소는 instrument의 유형을 나타냅니다. 이 요소는 또한 performance_timers 테이블에서 어떤 이벤트 타이머가 해당 instrument에 적용되는지를 결정합니다. instrument 이름의 prefix 부분에 대해, 최상위 수준은 instrument 유형을 나타냅니다.
instrument 이름의 suffix 부분은 instrument 자체의 코드에서 가져옵니다. suffix는 다음과 같은 수준을 포함할 수 있습니다:
주요 요소(예: myisam, innodb, mysys, sql 같은 서버 모듈) 이름 또는 플러그인 이름
코드 내 변수 이름으로, XXX (글로벌 변수) 또는
CCC::MMM
(클래스 CCC 의 멤버 MMM) 형태.
예: COND_thread_cache,
THR_LOCK_myisam,
BINLOG::LOCK_index.
idle: instrument 된 idle 이벤트. 이 instrument에는 추가 요소가 없습니다.
error: instrument 된 에러 이벤트. 이 instrument에는 추가 요소가 없습니다.
memory: instrument 된 메모리 이벤트.
stage: instrument 된 스테이지 이벤트.
statement: instrument 된 스테이트먼트 이벤트.
transaction: instrument 된 트랜잭션 이벤트. 이 instrument에는 추가 요소가 없습니다.
wait: instrument 된 대기 이벤트.
idle instrument는 idle 이벤트에 사용되며, 이는 socket_instances.STATE 컬럼 설명에서 논의된 대로 Performance Schema가 생성합니다. 자세한 내용은
Section 29.12.3.5, “The socket_instances Table” 를 참조하십시오.
error instrument는 서버 에러 및 경고에 대한 정보를 수집할지 여부를 나타냅니다. 이 instrument는 기본적으로 활성화되어 있습니다. error row의 TIMED 컬럼은 타이밍 정보가 수집되지 않기 때문에 setup_instruments 테이블에서 적용되지 않습니다.
메모리 인스트루멘테이션은 기본적으로 활성화되어 있습니다. 메모리 인스트루멘테이션은 시작 시점에 활성화 또는 비활성화하거나, 런타임 시점에 setup_instruments 테이블의 관련 instrument들의 ENABLED 컬럼을 업데이트하여 동적으로 활성화 또는 비활성화할 수 있습니다. 메모리 instruments는
memory/code_area/instrument_name
형태의 이름을 가지며, 여기서 code_area 는 sql 또는 myisam 같은 값이고,
instrument_name 은 instrument의 세부 사항입니다.
memory/performance_schema/ prefix로 명명된 instruments는 Performance Schema 내부 버퍼에 할당된 메모리 양을 노출합니다. memory/performance_schema/ instruments는 빌트인이며, 항상 활성화되어 있고, 시작이나 런타임 시점에 비활성화할 수 없습니다. 빌트인 메모리 instruments는 memory_summary_global_by_event_name 테이블에만 표시됩니다. 자세한 내용은
Section 29.17, “The Performance Schema Memory-Allocation Model” 을 참조하십시오.
stage instruments는
stage/code_area/stage_name
형태의 이름을 가지며, 여기서 code_area 는 sql 또는 myisam 같은 값이고,
stage_name 은 Sorting result 또는 Sending data 같은 스테이트먼트 처리 단계명을 나타냅니다. stage는 SHOW PROCESSLIST 에 표시되거나 Information Schema PROCESSLIST 테이블에서 볼 수 있는 스레드 상태에 대응합니다.
statement/abstract/*: 스테이트먼트 연산을 위한 추상 instrument. 추상 instruments는 정확한 스테이트먼트 타입이 알려지기 전, 스테이트먼트 분류의 초기 단계에서 사용되며, 타입이 알려지면 더 구체적인 스테이트먼트 instrument로 변경됩니다. 이 프로세스에 대한 설명은
Section 29.12.6, “Performance Schema Statement Event Tables” 을 참조하십시오.
statement/com: instrument 된 커맨드 연산. 이들은
COM_xxx
연산에 대응하는 이름을 가집니다 (mysql_com.h 헤더 파일 및 sql/sql_parse.cc 참조). 예를 들어,
statement/com/Connect 와
statement/com/Init DB instruments는
COM_CONNECT 및
COM_INIT_DB 커맨드에 각각 대응합니다.
statement/scheduler/event: Event Scheduler가 실행하는 모든 이벤트를 추적하기 위한 단일 instrument. 이 instrument는 스케줄된 이벤트가 실행을 시작할 때 동작합니다.
statement/sp: 저장 프로그램에 의해 실행되는 내부 명령에 대한 instrument. 예를 들어,
statement/sp/cfetch 및
statement/sp/freturn instruments는
커서 fetch 및 함수 return 명령에 사용됩니다.
statement/sql: SQL 스테이트먼트 연산에 대한 instrument. 예를 들어,
statement/sql/create_db 및
statement/sql/select instruments는
CREATE DATABASE 및
SELECT 스테이트먼트에 사용됩니다.
instrument 된 스레드는 스레드 클래스 이름과 속성을 노출하는 setup_threads 테이블에 표시됩니다.
스레드 instruments는 thread 로 시작합니다(예:
thread/sql/parser_service 또는
thread/performance_schema/setup).
ndbcluster 플러그인 스레드를 위한 스레드 instrument 이름은
thread/ndbcluster/ 로 시작합니다. 이에 대한 자세한 내용은 ndbcluster Plugin Threads 를 참조하십시오.
wait/io
instrument 된 I/O 연산.
wait/io/file
instrument 된 파일 I/O 연산. 파일의 경우, 대기는 파일 연산이 완료되기를 기다리는 시간입니다(예: fwrite() 호출). 캐싱 때문에 실제 디스크에서의 물리적 파일 I/O는 이 호출 내에서 발생하지 않을 수도 있습니다.
wait/io/socket
instrument 된 소켓 연산. 소켓 instruments는
wait/io/socket/sql/socket_type
형태의 이름을 가집니다. 서버는 지원하는 각 네트워크 프로토콜마다 하나의 리스닝 소켓을 가집니다. TCP/IP 또는 Unix 소켓 파일 연결을 위한 리스닝 소켓에 연결된 instruments는 각각
socket_type 값으로
server_tcpip_socket 또는
server_unix_socket 을 가집니다.
리스닝 소켓이 연결을 감지하면, 서버는 그 연결을 별도의 스레드가 관리하는 새로운 소켓으로 이전합니다. 새로운 연결 스레드를 위한 instrument는
socket_type 값으로
client_connection 을 가집니다.
wait/io/table
instrument 된 테이블 I/O 연산. 여기에는 영구 베이스 테이블 또는 임시 테이블에 대한 행 단위 액세스가 포함됩니다. 행에 영향을 주는 연산은 fetch, insert, update, delete 입니다. 뷰의 경우, 대기는 뷰가 참조하는 베이스 테이블과 연관됩니다.
대부분의 대기와 달리, 테이블 I/O 대기는 다른 대기를 포함할 수 있습니다. 예를 들어, 테이블 I/O에는 파일 I/O 또는 메모리 연산이 포함될 수 있습니다. 따라서, 테이블 I/O 대기에 대한 events_waits_current 에는 일반적으로 두 개의 row가 있습니다. 자세한 내용은
Section 29.8, “Performance Schema Atom and Molecule Events” 를 참조하십시오.
일부 행 연산은 여러 테이블 I/O 대기를 유발할 수 있습니다. 예를 들어, insert는 update를 발생시키는 트리거를 활성화할 수 있습니다.
wait/lock
instrument 된 락 연산.
wait/lock/table
instrument 된 테이블 락 연산.
wait/lock/metadata/sql/mdl
instrument 된 메타데이터 락 연산.
wait/synch
instrument 된 동기화 객체. 동기화 객체의 경우, TIMER_WAIT 시간에는 락을 획득하려고 시도하는 동안 블록된 시간이(있는 경우) 포함됩니다.
wait/synch/cond
condition은 한 스레드가 다른 스레드에게 그들이 기다리고 있던 어떤 일이 발생했음을 알리는 데 사용됩니다. 단일 스레드가 condition을 기다리고 있었다면, 그 스레드는 깨어나서 실행을 계속할 수 있습니다. 여러 스레드가 기다리고 있었다면, 이들 모두 깨어나서 그들이 기다리던 리소스를 놓고 경쟁할 수 있습니다.
wait/synch/mutex
다른 스레드가 리소스(예: 실행 가능한 코드의 한 구역)에 접근하는 것을 방지하면서 리소스에 대한 접근을 허용하기 위해 사용되는 상호 배제 객체.
wait/synch/prlock
priority rwlock 락 객체.
wait/synch/rwlock
특정 변수를 다른 스레드가 사용하지 못하도록 막으면서, 그 변수에 대한 access를 락하기 위해 사용되는 일반적인 read/write lock 객체. 공유 read 락은 여러 스레드가 동시에 획득할 수 있습니다. 배타적 write 락은 한 번에 하나의 스레드만 획득할 수 있습니다.
wait/synch/sxlock
공유-배타(SX) 락은 공통 리소스에 대한 write access를 제공하면서, 다른 스레드가 일관성이 없는 read를 수행할 수 있게 하는 유형의 rwlock 락 객체입니다.
sxlocks 는 동시성을 최적화하고 read-write 워크로드의 확장성을 향상시킵니다.
29.5 Performance Schema Queries
29.7 Performance Schema Status Monitoring