Loading...
MySQL 9.5 Reference Manual 9.5의 28.4.28 The INFORMATION_SCHEMA INNODB_TRX Table의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
INNODB_TRX table은 현재 InnoDB 내부에서 실행 중인 모든 트랜잭션에 대한 정보를 제공합니다. 여기에는 트랜잭션이 락을 기다리는 중인지 여부, 트랜잭션이 시작된 시각, 그리고 해당 트랜잭션이 실행 중인 SQL 문장(있다면)이 포함됩니다.
사용 방법에 대한 정보는
Section 17.15.2.1, “Using InnoDB Transaction and Locking Information”를 참조하십시오.
INNODB_TRX table에는 다음과 같은 column이 있습니다:
TRX_IDInnoDB 내부에서 사용하는 고유한 트랜잭션 ID 번호입니다. 이 ID는 읽기 전용이며 논락(nonlocking) 트랜잭션에 대해서는 생성되지 않습니다. 자세한 내용은
Section 10.5.3, “Optimizing InnoDB Read-Only Transactions”를 참조하십시오.
TRX_WEIGHT트랜잭션의 weight로, 트랜잭션이 변경한 행(row) 수와 트랜잭션이 락한 행 수를 반영합니다(반드시 정확한 개수는 아님). 교착 상태를 해소하기 위해 InnoDB는 weight가 가장 작은 트랜잭션을 롤백할 “victim”으로 선택합니다. 비트랜잭션 테이블을 변경한 트랜잭션은 변경 및 락된 행 수와 무관하게 다른 트랜잭션보다 더 무겁다고 간주됩니다.
TRX_STATE트랜잭션 실행 상태입니다. 허용되는 값은
RUNNING, LOCK WAIT,
ROLLING BACK, COMMITTING 입니다.
TRX_STARTED트랜잭션 시작 시각입니다.
TRX_REQUESTED_LOCK_IDTRX_STATE가 LOCK WAIT인 경우, 트랜잭션이 현재 대기 중인 락의 ID입니다. 그렇지 않으면 NULL입니다. 락에 대한 자세한 정보를 얻으려면 이 column을 Performance Schema data_locks table의 ENGINE_LOCK_ID column과 조인하십시오.
TRX_WAIT_STARTEDTRX_STATE가 LOCK WAIT인 경우, 트랜잭션이 해당 락 대기를 시작한 시각입니다. 그렇지 않으면 NULL입니다.
TRX_MYSQL_THREAD_IDMySQL 스레드 ID입니다. 스레드에 대한 자세한 정보를 얻으려면 이 column을 INFORMATION_SCHEMA PROCESSLIST table의 ID column과 조인하십시오. 단,
Section 17.15.2.3, “Persistence and Consistency of InnoDB Transaction and Locking Information”를 참조하십시오.
TRX_QUERY트랜잭션이 실행 중인 SQL 문장입니다.
TRX_OPERATION_STATE트랜잭션의 현재 연산(있다면)입니다. 없으면
NULL입니다.
TRX_TABLES_IN_USE이 트랜잭션의 현재 SQL 문장을 처리하는 동안 사용된 InnoDB 테이블의 수입니다.
TRX_TABLES_LOCKED현재 SQL 문장이 행 락을 보유하고 있는 InnoDB 테이블의 수입니다. (이는 테이블 락이 아니라 행 락이므로, 일부 행이 락되어 있더라도 일반적으로 여러 트랜잭션이 해당 테이블을 읽고 쓸 수 있습니다.)
TRX_LOCK_STRUCTS트랜잭션이 예약한 락의 개수입니다.
TRX_LOCK_MEMORY_BYTES이 트랜잭션의 락 구조가 메모리에서 차지하는 총 크기입니다.
TRX_ROWS_LOCKED이 트랜잭션에 의해 락된 행의 대략적인 수입니다. 이 값에는 물리적으로는 존재하지만 해당 트랜잭션에는 보이지 않는 삭제 마크된(delete-marked) 행이 포함될 수 있습니다.
TRX_ROWS_MODIFIED이 트랜잭션에서 수정되거나 삽입된 행의 수입니다.
TRX_CONCURRENCY_TICKETS현재 트랜잭션이 스왑 아웃되기 전까지 수행할 수 있는 작업량을 나타내는 값으로,
innodb_concurrency_tickets
시스템 변수에 의해 지정됩니다.
TRX_ISOLATION_LEVEL현재 트랜잭션의 격리 수준입니다.
TRX_UNIQUE_CHECKS현재 트랜잭션에 대해 유니크 검사(unique check)가 켜져 있는지 또는 꺼져 있는지를 나타냅니다. 예를 들어, 대량 데이터 로드 중에는 유니크 검사가 꺼져 있을 수 있습니다.
TRX_FOREIGN_KEY_CHECKS현재 트랜잭션에 대해 외래 키 검사(foreign key check)가 켜져 있는지 또는 꺼져 있는지를 나타냅니다. 예를 들어, 대량 데이터 로드 중에는 외래 키 검사가 꺼져 있을 수 있습니다.
TRX_LAST_FOREIGN_KEY_ERROR마지막 외래 키 오류에 대한 자세한 오류 메시지입니다(있다면). 그렇지 않으면
NULL입니다.
TRX_ADAPTIVE_HASH_LATCHED어댑티브 해시 인덱스가 현재 트랜잭션에 의해 락되어 있는지 여부입니다. 어댑티브 해시 인덱스 검색 시스템이 파티셔닝되어 있으면, 단일 트랜잭션이 전체 어댑티브 해시 인덱스를 락하지 않습니다. 어댑티브 해시 인덱스 파티셔닝은
innodb_adaptive_hash_index_parts에 의해 제어되며, 기본값은 8입니다.
TRX_ADAPTIVE_HASH_TIMEOUTMySQL 5.7.8에서 더 이상 사용되지(deprecated) 않습니다. 항상 0을 반환합니다.
어댑티브 해시 인덱스에 대해 검색 래치를 즉시 반환할지, 아니면 MySQL에서의 호출 간에 계속 보유할지를 나타냅니다. 어댑티브 해시 인덱스 경합이 없으면 이 값은 0으로 유지되며, 문장은 완료될 때까지 래치를 유지합니다. 경합이 발생하는 동안에는 이 값이 0까지 카운트다운되며, 문장은 각 행 조회 이후에 래치를 즉시 해제합니다. 어댑티브 해시 인덱스 검색 시스템이 파티셔닝되어 있는 경우(이는
innodb_adaptive_hash_index_parts로 제어됩니다), 이 값은 0으로 유지됩니다.
TRX_IS_READ_ONLY값이 1이면 트랜잭션이 읽기 전용임을 나타냅니다.
TRX_AUTOCOMMIT_NON_LOCKING값이 1이면, 해당 트랜잭션이 FOR UPDATE 또는 LOCK IN SHARED MODE 절을 사용하지 않는 SELECT 문장이며, autocommit이 사용(enabled) 상태로 실행되어 트랜잭션이 이 하나의 문장만을 포함함을 나타냅니다. 이 column과 TRX_IS_READ_ONLY가 모두 1이면, InnoDB는 테이블 데이터를 변경하는 트랜잭션에 수반되는 오버헤드를 줄이기 위해 해당 트랜잭션을 최적화합니다.
TRX_SCHEDULE_WEIGHT락을 기다리는 트랜잭션에 대해 Contention-Aware Transaction Scheduling (CATS) 알고리즘이 부여한 트랜잭션 스케줄 weight입니다. 이 값은 다른 트랜잭션의 값에 상대적인 값입니다. 값이 클수록 weight가 더 큽니다. 이 값은 TRX_STATE column에 의해 보고되는 LOCK WAIT 상태의 트랜잭션에 대해서만 계산됩니다. 락을 기다리지 않는 트랜잭션에 대해서는 NULL 값이 보고됩니다. TRX_SCHEDULE_WEIGHT 값은 다른 목적을 위해 다른 알고리즘으로 계산되는 TRX_WEIGHT 값과는 다릅니다.
1mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX\G 2*************************** 1. row *************************** 3 trx_id: 1510 4 trx_state: RUNNING 5 trx_started: 2014-11-19 13:24:40 6 trx_requested_lock_id: NULL 7 trx_wait_started: NULL 8 trx_weight: 586739 9 trx_mysql_thread_id: 2 10 trx_query: DELETE FROM employees.salaries WHERE salary > 65000 11 trx_operation_state: updating or deleting 12 trx_tables_in_use: 1 13 trx_tables_locked: 1 14 trx_lock_structs: 3003 15 trx_lock_memory_bytes: 450768 16 trx_rows_locked: 1407513 17 trx_rows_modified: 583736 18 trx_concurrency_tickets: 0 19 trx_isolation_level: REPEATABLE READ 20 trx_unique_checks: 1 21 trx_foreign_key_checks: 1 22trx_last_foreign_key_error: NULL 23 trx_adaptive_hash_latched: 0 24 trx_adaptive_hash_timeout: 10000 25 trx_is_read_only: 0 26trx_autocommit_non_locking: 0 27 trx_schedule_weight: NULL
이 table은 높은 동시 부하 상황에서 발생하는 성능 문제를 진단하는 데 도움이 됩니다. 해당 내용은
Section 17.15.2.3, “Persistence and Consistency of InnoDB Transaction and Locking Information”에 설명된 대로 갱신됩니다.
이 table을 쿼리하려면 PROCESS
프라이빌리지가 필요합니다.
이 table의 column에 대한 데이터 타입 및 기본값을 포함한 추가 정보를 보려면 INFORMATION_SCHEMA COLUMNS table 또는
SHOW COLUMNS 문장을 사용하십시오.
28.4.27 The INFORMATION_SCHEMA INNODB_TEMP_TABLE_INFO Table
28.4.29 The INFORMATION_SCHEMA INNODB_VIRTUAL Table