• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.6 한글메뉴얼) [close]
  • 1. MySQL 5.6 새로운 기능
  • 2. MySQL 설치 및 업그레이드
  • 3. MySQL Tutorial
  • 4. MySQL 프로그램
  • 5. MySQL 서버관리
  • 6. 보안
  • 7. 백업 및 복구
  • 8. 최적화
  • 9. Language Structure(언어구조)
  • 10. Character Sets(Globalization)
  • 11. 데이터형(Data Types)
  • 12. 함수와 연산자
  • 13. SQL 문법
  • 14. InnoDB 스토리지 엔진
  • 15. 기타 스토리지 엔진
  • 16. 고가용성 및 확장성
  • 17. 리플리케이션
  • 18. MySQL Cluster
  • 19. 파티셔닝
  • 20. Stored Programs and Views
  • 21. INFORMATION_SCHEMA
  • 22. PERFORMANCE SCHEMA
  • 1. Performance Schema 빠른 시작
    2. Performance Schema 구성
    3. Performance Schema 쿼리
    4. Performance Schema Instrument Naming Conventions
    5. Performance Schema Status Monitoring
    6. Performance Schema Atom and Molecule Events
    7. Performance Schema Statement Digests
    8. Performance Schema의 일반적인 테이블 특성
    9. Performance Schema 테이블 설명
    1. 성능 스키마 테이블 인덱스
    2. 성능 스키마 설정 테이블
    3. Performance Schema Instance Tables
    4. Performance Schema Wait Event Tables
    5. Performance Schema Stage Event Tables
    6. Performance Schema Statement Event Tables
    7. Performance Schema 연결 테이블
    8. Performance Schema 연결 속성 테이블
    9. Performance Schema 요약 테이블
    10. Performance Schema 기타 테이블
    1. host_cache 테이블
    2. performance_timers 테이블
    3. threads 테이블
    10. Performance Schema Option and Variable Reference
    11. Performance Schema Command Options
    12. Performance Schema System Variables
    13. Performance Schema Status Variables
    14. Performance Schema and Plugins
    15. 문제를 진단하기위한 Performance Schema 사용
  • 23. 컨넥터 및 API
  • 24. MySQL 확장
  • 25. MySQL Enterprise Edition
  • 26. MySQL Workbench
  • 27. 제약 및 제한
  • 28. MySQL 5.7 새로운 기능

22.9.10.3 스레드 테이블

threads 테이블은 각 서버 스레드의 행을 포함합니다. 각 행은 스레드에 대한 정보를 저장하고 이에 대한 모니터링이 활성화되어 있는지 여부를 나타냅니다.

mysql> SELECT * FROM threads\G
*************************** 1. row ***************************
          THREAD_ID: 1
               NAME: thread/sql/main
               TYPE: BACKGROUND
     PROCESSLIST_ID: NULL
   PROCESSLIST_USER: NULL
   PROCESSLIST_HOST: NULL
     PROCESSLIST_DB: NULL
PROCESSLIST_COMMAND: NULL
   PROCESSLIST_TIME: 80284
  PROCESSLIST_STATE: NULL
   PROCESSLIST_INFO: NULL
   PARENT_THREAD_ID: NULL
               ROLE: NULL
       INSTRUMENTED: YES
...
*************************** 4. row ***************************
          THREAD_ID: 51
               NAME: thread/sql/one_connection
               TYPE: FOREGROUND
     PROCESSLIST_ID: 34
   PROCESSLIST_USER: isabella
   PROCESSLIST_HOST: localhost
     PROCESSLIST_DB: performance_schema
PROCESSLIST_COMMAND: Query
   PROCESSLIST_TIME: 0
  PROCESSLIST_STATE: Sending data
   PROCESSLIST_INFO: SELECT * FROM threads
   PARENT_THREAD_ID: 1
               ROLE: NULL
       INSTRUMENTED: YES
...

threads 테이블의 초기 내용은 성능 스키마의 초기화가 수행 될 때 존재하는 스레드에 따라 달라집니다. 그런 다음 서버가 스레드를 만들 때마다 새로운 행이 추가됩니다.

