Aurora MySQL 스레드 상태
다음은 Aurora MySQL의 일반 스레드 상태입니다.
- 권한 확인
-
스레드는 서버에 명령문을 실행하는 데 필요한 권한이 있는지 확인합니다.
- 쿼리에 대한 쿼리 캐시 확인
-
서버는 현재 쿼리가 쿼리 캐시에 있는지 확인합니다.
- 정리
-
이 상태는 작업이 완료되었지만 클라이언트에 의해 닫히지 않은 연결의 최종 상태입니다. 가장 좋은 해결책은 코드에서 연결을 명시적으로 닫는 것입니다. 또는 파라미터 그룹에서
wait_timeout
에 대해 더 낮은 값을 설정할 수 있습니다. - 테이블 닫기
-
스레드가 변경된 테이블 데이터를 디스크로 플러시하고 사용된 테이블을 닫습니다. 빠른 작업이 아닌 경우 인스턴스 클래스 네트워크 대역폭에 대해 네트워크 대역폭 사용 지표를 확인합니다. 또한
table_open_cache
및table_definition_cache
의 파라미터 값이 엔진이 테이블을 자주 열고 닫을 필요가 없도록 충분한 테이블을 동시에 열 수 있는지 확인합니다. 이러한 파라미터는 인스턴스의 메모리 사용에 영향을 줍니다. - HEAP을 MyISAM으로 변환
-
쿼리는 임시 테이블을 인메모리에서 온디스크로 변환하고 있습니다. 쿼리 처리의 중간 단계에서 MySQL에서 만든 임시 테이블이 메모리에 비해 너무 커지기 때문에 이러한 변환이 필요합니다.
tmp_table_size
및max_heap_table_size
의 값을 확인합니다. 이후 버전에서는 이 스레드 상태 이름은converting HEAP to ondisk
입니다. - HEAP을 온디스크로 변환
-
스레드는 내부 임시 테이블을 인메모리 테이블에서 온디스크 테이블로 변환합니다.
- 임시 테이블에 복사
-
스레드가
ALTER TABLE
문을 처리 중입니다. 이 상태는 새 구조의 테이블이 작성된 후 행이 이 테이블로 복사되기 전에 발생합니다. 이 상태의 스레드의 경우 성능 스키마를 사용하여 복사 작업의 진행률에 대한 정보를 얻을 수 있습니다. - 정렬 인덱스 생성
-
Aurora MySQL은 기존 인덱스를 사용하여 쿼리의
ORDER BY
또는GROUP BY
절을 충족시킬 수 없기 때문에 정렬을 수행합니다. 자세한 내용은 정렬 인덱스 생성 단원을 참조하십시오. - 테이블 생성
-
스레드가 영구 또는 임시 테이블을 생성 중입니다.
- 지연된 커밋 확인 완료
-
Aurora MySQL의 비동기 커밋이 승인을 받아 완료되었습니다.
- 지연된 커밋 확인 시작
-
Aurora MySQL 스레드는 비동기 커밋 프로세스를 시작했지만 승인을 기다리고 있습니다. 이 시간은 일반적으로 트랜잭션의 진정한 커밋 시간입니다.
- 지연된 전송 확인 완료
-
응답이 클라이언트에 전송되는 동안 연결된 Aurora MySQL 작업자 스레드를 해제할 수 있습니다. 스레드는 다른 작업을 시작할 수 있습니다.
delayed send ok
상태는 클라이언트에 대한 비동기 승인이 완료되었음을 의미합니다. - 지연된 전송 확인 시작
-
Aurora MySQL 작업자 스레드가 클라이언트에 비동기적으로 응답을 보냈으므로 이제 다른 연결에 대해 자유롭게 작업할 수 있습니다. 트랜잭션이 아직 승인되지 않은 비동기 커밋 프로세스를 시작했습니다.
- executing
-
스레드가 명령문을 실행하기 시작했습니다.
- freeing items
-
스레드가 명령을 실행했습니다. 이 상태에서 수행되는 항목의 일부 해제에는 쿼리 캐시가 포함됩니다. 이 상태는 일반적으로 정리됩니다.
- init
-
이 상태는
ALTER TABLE
,DELETE
,INSERT
,SELECT
또는UPDATE
문의 초기화 전에 발생합니다. 이 상태의 작업에는 이진 로그 또는 InnoDB 로그의 플러시 및 쿼리 캐시의 일부 정리가 포함됩니다. - 소스가 모든 binlog를 복제본으로 전송했습니다. 더 많은 업데이트를 기다리고 있습니다.
-
주 노드가 복제의 일부를 완료했습니다. 스레드는 이진 로그(binlog)에 쓸 수 있도록 더 많은 쿼리가 실행되기를 기다리고 있습니다.
- 테이블 열기
-
스레드가 테이블을 열려고 합니다. 이 작업은
ALTER TABLE
또는LOCK TABLE
문이table_open_cache
값을 완료해야 하거나 초과하지 않는 한 빠르게 수행됩니다. - 최적화
-
서버가 쿼리에 대해 초기 최적화를 수행 중입니다.
- 준비 중
-
이 상태는 쿼리 최적화 중에 발생합니다.
- 쿼리 종료
-
이 상태는 쿼리 처리 후 항목 해제 상태 전에 발생합니다.
- 중복 제거
-
Aurora MySQL은 쿼리의 초기 단계에서
DISTINCT
작업을 최적화 할 수 없습니다. Aurora MySQL은 결과를 클라이언트에 보내기 전에 중복된 행을 모두 제거해야 합니다. - 업데이트를 위해 행 검색
-
스레드는 업데이트하기 전에 일치하는 모든 행을 찾습니다. 이 단계는
UPDATE
가 엔진이 행을 찾는 데 사용하는 인덱스를 변경하는 경우 필요합니다. - binlog 이벤트를 슬레이브로 보내기
-
스레드는 이진 로그에서 이벤트를 읽은 다음 복제본으로 보냅니다.
- 캐시된 결과를 클라이언트로 보내기
-
서버가 쿼리 캐시에서 쿼리 결과를 가져와 클라이언트로 보냅니다.
- 데이터 전송
-
스레드가
SELECT
문에 대한 행을 읽고 처리하고 있지만 아직 클라이언트로 데이터 전송을 시작하지 않았습니다. 이 프로세스는 쿼리를 충족하는 데 필요한 결과가 포함된 페이지를 식별하는 것입니다. 자세한 내용은 데이터 전송 단원을 참조하십시오. - 클라이언트로 전송
-
서버가 클라이언트에 패킷을 쓰고 있습니다. 이전 MySQL 버전에서 이 대기 이벤트에
writing to net
의 레이블이 지정되었습니다. - starting
-
이 단계는 명령문 실행 시작의 첫 번째 단계입니다.
- statistics
-
서버는 쿼리 실행 계획을 개발하기 위해 통계를 계산하고 있습니다. 스레드가 오랫동안 이 상태인 경우 서버가 다른 작업을 수행하는 동안 디스크 바인딩될 수 있습니다.
- 쿼리 캐시에 결과 저장
-
서버가 쿼리 캐시에 쿼리 결과를 저장하고 있습니다.
- system lock
-
스레드가
mysql_lock_tables
를 호출했지만 호출 이후 스레드 상태가 업데이트되지 않았습니다. 이 일반적인 상태는 여러 가지 이유로 발생합니다. - update
-
스레드가 테이블 업데이트를 시작하기 위해 준비 중입니다.
- updating
-
스레드가 행을 검색하고 업데이트하고 있습니다.
- user lock
-
스레드가
GET_LOCK
호출을 실행했습니다. 스레드는 자문 잠금을 요청하고 기다리고 있거나 자문 잠금을 요청할 계획입니다. - 추가 업데이트 대기 중
-
주 노드가 복제의 일부를 완료했습니다. 스레드는 이진 로그(binlog)에 쓸 수 있도록 더 많은 쿼리가 실행되기를 기다리고 있습니다.
- 스키마 메타데이터 잠금 대기 중
-
메타데이터 잠금을 기다리는 것입니다.
- 저장된 함수 메타데이터 잠금 대기 중
-
메타데이터 잠금을 기다리는 것입니다.
- 저장된 프로시저 메타데이터 잠금 대기 중
-
메타데이터 잠금을 기다리는 것입니다.
- 테이블 플러시 대기 중
-
스레드는
FLUSH TABLES
를 실행 중이며 모든 스레드에서 해당 테이블을 닫을 때까지 대기하고 있습니다. 또는 스레드는 테이블의 기본 구조가 변경되었다는 알림을 받았으므로 테이블을 다시 열어 새 구조를 가져와야 합니다. 테이블을 다시 열려면 스레드는 다른 모든 스레드에서 테이블을 닫을 때까지 기다려야 합니다. 이 알림은 다른 스레드가 테이블에서FLUSH TABLES
,ALTER TABLE
,RENAME TABLE
,REPAIR TABLE
,ANALYZE TABLE
또는OPTIMIZE TABLE
문 중 하나를 사용한 경우 발생합니다. - 테이블 수준 잠금 대기 중
-
한 세션은 테이블에서 잠금을 유지하는 반면 다른 세션은 동일한 테이블에서 동일한 잠금을 가져오려고 시도합니다.
- 테이블 메타데이터 잠금 대기 중
-
Aurora MySQL은 메타데이터 잠금을 사용하여 데이터베이스 객체에 대한 동시 액세스를 관리하고 데이터 일관성을 보장합니다. 이 대기 이벤트에서 한 세션은 테이블에서 메타데이터 잠금을 유지하는 반면 다른 세션은 동일한 테이블에서 동일한 잠금을 가져오려고 시도합니다. 성능 스키마가 사용 설정되면 이 스레드 상태는
synch/cond/sql/MDL_context::COND_wait_status
대기 이벤트로 보고됩니다. - net에 쓰기
-
서버가 네트워크에 패킷을 쓰고 있습니다. MySQL 이후 버전에서 이 대기 이벤트에
Sending to client
의 레이블이 지정됩니다.