MySQL 스레드 상태에 대한 자세한 설명

coldplay.xixi
풀어 주다: 2021-04-16 10:48:39
앞으로
3806명이 탐색했습니다.

MySQL 스레드 상태에 대한 자세한 설명

기사 디렉터리

    • 1. show processlist
    • 2. 명령 명령 유형
    • 3. 사용자 스레드 상태
    • 4. 덤프 스레드 상태
    • 5. IO 스레드 상태
    • 6. SQL 스레드 상태
    • 7. 마스터-슬레이브 연결 스레드 상태
    • 8. 이벤트 예약 스레드 상태

관련 무료 학습 권장 사항: mysql 비디오 튜토리얼

1. 프로세스 목록 표시

  • Id: 연결 프로세스 식별자입니다. CONNECTION_ID() 함수가 반환한 값인가요?
  • User: 명령문을 실행한 MySQL 사용자의 이름입니다. "시스템 사용자"가 표시되면 내부 작업을 수행하는 MySQL에서 생성된 비클라이언트 스레드를 나타냅니다. 예를 들어 기본-대기 복제의 슬레이브 라이브러리에 사용되는 I/O 또는 SQL 스레드 또는 지연된 행 처리기용 스레드입니다. "인증되지 않은 사용자"는 클라이언트가 서버와 TCP/IP 연결을 설정했지만 클라이언트 사용자의 사용자 비밀번호를 아직 인증하지 않은 스레드를 나타냅니다. "event_scheduler"는 예약된 작업 스케줄링 이벤트를 모니터링하는 스레드를 나타냅니다.
  • Host: 명령문을 실행하는 클라이언트의 호스트 이름으로, host_name: client_port에 표시됩니다(skip_name_resolve 매개변수가 활성화된 경우 ip: client_port 형식으로 표시됩니다).
  • Db: 클라이언트가 연결하는 기본 데이터베이스( 연결 시 라이브러리 이름이 지정됨) ), 그렇지 않으면 NULL이 표시됩니다.
  • Command: 스레드에서 실행되는 명령 유형입니다.
  • Time: 스레드가 현재 상태에 있었던 시간(초)입니다. 슬레이브 SQL 스레드의 경우 이 값은 마지막 복제 이벤트 시간과 슬레이브의 실제 시간 사이의 초 수입니다.
  • 상태: 스레드가 수행 중인 작업, 이벤트 또는 상태의 종류를 묻는 메시지를 표시합니다.
  • 정보: 스레드에서 실행 중인 문입니다.

2. 명령 명령 유형

    Binlog Dump: 메인 라이브러리 스레드는 바이너리 로그 내용을 슬레이브 라이브러리로 보내는 데 사용됩니다.
  • 사용자 변경: 스레드가 사용자 변경 작업을 수행 중입니다.
  • stmt 닫기: 스레드가 프리셋을 닫는 중입니다. Compiled 문
  • Connect: 슬레이브 라이브러리 스레드가 메인 라이브러리에 연결되었습니다.
  • Connect Out: 슬레이브 라이브러리가 메인 라이브러리에 연결 중입니다.
  • Create DB: 스레드가 데이터베이스 생성 작업을 수행하는 중입니다.
  • Daemon: 클라이언트 연결 스레드가 아닌 서버 내부 스레드입니다.
  • Debug: 디버깅 정보를 생성하는 스레드입니다.
  • Delayed insert: 삽입 핸들러를 지연시키는 스레드입니다.
  • Drop DB: 스레드가 디버깅 정보를 수행하는 중입니다. 데이터베이스 삭제 작업
  • Execute: 스레드가 미리 컴파일된 good 문을 실행 중입니다.
  • Fetch: 스레드가 문을 실행하고 여기에서 결과 집합을 가져오는 중입니다.
  • Field 목록: 스레드가 테이블 열의 정보를 검색 중입니다.
  • Init DB: 스레드가 기본 데이터베이스를 선택하고 있습니다.
  • Kill: 스레드가 다른 스레드를 종료하고 있습니다.
  • Long Data: 스레드가 명령문을 실행하고 거기에서 설정된 Long 필드(대형 필드) 유형 데이터 결과를 검색하고 반환합니다.
  • Ping : 스레드가 서버 ping 요청을 처리 중입니다.
  • Prepare: 스레드가 명령문을 사전 컴파일하기 위해 실행 중입니다.
  • Processlist: 스레드가 서버 스레드에 대한 정보를 생성 중입니다.
  • Query: 스레드가 쿼리 명령문을 실행 중입니다.
  • Quit: 스레드가 종료 중입니다.
  • Refresh: 스레드가 테이블, 로그 또는 캐시를 새로 고치거나 상태 변수를 재설정하거나 서버 정보를 복사하는 중입니다.
  • Register Slave: 스레드 메인 라이브러리에 슬레이브 라이브러리를 등록하는 중
  • Reset stmt: 스레드가 스레드를 재설정하는 중입니다. 미리 컴파일된 명령문
  • 옵션 설정: 스레드가 클라이언트 명령문 실행 옵션을 설정 또는 재설정하는 중
  • Shutdown: 스레드가 서버 종료를 실행하는 중
  • Sleep: 스레드가 클라이언트가 새 명령문 요청을 보내기를 기다리고 있습니다.
  • 통계 : 스레드가 서버 상태 정보를 생성하는 중
  • 테이블 덤프: 스레드가 슬레이브 라이브러리로 테이블 내용을 보내는 중