스레드의 종료시 threads 테이블에서 행 삭제가 이루어집니다. 클라이언트 세션과 연관된 스레드는 세션을 종료 할 때 삭제가 이루어집니다. 클라이언트의 자동 재 연결이 활성화되고 세션이 끊어 후 다시 연결하면 세션은 다른 PROCESSLIST_ID 값을 가지는 threads 테이블에 새 행에 연결됩니다. 새로운 스레드의 초기 INSTRUMENTED 값은 원래 스레드 값과 다를 수 있습니다. 그동안 setup_actors 테이블이 변경되어있을 수 있습니다 원래 스레드 INSTRUMENTED 값이 초기화 후 변경되는 경우 그 변경은 새로운 스레드에 미루어지지 않습니다.

PROCESSLIST_ 의 프리픽스있는 이름을 가진 threads 테이블 컬럼은 INFORMATION_SCHEMA.PROCESSLIST 테이블 또는 SHOW PROCESSLIST 명령문에서 사용할 수있는 것과 유사한 정보를 제공합니다. 따라서 이러한 모든 소스는 스레드 모니터링 정보를 제공합니다. threads 의 사용은 다음의 점에서 다른 두 소스의 사용과 다릅니다.

  • threads 에 대한 액세스는 상호 배타적 잠금이 필요없이 서버 성능에 미치는 영향은 크지 않습니다. INFORMATION_SCHEMA.PROCESSLIST 와 SHOW PROCESSLIST 는 상호 배타적 잠금이 필요하므로 성능이 저하 될 수 있습니다.

  • threads 스레드가 포 그라운드 스레드 또는 백그라운드 스레드 여부와 스레드에 연결된 서버의 위치 등의 각 스레드의 추가 정보를 제공합니다.

  • threads 는 백그라운드 스레드에 대한 정보를 제공하기 위해, 다른 thread 정보 소스에서는 불가능한 활동의 모니터에 사용할 수 있습니다.

  • 스레드 모니터링을 활성화하거나 비활성화 할 수 있습니다 (즉, 스레드에 의해 실행되는 이벤트가 instrument되는지 여부). 기존의 스레드 모니터링을 제어하려면 threads 테이블 INSTRUMENTED 컬럼을 설정합니다. 새로운 포 그라운드 스레드의 초기 INSTRUMENTED 값을 제어하려면 setup_actors 테이블을 사용합니다. (스레드 모니터링이 이루어지는 상황에 대한 자세한 내용은 INSTRUMENTED 컬럼의 설명을 참조하십시오.)

이러한 이유로, INFORMATION_SCHEMA.PROCESSLIST 또는 SHOW PROCESSLIST 를 사용하여 서버 모니터링을 실행하는 DBA는 대신 threads 를 사용하여 모니터하고자하는 경우가 있습니다.

참고

INFORMATION_SCHEMA.PROCESSLIST 및 SHOW PROCESSLIST 는 다른 사용자 스레드에 대한 정보는 현재 사용자에게 PROCESS 권한이있는 경우에만 표시됩니다. 이것은 threads 테이블에는 적용되지 않습니다. 테이블의 SELECT 권한을 가진 모든 사용자에게 모든 행이 표시됩니다. 다른 사용자의 스레드를 볼 수 없도록해야한다 사용자에게 그 권한을주지 마십시오.

