22.9.3.4 rwlock_instances 테이블
rwlock_instances
테이블은 서버를 실행하는 동안 성능 스키마에 의해 확인되는 모든 rwlock
인스턴스 (읽기 쓰기 잠금)을 나열합니다. rwlock
은 특정 시간에 그 스레드가 다음의 특정 규칙에 따라 일부 공통 자원에 액세스 할 수 있도록하기 위해 코드에서 사용되는 동기화 메커니즘입니다. 자원 rwlock
에 의해 "보호되는"라고합니다. 액세스는 공유되는 (많은 스레드가 동시에 읽기 잠금을 가질 수) 또는 독점 (특정 시간에 하나의 스레드 만 쓰기 잠금을 가질 수) 중 하나입니다.
잠금을 요청하는 스레드의 수와 요청 된 잠금의 성격에 따라 액세스가 공유 모드에서 허용되거나 단독으로 허용되거나 전혀 허용되지 않는 가지 중 하나가 될 수도 먼저 다른 thread가 종료 될 때까지 대기합니다.
rwlock_instances
테이블에는 이러한 열이 있습니다.
NAME
잠금에 연결된 instrument 이름.
OBJECT_INSTANCE_BEGIN
instrument 된 잠금 메모리의 주소.
WRITE_LOCKED_BY_THREAD_ID
스레드가 현재 단독 (쓰기) 모드 잠금 된
rwlock
을 가지는 경우,WRITE_LOCKED_BY_THREAD_ID
는 잠근 스레드THREAD_ID
되고, 그렇지 않으면 그것은NULL
입니다.READ_LOCKED_BY_COUNT
스레드가 현재 공유 (읽기) 모드 잠금 된
rwlock
을 가지는 경우,READ_LOCKED_BY_COUNT
가 1 증가됩니다. 이것은 카운터 만 있기 때문에 읽기 잠금을 보유하는 스레드를 찾기 위해 그것을 직접 사용할 수 없지만,rwlock
에 대해 읽기 충돌이 있는지 확인하고 현재 활성 리더 수를 확인 하는 데 사용할 수 있습니다.
다음 두 테이블에 대해 쿼리를 실행하여 모니터링 응용 프로그램 또는 DBA는 잠금을 수반 스레드 간의 어떠한 병목과 교착 상태를 감지 할 수 있습니다.
events_waits_current
스레드가 대기하고있는rwlock
을 확인하는 경우rwlock_instances
,rwlock
을 현재 소유하고있는 다른 thread를 확인하는 경우
제한이 있습니다. rwlock_instances
는 쓰기 잠금을 유지하고있는 thread의 식별에만 사용할 수 있지만 읽기 잠금을 보유하고있는 스레드를 식별하는 데 사용할 수 없습니다.