3. 사용자 스레드 상태

  • 생성 후: 이 상태는 스레드가 테이블(내부 임시 테이블 포함) 생성을 완료할 때 발생합니다.
    어떤 오류로 인해 테이블 ​​생성이 오류로 종료된 경우에도 이 상태가 발생합니다.
  • 분석 중: 스레드가 ANALYZE TABLE
  • 권한 확인 중: 해당 스레드에 문을 실행하는 데 필요한 권한이 있는지 서버에서 확인
  • 테이블 확인 중: 스레드 테이블 확인 작업이 수행 중입니다.
  • cleaning up: 스레드가 명령 실행을 완료했으며 점유된 메모리를 해제하고 일부 상태 변수를 재설정할 준비를 하고 있습니다.
  • 테이블 닫기: 스레드가 테이블의 변경된 데이터를 플러시하는 중입니다. 디스크에 넣고 표면을 닫습니다.
  • HEAP를 MyISAM으로 변환 중: 스레드가 내부 임시 테이블을 MEMORY 엔진 테이블에서 디스크 MyISAM 엔진의 임시 테이블로 변환 중입니다.
  • tmp 테이블로 복사: 스레드가 ALTER TABLE 문을 실행 중입니다. 이 상태는 새 구조의 테이블이 생성된 후 이전 테이블 데이터를 새 테이블에 복사하기 전에 발생합니다. 그룹 테이블에 복사: 문이 다른 ORDER BY 및 GROUP BY 조건부 열을 사용하는 경우 다음 행을 기준으로 그룹을 따릅니다. 데이터가 정렬되고 정렬된 결과가 임시 테이블에 복사됩니다
  • Copying to tmp table: 서버가 데이터를 메모리 임시 테이블에 복사하고 있습니다.
  • altering table: 서버가 내부 ALTER TABLE
  • 프로세스를 실행하고 있습니다.
  • 디스크의 임시 테이블에 복사 중: 서버가 디스크의 임시 테이블에 데이터를 복사하고 있습니다. 임시 결과 집합이 너무 크기 때문에 스레드는 메모리 절약을 위해 메모리 내 임시 테이블을 디스크 기반 임시 테이블로 변환 중입니다
  • 인덱스 생성 중: 스레드가 ALTER TABLE ... ENABLE KEYS 문을 실행 중입니다
  • 생성 중 sort index: 스레드가 SELECT를 실행 중이며 내부 임시 테이블을 사용합니다
  • 테이블 생성 중: 스레드가 테이블을 생성 중입니다. 이 상태는 임시 테이블을 생성할 때도 사용됩니다.
  • Creating tmp table: 스레드가 메모리나 디스크에 임시 테이블을 생성하는 중입니다. 테이블이 메모리에 생성되었지만 나중에 디스크 테이블로 변환된 경우 해당 작업 중 상태는 "Copying to tmp table on disk"가 됩니다.
  • alter table을 스토리지 엔진에 커밋: 서버가 내부 작업을 완료하는 ALTER를 수행했습니다. 알고리즘 TABLE 문, 제출
  • 기본 테이블에서 삭제 중: 서버가 다중 테이블 삭제 문의 첫 번째 부분을 실행하고 있습니다. 이
  • 상태는 첫 번째 테이블에서 삭제되고 있으며 다른 테이블의 후속 삭제를 위해 열 데이터와 오프셋을 저장하고 있음을 나타냅니다.

  • 참조 테이블에서 삭제: 서버는 삭제에서 다중 테이블 삭제 문의 두 번째 부분을 실행하고 있습니다. 다른 테이블의 행 일치
  • discard_or_import_tablespace: 스레드가 ALTER TABLE … DISCARD TABLESPACE 또는 ALTER TABLE … IMPORT TABLESPACE 문을 실행 중입니다.
  • end: 이는 문 실행이 끝날 때 발생하지만 ALTER TABLE, CREATE VIEW, DELETE, INSERT를 지운 후에 발생합니다. 이 상태는 SELECT 또는 UPDATE 문 이전에 발생합니다
  • 실행 중: 스레드가 명령문을 실행 중입니다
  • init_command 실행: 스레드가 시스템 변수를 초기화하는 명령문을 실행 중입니다
  • 항목 해제 중: 스레드가 명령 실행을 완료했습니다. 쿼리 캐시 상태
  • 와 관련된 일부 항목을 출시합니다. 이 상태 다음에는 일반적으로 정리 상태가 옵니다.

  • FULLTEXT 초기화: 서버가 자연어 전체 텍스트 검색을 수행할 준비를 하고 있습니다.
  • init: 이 상태는 ALTER TABLE, DELETE, INSERT, SELECT 또는 UPDATE 문이 초기화되기 전에 발생합니다. . 이 상태에서 서버가 수행하는 작업에는 바이너리 로그, InnoDB 로그 새로 고침 및 일부 쿼리 캐시 정리 작업이 포함됩니다. 이 상태가 끝나면 다음과 같은 작업이 수행될 수 있습니다.
  • 테이블의 데이터가 변경되면 쿼리 캐시 항목 삭제
  • 바이너리 로그에 이벤트 쓰기
    Blob을 포함한 메모리 버퍼 해제
  • Killed: 스레드에 대한 종료 작업을 시작하고 스레드는 종료 작업을 수행해야 합니다. 스레드의 종료 플래그는 MySQL의 모든 메인 루프에서 확인되지만 어떤 경우에는 스레드를 종료하는 데 짧은 시간만 걸릴 수 있습니다. 그러나 종료되는 스레드가 다른 스레드에 의해 잠긴 경우 kill 명령이 적용되어 실행되기 전에 다른 스레드가 잠금을 해제할 때까지 기다려야 합니다.
  • 느린 쿼리 로깅: 스레드가 느린 쿼리 로그에 명령문을 작성 중입니다.
  • login: 클라이언트가 성공적으로 인증될 때까지 연결 스레드의 초기 상태
  • 키 관리: 서버가 테이블 인덱스를 활성화 또는 비활성화 중입니다.
  • NULL: 이 상태는 SHOW PROCESSLIST 문에 사용됩니다.
  • 테이블 열기: 스레드가 테이블을 열려고 합니다. 오픈 테이블 작업은 오픈 작업이 차단되지 않는 한 매우 빨라야 합니다. 예를 들어 ALTER TABLE 또는 LOCK TABLE 문은 해당 문이 완료될 때까지 테이블이 열리지 않도록 합니다. 또한 table_open_cache의 크기가 충분하지 않아 테이블을 열 수 없을 수도 있습니다.
  • optimizing: 서버가 쿼리에 대한 초기 최적화를 수행 중입니다.
  • preparing: 쿼리 최적화 중에 발생하는 상태
  • Purging old Relay Logs: 스레드가 불필요한 릴레이 로그 파일을 삭제하는 중
  • query end: 쿼리를 실행할 때 발생하는 상태 명령문 이후 쿼리문과 관련된 상태 항목을 해제하기 전
  • Reading from net: 서버가 네트워크에서 데이터 패킷을 읽고 있습니다. MySQL 5.7.8 이후에는 이 상태를 "클라이언트로부터 수신"이라고 합니다. - 클라이언트로부터 수신: 서버가 클라이언트로부터 패킷을 읽고 있습니다. MySQL 5.7.8에서는 "Reading from net"이라고 합니다
  • 중복 제거: 쿼리에서 SELECT DISTINCT 문을 사용하는 경우 MySQL은 초기 단계에서 구별 작업을 최적화할 수 없습니다. 따라서 MySQL에서는 모든 중복 행을 제거한 다음 결과를 클라이언트에 보내기 위한 추가 단계가 필요합니다.
  • tmp 테이블 제거: 스레드는 SELECT 문 실행이 완료된 후 내부 임시 테이블을 삭제합니다. SELECT 문이 임시 테이블을 생성하지 않으면 이 상태는 발생하지 않습니다.
  • rename: 스레드가 테이블 이름을 바꾸기 위해 rename 문을 실행 중입니다.
  • rename 결과 테이블: 스레드가 테이블 이름을 바꾸기 위해 ALTER TABLE 문을 실행 중입니다. 새 테이블이 생성되어 처리 중입니다. 이전 테이블 이름을 새 테이블로 바꾸세요
  • 테이블 다시 열기: 스레드가 테이블 잠금을 획득했지만 잠금을 획득한 후 기본 테이블 구조가 발견되었습니다. 변경되었습니다.
    따라서 테이블 잠금을 해제하고 테이블을 닫은 후 테이블을 다시 열어보세요.
  • Repair by sorting: 복구 코드는 정렬을 사용하여 인덱스를 생성합니다.
  • alter table 준비 중: 서버가 ALTER TABLE 문 실행을 준비 중입니다. in-place 알고리즘 - Repair done : 이 스레드는 MyISAM 테이블의 멀티스레드 복구를 완료했습니다.
  • Repair with keycache: 복구 코드는 키 캐시를 통해 하나씩 키를 생성하여 인덱스를 복구하는 방식을 사용합니다. . 이는 정렬된 인덱스 방법에 의한 복구보다 훨씬 느립니다.
  • 롤백: 스레드가 트랜잭션을 롤백하고 있습니다.
  • 상태 저장: MyISAM 테이블 작업(예: 복구 또는 분석)의 경우 스레드는 새 테이블 상태를 .MYI 파일 헤더. 상태에는 테이블 데이터 행 수, AUTO_INCREMENT 카운터 및 키 배포와 같은 정보가 포함됩니다.
  • 업데이트할 행 검색 중: 스레드는 업데이트하기 전에 일치하는 모든 행을 찾기 위해 첫 번째 단계를 수행하고 있습니다. UPDATE가 관련 행을 찾는 데 사용되는 인덱스를 변경하는 경우 업데이트와 일치하는 행을 먼저 찾아야 합니다. 데이터 보내기: 스레드는 SELECT 문에 의해 생성된 데이터 행을 읽고 처리하며 데이터를 클라이언트에 보냅니다. 이 상태에서 발생하는 작업은 상당한 디스크 액세스(읽기)를 생성할 수 있으므로 일반적으로 해당 쿼리의 수명 동안 가장 오래 실행되는 상태입니다.
  • 클라이언트에 보내기: 서버가 클라이언트에 패킷을 쓰고 있습니다. MySQL 5.7.8 이전에는 "Writing to net"이라고 했습니다.
  • setup: 스레드가 ALTER TABLE 작업을 수행 중입니다.
  • 그룹 정렬: 스레드가 GROUP BY 정렬 작업을 수행 중입니다.
  • 순서 정렬: 스레드는 다음과 같습니다. ORDER BY 정렬 작업 수행
  • 색인 정렬: 스레드는 MyISAM 테이블 최적화 작업 중에 보다 효율적인 액세스를 위해 인덱스 페이지를 정렬하고 있습니다.
  • 정렬 결과: SELECT 문의 경우 이는 "정렬 인덱스 생성" 상태와 비슷하지만 비- 임시 테이블
  • statistics : 서버는 쿼리 실행 계획을 최적화하기 위해 통계를 계산하고 있습니다. 스레드가 이 상태로 오랫동안 지속되면 서버가 디스크에 다른 작업을 수행하여 통계 정보의 동작을 차단하거나 잠금 대기가 발생할 수 있습니다.
  • 시스템 잠금: mysql_lock_tables()라는 스레드와 스레드 상태가 업데이트되지 않았습니다. 이는 매우 일반적인 상태이며 여러 가지 이유로 발생할 수 있습니다. 예를 들어 스레드는 테이블에 대한 내부 또는 외부 시스템 잠금을 요청하거나 기다리고 있습니다. 이는 InnoDB가 LOCK TABLES 동안 테이블 수준 잠금을 기다리고 있을 때 발생할 수 있습니다. 이 상태가 외부 잠금 요청으로 인해 발생한 경우, 동일한 MyISAM 테이블에 액세스하기 위해 여러 mysqld 서버를 사용하지 않는 경우 –skip-external-locking 옵션을 사용하여 외부 시스템 잠금을 비활성화할 수 있습니다. 그러나 외부 잠금은 기본적으로 비활성화되어 있으므로 이 옵션은 효과가 없을 수 있습니다.
  • SHOW PROFILE의 경우 이 상태는 스레드가 잠금을 요청하고 있음을 나타냅니다.
  • update: 스레드가 테이블 업데이트 시작을 준비 중입니다.
  • Updating: 스레드가 데이터 행을 검색하고 업데이트하는 중입니다.
  • updating main table: 서버가 테이블 업데이트를 실행 중입니다. 다중 테이블 업데이트 문의 첫 번째 부분입니다. 이 상태는 첫 번째 테이블이 업데이트 중임을 나타내며
    다른 (참조) 테이블 업데이트를 위해 열 값과 오프셋이 저장됩니다.
  • 참조 테이블 업데이트 중: 서버가 다중 테이블 업데이트 문의 두 번째 부분을 실행하여 다른 테이블을 업데이트하고 있음을 나타냅니다. tables
  • 사용자 잠금에 대한 일치 라인: 스레드는 GET_LOCK() 호출을 통해 요청된 제안된 잠금을 요청하거나 기다리고 있습니다. SHOW PROFILE의 경우 이 상태는 스레드가 대기 없이 잠금을 요청하고 있음을 나타냅니다.
  • 사용자 절전: 스레드가 SLEEP() 호출을 호출했습니다.
  • 커밋 잠금 대기 중: FLUSH TABLES WITH READ LOCK 문이 커밋 잠금을 획득 중입니다.
  • 전역 읽기 잠금 대기 중: FLUSH TABLES WITH READ LOCK 전역 읽기 잠금 또는 전역 read_only 시스템 변수 설정 획득 대기 중
  • 테이블 대기 중: 스레드는 테이블의 기본 구조가 변경되었으며 다시 열어야 한다는 알림을 받습니다. 새로운 구조를 얻기 위한 테이블. 그러나 테이블을 다시 열려면 다른 모든 스레드가 이전 데이터 구조에 대한 테이블에 대한 액세스를 닫을 때까지 기다려야 합니다. 이 알림은 다른 스레드가 플러시 테이블 또는 테이블의 다음 문장 중 하나를 사용한 경우에 발생합니다.
    테이블 플러시를 기다리는 중: 스레드가 FLUSH TABLES를 실행하고 있으며 모든 스레드가 액세스된 테이블을 닫을 때까지 기다리고 있습니다. 또는 스레드가 테이블의 기본 구조가 변경되었다는 알림을 받고 새 테이블을 얻으려면 테이블을 다시 열어야 한다는 알림을 받습니다. 구조. 그러나 테이블을 다시 열려면 다른 모든 스레드가 이전 테이블 구조에 대한 액세스를 닫을 때까지 기다려야 합니다. 이 알림은 다른 스레드가 테이블에서 FLUSH TABLES 또는 다음 문 중 하나를 사용한 경우 발생합니다.
  • FLUSH TABLES tbl_name
  • ALTER TABLE
  • RENAME TABLE
  • REPAIR TABLE
  • ANALYZE TABLE
OPTIMIZE TABLE
lock_type 잠금 대기 중: 서버는 THR_LOCK 잠금을 획득하거나 메타데이터 잠금 하위 시스템에서 MDL 잠금을 획득하기를 기다리고 있습니다. 여기서 lock_type은 획득을 기다리고 있는 MDL 잠금 유형을 나타내고 THR_LOCK에는 한 가지 유형만 있습니다(대기 중 테이블 수준 잠금), MDL 잠금은 다음과 같습니다.
  • 이벤트 메타데이터 잠금을 기다리는 중
  • 글로벌 읽기 잠금을 기다리는 중
  • 스키마 메타데이터 잠금을 기다리는 중
  • 저장 함수 메타데이터 잠금을 기다리는 중
  • 저장 프로시저 메타데이터 잠금을 기다리는 중
테이블 메타데이터 잠금을 기다리는 중
  • 트리거 메타데이터 잠금을 기다리는 중
  • Waiting on cond: 스레드가 조건이 true가 되기를 기다리는 일반적인 상태입니다. 특정 상태 정보가 없습니다.
  • Writing to net: 서버가 네트워크에 패킷을 쓰고 있습니다. MySQL 5.7.8부터는 "클라이언트로 보내기"라고 합니다
  • 4. 스레드 상태 덤프
  • 한 binlog 읽기 완료; 다음 binlog로 전환: 스레드가 binlog 파일 읽기를 완료하고 다음으로 전환했습니다. 하나의 binlog 파일
  • 마스터가 모든 binlog를 슬레이브로 보냈습니다. 추가 업데이트를 기다리고 있습니다. 스레드는 바이너리 로그에서 나머지 모든 업데이트 로그를 읽고 이를 슬레이브 라이브러리로 보냈습니다. 스레드는 현재 유휴 상태이며 새로 업데이트된 데이터 이벤트가 바이너리 로그에 기록되기를 기다리고 있습니다.
binlog 이벤트를 슬레이브로 보내기: 스레드가 바이너리 로그에서 이벤트를 읽고 이제 이를 슬레이브 라이브러리(바이너리 로그)로 보냅니다. 이벤트는 일반적으로 업데이트된 데이터와 기타 정보로 구성됩니다.)
  • 종료 완료 대기 중: 스레드가 중지되고 스레드가 스레드 중지와 관련된 작업을 수행할 때 발생하는 매우 짧은 상태
5 .IO 스레드 상태

  • 마스터 버전 확인 중: 마스터 라이브러리와 연결을 설정한 후 매우 짧은 상태로, 마스터 라이브러리의 버전 번호를 확인 중임을 나타냅니다.
  • 마스터에 연결 중: 스레드가 마스터 라이브러리에 연결을 시도합니다.
  • 마스터 대기 중 이벤트를 릴레이 로그에 추가: 스레드 SQL 스레드에서 재생하기 위해 이벤트를 읽고 릴레이 로그에 복사했습니다.
  • 실패한 binlog 덤프 요청 후 다시 연결 중: 스레드가 마스터에 다시 연결을 시도 중입니다.
  • 실패한 마스터 이벤트 후 다시 연결 중 읽기: 스레드가 마스터 라이브러리에 다시 연결을 시도하는 중입니다. 다시 연결이 성공하면 상태가 "마스터가 이벤트를 보내기를 기다리는 중"으로 변경됩니다. - 마스터에 슬레이브를 등록하는 중: 마스터 라이브러리에 성공적으로 연결한 후 매우 짧은 상태입니다. 슬레이브가 마스터 라이브러리에 이벤트를 보내고 있습니다. 슬레이브 라이브러리의 연결 정보(예: 슬레이브 라이브러리의 IP 및 포트 정보 등)를 등록합니다.
  • binlog 덤프 요청: 연결 후 매우 짧은 상태입니다. 메인 라이브러리가 성공적으로 설정되었습니다. 현재 I/O 스레드 위치를 사용하여 메인 라이브러리를 요청합니다. 마스터가 이벤트를 보내기를 기다리는 중: 스레드가 이미 메인 라이브러리에 연결되어 있으며 지속될 수 있는 새로운 바이너리
    로그 이벤트를 기다리고 있습니다. 메인 라이브러리가 유휴 상태라면 오랜 시간 동안. Slave_net_timeout초 이상 대기가 계속되면 슬레이브 I/O 스레드가 시간 초과됩니다. 이때 슬레이브 라이브러리 I/O 스레드는 마스터 라이브러리와의 연결이 끊겼다고 생각하고 마스터 라이브러리에 다시 연결을 시도합니다
  • Waiting for master update : 마스터 라이브러리에 연결되기 전의 초기 상태
  • Waiting 종료 시 슬레이브 뮤텍스의 경우: 스레드가 중지될 때 I/O 스레드의 관련 상호 배타적 리소스가 재활용되고 있음을 나타내는 잠시 발생하는 상태

  • 슬레이브 SQL 스레드가 충분한 릴레이 로그 공간을 확보할 때까지 기다리는 중: Relay_log_space_limit가 있는 경우 변수 설정 값이 0이 아닌 경우 릴레이 로그의 전체 크기가 이 값에 도달할 때를 초과하여 커지는 경우입니다. I/O 스레드는 SQL 스레드가 릴레이 로그 내용을 재생하고 재생된 릴레이 로그를 삭제하여 릴레이 로그가 차지하는 공간을 해제할 때까지 대기하므로 릴레이 로그의 크기는 Relay_log_space_limit 변수의 값보다 크지 않습니다. . , I/O 스레드는 릴레이 로그 작업을 계속 작성할 수 있습니다.
  • binlog 덤프 요청 실패 후 재연결 대기 중: 바이너리 로그 덤프 요청이 실패하면(연결 끊김으로 인해) 스레드가 절전 상태에 진입합니다. 이때 이 상태가 발생하며, 이후 I/O 스레드가 주기적으로 시도합니다. 기본 라이브러리에 다시 연결하세요. 재시도 간격은 CHANGE MASTER TO 문의 MASTER_CONNECT_RETRY 옵션을 사용하여 지정할 수 있습니다
  • 슬레이브 라이브러리의 I/O 스레드에는 메인 라이브러리에 연결할 수 있는 하트비트 메커니즘이 있습니다. 이 하트비트 시간을 초과하면 새 데이터가 슬레이브에 도착하면 I/O 스레드가 기본 라이브러리에 하트비트 요청을 시작합니다. 요청이 성공하면 하트비트 시간이 재설정됩니다. 새 이벤트를 슬레이브에 보내면 하트비트 시간도 재설정됩니다. 하트비트 시간 Change master 문의 MASTER_HEARTBEAT_PERIOD 옵션으로 설정(초), 범위 0 ~ 4294967초, 해상도(밀리초) 0이 아닌 최소 값은 0.001이며 1밀리초를 나타냅니다. 간격을 0으로 설정하면 하트비트가 비활성화됩니다. 기본값은slave_net_timeout 구성 매개변수의 절반입니다. 따라서 이론상으로는 마스터-슬레이브 데이터베이스가 정상일 때 마스터 라이브러리가 데이터를 쓰지 않아 슬레이브 라이브러리의 I/O 스레드 연결이 끊어지는 상황은 발생하지 않습니다.
마스터 이벤트 읽기 실패 후 다시 연결을 기다리는 중: 기본 라이브러리 binlog를 읽는 동안 오류가 발생했습니다(연결 끊김으로 인해). I/O 스레드가 메인 라이브러리에 다시 연결을 시도하기 전에 스레드는 CHANGE MASTER TO 문의 MASTER_CONNECT_RETRY 옵션(기본값은 60)에 의해 설정된 시간(이 시간은 재연결 실패 후 재시도 간격임) 동안 휴면 상태입니다. )
6. SQL 스레드 상태
    • Killing 슬레이브: 스레드가 STOP SLAVE 문을 처리 중입니다
    • 재생 전 임시 파일 만들기(추가) LOAD DATA INFILE: 스레드가 LOAD DATA INFILE 문을 실행하고 라이브러리에서 읽을 데이터를 임시 파일에 추가하는 중입니다.
    • LOAD DATA INFILE 재생 전 임시 파일 만들기(생성): 스레드가 LOAD DATA INFILE 문을 실행하고 임시 파일을 만드는 중입니다. 임시 파일에는 라이브러리에서 읽을 행 데이터가 포함되어 있습니다. 참고: 이 상태는 메인 라이브러리가 MySQL 5.0.3 이전 버전의 원본 LOAD DATA INFILE 문을 기록할 때만 발생할 수 있습니다.
    • 릴레이 로그에서 이벤트 읽기: 스레드가 Replay
    • 처리를 위해 릴레이 로그에서 이벤트를 읽고 있습니다. 슬레이브가 모든 릴레이 로그를 읽었습니다. 추가 업데이트를 기다리고 있습니다. 스레드가 모든 릴레이 로그 파일의 모든 이벤트를 다시 실행했으며 I/O 스레드가 릴레이 로그에 새 이벤트를 기록하기를 기다리고 있습니다.
    • 코디네이터의 이벤트를 기다리는 중: 언제 슬레이브 라이브러리는 다중 스레드 복제를 사용합니다(slave_parallel_workers는 1보다 큼). 이 상태는 슬레이브 작업 스레드가 코디네이터 스레드(코디네이터 스레드)가 로그 이벤트를 배포하기를 기다리고 있음을 나타냅니다.
    • 종료 시 슬레이브 뮤텍스를 기다리는 중: 스레드가 중지됩니다.
    • 슬레이브 작업자가 보류 중인 이벤트를 해제하기를 기다리는 경우 발생하는 매우 짧은 상태: 작업자 스레드에서 처리하는 총 이벤트 수가 Slave_pending_jobs_size_max 시스템 변수의 크기를 초과하면 대기 작업이 발생합니다(코디네이터 스레드는 이를 수행하지 않습니다). 작업자 스레드에 이벤트를 할당합니다.) 코디네이터는 작업자 스레드에서 처리한 총 이벤트 수가slave_pending_jobs_size_max 제한 아래로 떨어지면 예약을 재개합니다. 이 상태는slave_parallel_workers가 0보다 크게 설정된 경우에만 발생합니다.
    • 릴레이 로그에서 다음 이벤트를 기다리는 중: "릴레이 로그에서 이벤트를 읽는 중" 상태 이전의 초기 상태
    • 마스터 실행 이벤트 후 MASTER_DELAY초까지 기다리는 중: SQL 스레드는 이벤트를 읽었으나 적용하지 않은 상태로, 대신 슬레이브 라이브러리에서 설정한 지연 복사 시간이 만료되기를 기다리고 있습니다. 이 지연 시간은 CHANGE MASTER TO
      ⚫의 MASTER_DELAY 옵션을 사용하여 설정됩니다. ⚫ SQL 스레드의 Info 열에도 문의 텍스트가 표시될 수 있습니다. 이는 스레드가 릴레이 로그에서 이벤트를 읽고 여기에서 SQL 문을 추출했으며 현재 이 문에 해당하는 이벤트를 실행 중일 수 있음을 의미합니다.

    7. 마스터-슬레이브 연결 스레드 상태

    • 마스터 변경 중: 스레드가 CHANGE MASTER TO 문을 처리 중입니다.
    • 슬레이브 죽이기: 스레드가 STOP SLAVE 문을 처리 중입니다.
    • 마스터 덤프 테이블 열기: 이 상태 덤프 테이블 이후에 마스터 라이브러리 생성 시 발생
    • 마스터 덤프 테이블 데이터 읽기: "마스터 덤프 테이블 열기" 상태 이후에 나타나는 상태는 메인 데이터베이스 덤프 테이블에서 데이터를 읽고 있음을 나타냅니다.
    • 인덱스 재구축 마스터 덤프 테이블: "마스터 덤프 테이블 데이터 읽기" 상태 뒤에 나타나는 상태는 메인 라이브러리 덤프 테이블 인덱스가 재구축되고 있음을 나타냅니다.

    8. 이벤트 스케줄링 스레드 상태

    • Clearing: 스케줄러 스레드가 중지 중입니다. 이벤트 실행
    • 초기화됨: 스케줄러 스레드가 초기화되었으며 실행됩니다. 이벤트 예약
    • 다음 활성화를 기다리는 중: 스케줄러에 비어 있지 않은 이벤트 큐가 있으면 활성화 큐의 이벤트가 예약되기를 기다리고 있습니다.
    • 스케줄러가 중지되기를 기다리는 중: 스레드는 SET GLOBAL event_scheduler = OFF를 실행하고 스케줄러가 중지될 때까지 기다립니다.
    • 빈 대기열에서 대기: 스케줄러의 이벤트 대기열이 비어 있으므로 스케줄러는 Sleeping

    관련 무료 학습 권장 사항:mysql 데이터베이스(동영상)

위 내용은 MySQL 스레드 상태에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:csdn.net
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