threads 테이블에는 이러한 열이 있습니다.

  • THREAD_ID

    고유의 스레드 식별자.

  • NAME

    서버의 스레드 계측 코드에 연관된 이름. 예를 들어, thread/sql/one_connection 는 사용자 연결의 처리를 담당하는 코드의 스레드 함수에 대응 해, thread/sql/main 은 서버의 main() 함수를 나타냅니다.

  • TYPE

    FOREGROUND 또는 BACKGROUND 스레드의 종류. 사용자 연결 스레드는 전경 스레드입니다. 내부 서버 활동에 연관된 스레드는 백그라운드 스레드입니다. 예를 들어, 내부 InnoDB 쓰레드 슬레이브로 정보를 전송하는 'Binlog Dump "스레드 슬레이브 I / O 및 SQL 스레드입니다.

  • PROCESSLIST_ID

    INFORMATION_SCHEMA.PROCESSLIST 테이블에 표시되는 스레드의 경우, 이것은 그 테이블의 ID 열에 표시되는 동일한 값입니다. 그것은 SHOW PROCESSLIST 출력의 Id 컬럼에 표시되는 값과 그 스레드에서 CONNECTION_ID() 의 반환 값이기도합니다.

    백그라운드 스레드 (사용자 연결과 관련된 아닌 thread)의 경우 PROCESSLIST_ID 은 NULL 이기 때문에 값은 고유하지 않습니다. (MySQL 5.6.9 이전에는 백그라운드 스레드의 경우 값은 0입니다.)

  • PROCESSLIST_USER

    포 그라운드 스레드에 연결된 사용자 백그라운드 스레드의 경우는 NULL .

  • PROCESSLIST_HOST

    포 그라운드 스레드에 연결된 클라이언트의 호스트 이름 백그라운드 스레드의 경우는 NULL .

  • PROCESSLIST_DB

    스레드의 기본 데이터베이스, 아무것도없는 경우는 NULL .

  • PROCESSLIST_COMMAND

    스레드가 실행하는 명령의 종류. 스레드 명령에 대한 설명은 섹션 8.12.5 "스레드 정보 검사" 를 참조하십시오. 이 컬럼 값은 클라이언트 / 서버 프로토콜 COM_ xxx 명령과 Com_ xxx 상태 변수에 대응합니다. 섹션 5.1.6 "서버 상태 변수" 를 참조하십시오

  • PROCESSLIST_TIME

    스레드가 현재 상태에서 초.

  • PROCESSLIST_STATE

    스레드가 행하고있는 것을 나타내는 액션 이벤트 또는 상태. PROCESSLIST_STATE 값에 대한 설명은 섹션 8.12.5 "스레드 정보 검사" 를 참조하십시오.

    대부분의 상태가 매우 빠른 동작에 해당합니다. 스레드가 몇 초에도 특정 상태에 머물러있는 경우는 문제가 발생하고있을 가능성이 있고, 조사가 필요합니다.

  • PROCESSLIST_INFO

    스레드가 실행하는 명령문 또는 그것이 모든 문이 실행되지 않을 경우 NULL . 이 문은 서버에 보내는 명령문 또는 명령문이 다른 문을 실행하는 경우에는 가장 안쪽의 문이 될 수 있습니다. 예를 들어, CALL 문이 SELECT 문을 실행하는 저장 프로 시저를 실행하는 경우 PROCESSLIST_INFO 값은 SELECT 문이 표시됩니다.

  • PARENT_THREAD_ID

    이 스레드가 하위 ​​스레드 (다른 스레드에 의해 생성 된) 인 경우, 이것은 생성 된 쓰레드의 THREAD_ID 입니다. 스레드의 생성은 INSERT DELAYED 문에서 행 삽입을 처리하는 등 발생합니다.

  • ROLE

    사용되지 않습니다.

  • INSTRUMENTED

    스레드가 instrument되는지 여부. 이것은 스레드 threads 테이블 행에 영향을주지 않고 스레드에서 실행되는 이벤트가 instrument되는지 여부에 영향을줍니다.

    • 포 그라운드 스레드는 초기 INSTRUMENTED 값은 스레드에 연결된 사용자 계정이 setup_actors 테이블의 모든 행에 일치하는 여부에 따라 결정됩니다. 조합은 PROCESSLIST_USER 및 PROCESSLIST_HOST 컬럼 값을 기준으로합니다.

      스레드가 하위 스레드를 생성하는 경우, 그 하위 스레드에 데이터가 다시 이루어집니다.

    • 백그라운드 스레드의 경우 INSTRUMENTED 은 기본적으로 YES 입니다. 백그라운드 스레드에 연결된 사용자는 않기 때문에 setup_actors 는 참조되지 않습니다.

    • 어느 thread에서도 스레드의 유효 기간 동안 그 INSTRUMENTED 값이 변경 될 수 있습니다. 이것은 유일한 변경 가능한 threads 테이블 컬럼입니다.

    스레드에서 실행되는 이벤트 모니터링을하는 경우 이러한 것이 적용해야합니다.

    • setup_consumers 테이블의 thread_instrumentation 소비자는 YES 이어야합니다.

    • thread.INSTRUMENTED 컬럼은 YES 이어야합니다.

    • setup_instruments 테이블에서 사용되는 instrument에서 생성 된 스레드 이벤트에 대해서만 모니터링이 이루어집니다.


서울시 강남구 영동대로 602 6층
TEL: 02-6061-0006  /  E: csr@mysqlkorea.com
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved