8.12.5.2 일반적인 스레드의 상태
다음 목록은 복제 등의 특별한 활동이 아니라 일반적인 쿼리의 처리와 관련된 스레드의 State
값을 설명하고 있습니다. 이들의 대부분은 서버의 버그를 찾는 데에만 도움이됩니다.
After create
이것은 스레드가 테이블 (내부 임시 테이블 포함)을 만들 때 테이블을 생성하는 함수의 마지막에 발생합니다. 어떤 오류에 대한 테이블을 만들 수없는 경우에도이 상태가 사용됩니다.
altering table
서버는 적절한
ALTER TABLE
의 실행 중입니다.Analyzing
스레드는
MyISAM
테이블의 키 분포를 계산합니다 (ANALYZE TABLE
등).checking permissions
스레드는 서버가 문을 실행하는 데 필요한 권한을 가지고 있는지 확인합니다.
Checking table
스레드는 테이블 체크를 수행하고 있습니다.
cleaning up
스레드는 하나의 명령을 처리하고 메모리 해제 및 특정 상태 변수 리셋을 준비하고 있습니다.
closing tables
스레드가 변경된 테이블 데이터를 디스크에 플래시 해, 사용한 테이블을 닫고 있습니다. 이것은 고속 작업 일 것입니다. 그렇지 않은 경우, 디스크가 꽉 찼거나 디스크가 현저하게 자주 사용되지 않았는지 확인하십시오.
committing alter table to storage engine
서버는 적절한
ALTER TABLE
을 종료하고 결과를 노력하고 있습니다.converting HEAP to MyISAM
쓰레드가 내부 임시 테이블을
MEMORY
테이블에서 디스크에MyISAM
테이블로 변환합니다.copy to tmp table
스레드는
ALTER TABLE
문을 처리하고 있습니다. 이 상태는 새로운 구조로 테이블이 작성된 후 그러나 그것에 행이 복사되기 전에 발생합니다.Copying to group table
문의
ORDER BY
와GROUP BY
의 기준이 다른 경우, 행은 그룹별로 정렬 된 임시 테이블에 복사됩니다.Copying to tmp table
서버는 메모리에있는 임시 테이블에 복사합니다.
Copying to tmp table on disk
서버는 디스크의 임시 테이블에 복사합니다. 임시 결과 세트가 너무 커져서했습니다 ( 섹션 8.4.4 "MySQL이 내부 임시 테이블을 사용하는 방법" 을 참조하십시오). 그 결과 스레드는 임시 테이블을 인 메모리에서 디스크 기반 포맷으로 변경하여 메모리를 절약합니다.
Creating index
스레드는
MyISAM
테이블에 대한ALTER TABLE ... ENABLE KEYS
를 처리하고 있습니다.Creating sort index
쓰레드가 내부 임시 테이블을 사용하여 해결하는
SELECT
를 처리하고 있습니다.creating table
스레드는 테이블을 만들고 있습니다. 여기에는 임시 테이블 생성이 포함됩니다.
Creating tmp table
스레드는 메모리 또는 디스크에 임시 테이블을 만들고 있습니다. 메모리에 생성 된 테이블이 나중에 디스크 테이블로 변환되는 경우 해당 작업중인 상태
Copying to tmp table on disk
됩니다.deleting from main table
서버는 여러 테이블 삭제의 첫 번째 부분을 실행하고 있습니다. 첫 번째 테이블에서만 삭제하고 다른 (참조) 테이블에서 제거에 사용되는 필드와 오프셋을 저장합니다.
deleting from reference tables
서버는 여러 테이블 삭제의 두 번째 부분을 실행하고 다른 테이블에서 일치하는 행을 삭제합니다.
discard_or_import_tablespace
스레드는
ALTER TABLE ... DISCARD TABLESPACE
또는ALTER TABLE ... IMPORT TABLESPACE
문을 처리하고 있습니다.end
이것은
ALTER TABLE
,CREATE VIEW
,DELETE
,INSERT
,SELECT
또는UPDATE
문 마지막, 그러나 정리 이전에 발생합니다.executing
스레드는 문 실행을 시작했습니다.
Execution of init_command
스레드는
init_command
시스템 변수 값의 문을 실행하고 있습니다.freeing items
스레드는 명령을 실행했습니다. 이 상태에서 실행되는 항목의 해방의 일부는 쿼리 캐시가 포함됩니다. 이런 경우 후에는
cleaning up
됩니다.Flushing tables
스레드는
FLUSH TABLES
를 실행하고 모든 스레드가 각각의 테이블을 청산하기를 기다리고 있습니다.FULLTEXT initialization
서버는 자연 언어 텍스트 검색을 수행 할 준비를하고 있습니다.
init
이것은
ALTER TABLE
,DELETE
,INSERT
,SELECT
또는UPDATE
문을 초기화하기 전에 발생합니다. 이 상태의 서버에 의해 취해지는 조치는 바이너리 로그InnoDB
로그 및 일부 쿼리 캐시 정리 작업 플래시가 포함되어 있습니다.end
상태에서는 다음 작업을 수행 할 수 있습니다.테이블의 데이터가 변경된 후 쿼리 캐시 항목 삭제
바이너리 로그에 이벤트 기록
BLOB 용을 포함한 메모리 버퍼의 해방
Killed
누군가가 스레드에
KILL
문을 보냈으며 스레드는 다음 강제 종료 플래그를 체크 할 때 중지해야합니다. 플래그는 MySQL의 각 주요 루프에서 확인되지만, 경우에 따라서는 스레드가 정지 할 때까지 시간이 좀 걸릴 수 있습니다. 스레드가 다른 스레드에 잠겨 있으면 강제 종료는 다른 스레드가 잠금을 해제하면 즉시 적용됩니다.logging slow query
스레드는 문을 느린 쿼리 로그에 기록합니다.
NULL
이 상태는
SHOW PROCESSLIST
상태로 사용됩니다.login
클라이언트가 성공적으로 인증 될 때까지 연결 스레드의 초기 상태입니다.
manage keys
서버는 테이블 인덱스를 활성화하거나 비활성화합니다.
Opening tables
,Opening table
스레드는 테이블을 열려고 시도합니다. 이것은 무언가 오픈을 금지하지 않는다면 매우 빠른 단계 인 것입니다. 예를 들어,
ALTER TABLE
또는LOCK TABLE
문은 문이 끝날 때까지 테이블 오픈을 방해 할 수 있습니다.table_open_cache
값이 충분히 큰지 체크 할 가치가 있습니다.optimizing
서버는 쿼리의 초기 최적화를 수행하고 있습니다.
preparing
이 상태는 쿼리 최적화 중에 발생합니다.
preparing for alter table
서버는 적절한
ALTER TABLE
의 실행을 준비하고 있습니다.Purging old relay logs
스레드는 불필요한 릴레이 로그 파일을 삭제합니다.
query end
이 상태는 쿼리를 처리 한 뒤, 그러나
freeing items
상태 전에 발생합니다.Reading from net
서버는 네트워크에서 패킷을 읽고 있습니다.
Removing duplicates
쿼리는 MySQL이 초기에 개별 작업을 최적화 할 수 없게되는 방식으로
SELECT DISTINCT
를 사용하고있었습니다. 따라서 MySQL은 결과를 클라이언트로 보내기 전에 모든 중복 행을 제거하기위한 추가 단계가 필요합니다.removing tmp table
스레드는
SELECT
문을 처리 한 후에 내부 임시 테이블을 삭제하고 있습니다. 임시 테이블이 생성되지 않은 경우,이 상태는 사용되지 않습니다.rename
스레드는 테이블의 이름을 변경하고 있습니다.
rename result table
스레드는
ALTER TABLE
문을 처리하고 새 테이블을 만들고 원래의 테이블을 대체하기 위해 이름을 변경하고 있습니다.Reopen tables
스레드는 테이블의 락을 취득했지만, 락의 취득 후 기본 테이블 구조가 변경된 것을 확인했습니다. 그것은 잠금을 해제하고 테이블을 종료하고 다시 열려고하고 있습니다.
Repair by sorting
복구 코드는 인덱스를 생성하기 위해 정렬을 사용하고 있습니다.
Repair done
스레드는
MyISAM
테이블에 대한 멀티 스레드의 복구를 완료했습니다.Repair with keycache
복구 코드는 키 캐시를 통해 하나씩 키 생성을 사용하고 있습니다. 이것은
Repair by sorting
보다 훨씬 느립니다.Rolling back
스레드는 트랜잭션을 롤백하고 있습니다.
Saving state
MyISAM
테이블의 복구 및 분석 등의 작업 스레드는 새로운 테이블 상태를.MYI
파일 헤더에 저장하고 있습니다. 상태 행의 수,AUTO_INCREMENT
카운터, 그리고 키 배포 등의 정보가 포함되어 있습니다.Searching rows for update
스레드는 모든 일치하는 행을 업데이트하기 전에 그들을 찾기위한 제 1 단계를 실행하고 있습니다. 이것은
UPDATE
가 관련된 로우를 찾기 위해 사용되는 인덱스를 변경하는 경우에 수행 될 필요가 있습니다.Sending data
스레드는
SELECT
문 행을 읽고 처리하여 데이터를 클라이언트로 전송하고 있습니다. 이 상태에서 이루어지는 작업은 대량의 디스크 액세스 (읽기)을 실행하는 경향이 있기 때문에 특정 쿼리의 존속 기간에 걸친 긴 시간 실행 상태가 될 수 있습니다.setup
스레드는
ALTER TABLE
작업을 시작합니다.Sorting for group
스레드는
GROUP BY
를 충족하기 위해 정렬을 수행하고 있습니다.Sorting for order
스레드는
ORDER BY
를 충족하기 위해 정렬을 수행하고 있습니다.Sorting index
스레드는
MyISAM
테이블 최적화 작업 중에 더 효율적인 액세스를 위해 인덱스 페이지를 정렬하고 있습니다.Sorting result
SELECT
문의 경우, 이것은Creating sort index
과 유사하지만, 비 임시 테이블에 대한 것입니다.statistics
서버는 쿼리 실행 계획을 개발하기 위해 통계를 계산하고 있습니다. 스레드가 장기간이 상태에있는 경우, 서버는 디스크에 의존하여 다른 작업을 수행 할 수 있습니다.
System lock
스레드는 테이블의 내부 또는 외부 시스템 잠금을 요청하려고하는지 대기하고 있습니다. 이 상태가 외부 락에 대한 요구에 의해 발생하고 있으며, 같은
MyISAM
테이블에 액세스하는 복수의 mysqld 서버를 사용하지 않는 경우,--skip-external-locking
옵션으로 외부 시스템 잠금을 해제 할 수 있습니다 . 그러나 외부 잠금은 기본적으로 해제되기 때문에이 옵션은 효과가 없을 수 있습니다.SHOW PROFILE
의 경우이 상태는 스레드가 잠금을 요청하고있다 (대기하고있는 것이 아니라) 것을 의미합니다.update
스레드는 테이블의 업데이트를 시작할 준비가되어 있습니다.
Updating
스레드는 업데이트 할 행을 찾고 그들을 업데이트하고 있습니다.
updating main table
서버는 여러 테이블 업데이트의 첫 번째 부분을 실행하고 있습니다. 첫번째 테이블 만 업데이트하고 다른 (레퍼런스) 테이블의 갱신에 사용되는 필드와 오프셋을 저장합니다.
updating reference tables
서버는 여러 테이블 업데이트의 두 번째 부분을 실행하고 다른 테이블에서 일치하는 행을 갱신하고 있습니다.
User lock
스레드는
GET_LOCK()
호출에 의해 요청 된 권고 잠금을 요청하려고하는지 대기하고 있습니다.SHOW PROFILE
의 경우이 상태는 스레드가 잠금을 요청하고있다 (대기하고있는 것이 아니라) 것을 의미합니다.User sleep
스레드는
SLEEP()
호출을 호출했습니다.Waiting for commit lock
FLUSH TABLES WITH READ LOCK
은 커밋 잠금을 대기하고 있습니다.Waiting for global read lock
FLUSH TABLES WITH READ LOCK
은 글로벌 읽기 잠금 또는 글로벌read_only
시스템 변수가 설정되는 것을 대기하고 있습니다.Waiting for tables
,Waiting for table flush
스레드는 테이블의 기본 구조가 변경되어 새로운 구조를 얻기 위해 테이블을 다시 열 필요가 있다는 통보를 받았습니다. 그러나 테이블을 다시 열기 위해서는 다른 모든 스레드가 문제의 테이블을 닫을 때까지 대기해야합니다.
이 통지는 다른 쓰레드가
FLUSH TABLES
하거나 문제의 테이블에 다음 문 중 하나를 사용하는 경우,이 통지가 이루어집니다 :FLUSH TABLES
,tbl_name
ALTER TABLE
,RENAME TABLE
,REPAIR TABLE
,ANALYZE TABLE
또는OPTIMIZE TABLE
.Waiting for
lock_type
lock서버는 락의 획득을 대기하고 있습니다. 여기에서
lock_type
는 잠금 유형을 보여줍니다.Waiting for event metadata lock
Waiting for global read lock
Waiting for schema metadata lock
Waiting for stored function metadata lock
Waiting for stored procedure metadata lock
Waiting for table level lock
Waiting for table metadata lock
Waiting for trigger metadata lock
Waiting on cond
스레드가 조건이 true가되는 것을 기다리는 일반적인 상태입니다. 특정 상태 정보를 사용할 수 없습니다.
Writing to net
서버는 네트워크에 패킷을 기록하고 있습니다.