14.15.2 InnoDB 모니터 활성화
InnoDB
모니터의 정기적 인 출력을 사용하면 InnoDB
는 그 출력을 mysqld 서버의 표준 에러 출력 ( stderr
)에 기입합니다. 이 경우 클라이언트에 출력이 전송되지 않습니다. 선택 전환되면, InnoDB
모니터는 약 15 초에 1 회 데이터를 출력합니다. 서버의 출력은 일반적으로 오류 로그에 전송됩니다 ( 섹션 5.2.2 "오류 로그" 를 참조하십시오). 이 데이터는 성능 튜닝에 도움이됩니다. Windows에서 출력을 오류 로그가 아니라 창에 보내려면 콘솔 창 명령 프롬프트에서 --console
옵션을 사용하여 서버를 시작합니다.
InnoDB
버퍼 오버 플로우의 가능성을 방지하기 위해 진단 출력을 stdout
또는 고정 크기의 메모리 버퍼에 아니라 stderr
또는 파일로 전송합니다. 부작용으로 SHOW ENGINE INNODB STATUS
의 출력이 MySQL 데이터 디렉토리의 상태 파일에 15 초에 한 번씩 기록됩니다. 이 파일의 이름은 innodb_status.
입니다. 여기서 pid
pid
는 서버 프로세스 ID입니다. InnoDB
는 정상적인 종료 때이 파일을 삭제합니다. 비정상 종료가 발생하면 이러한 상태 파일의 인스턴스가 존재할 가능성이 있기 때문에 수동으로 제거해야합니다. 삭제하기 전에 해당 파일을 검사하여 비정상적인 종료의 원인에 대한 유용한 정보가 포함되어 있는지 여부를 확인하는 것이 좋습니다. innodb_status.
파일은 구성 옵션 pid
innodb-status-file=1
이 설정되어있는 경우에만 작성됩니다.
출력의 생성에 의해 성능이 약간 떨어지기 때문에 InnoDB
모니터가 실제로 모니터 정보의 확인이 필요한 경우에만 사용하도록하십시오. 또한 연결된 테이블을 생성하여 모니터의 출력을 활성화 한 경우 나중에 테이블을 삭제하는 것을 잊은 경우, 오류 로그가 매우 커질 수 있습니다.
문제 해결을 지원하기 위해, InnoDB
는 특정 상황에서 InnoDB
표준 모니터 출력을 일시적으로 활성화합니다. 자세한 내용은 섹션 14.19 "InnoDB 문제 해결" 을 참조하십시오.
각 모니터는 타임 스탬프와 모니터 이름이 포함 된 헤더로 시작합니다. 예 :
===================================== 2014-10-16 16:28:15 7feee43c5700 INNODB MONITOR OUTPUT =====================================
잠금 모니터는 추가 잠금 정보가 부가 된 같은 출력이 생성되기 때문에 InnoDB
표준 모니터의 헤더 ( INNODB MONITOR OUTPUT
)는 잠금 모니터에도 사용됩니다.
InnoDB
모니터의 정기적 인 출력을 사용하려면 CREATE TABLE
문을 사용하여 그 모니터와 관련된 특별한 이름을 가진 InnoDB
테이블을 만듭니다. 예를 들어, InnoDB
표준 모니터를 사용하려면 innodb_monitor
라는 InnoDB
테이블을 만듭니다.
CREATE TABLE
구문의 사용은 MySQL의 SQL 파서를 통해 InnoDB
엔진에 명령을 전달하는 방법에 지나지 않습니다. 중요한 것은 테이블 이름과 그것이 InnoDB
테이블이라는 것뿐입니다. 테이블의 구조는 관계 없습니다. 서버를 종료하면 서버를 다시 시작해도 모니터가 자동으로 다시 시작되지 않습니다. 모니터 테이블을 삭제하고 새 CREATE TABLE
문을 발행하여 모니터를 시작합니다.
InnoDB
모니터를 사용하는 CREATE TABLE
방법은 비추천이며, 향후 릴리스에서 제거 될 수 있습니다. MySQL 5.6.16 시점에서는 innodb_status_output
및 innodb_status_output_locks
시스템 변수를 사용하여 InnoDB
표준 모니터 및 InnoDB
잠금 모니터를 활성화 할 수 있습니다.
InnoDB
모니터를 활성화하거나 비활성화하려면 PROCESS
권한이 필요합니다.
InnoDB 표준 모니터 활성화
InnoDB 표준 모니터에서 정기적 인 출력을 활성화하려면 innodb_monitor
테이블을 만듭니다.
CREATE TABLE innodb_monitor (a INT) ENGINE = INNODB;
InnoDB
표준 모니터를 해제하려면 해당 테이블을 삭제합니다.
DROP TABLE innodb_monitor;
MySQL 5.6.16 시점에서는 innodb_status_output
시스템 변수를 ON
으로 설정하여 InnoDB
표준 모니터를 활성화 할 수 있습니다.
set GLOBAL innodb_status_output = ON;
InnoDB
표준 모니터를 비활성화하려면 innodb_status_output
를 OFF
로 설정합니다.
서버를 종료하면 innodb_status_output
변수가 기본 OFF
값으로 설정됩니다.
주문형 InnoDB 표준 모니터 출력의 취득
InnoDB
표준 모니터에서 정기적 인 출력을 사용하는 대신 출력을 클라이언트 프로그램에 가져올 SHOW ENGINE INNODB STATUS
SQL 문을 사용하여 주문형 InnoDB
표준 모니터 출력을 얻을 수 있습니다. mysql 대화 형 클라이언트를 사용하는 경우 일반 세미콜론 문 터미네이터를 \G
로 대체하면 출력이 읽기 쉬워집니다.
mysql> SHOW ENGINE INNODB STATUS\G
InnoDB 잠금 모니터 활성화
InnoDB
잠금 모니터에서 정기적 인 출력을 활성화하려면 innodb_lock_monitor
테이블을 만듭니다.
CREATE TABLE innodb_lock_monitor (a INT) ENGINE = INNODB;
InnoDB
잠금 모니터를 해제하려면 해당 테이블을 삭제합니다.
DROP TABLE innodb_lock_monitor;
MySQL 5.6.16 시점에서는 innodb_status_output
및 innodb_status_output_locks
시스템 변수를 모두 ON
으로 설정하여 InnoDB
잠금 모니터를 활성화 할 수 있습니다. 잠금 모니터의 출력은 InnoDB
표준 모니터 출력과 함께 출력되므로 잠금 모니터 출력을 활성화하려면 두 모니터를 활성화해야합니다.
set GLOBAL innodb_status_output = ON; set GLOBAL innodb_status_output_locks = ON;
서버를 종료하면 innodb_status_output
및 innodb_status_output_locks
변수가 기본 OFF
값으로 설정됩니다.
InnoDB
잠금 모니터를 비활성화하려면 innodb_status_output_locks
를 OFF
로 설정합니다. InnoDB
표준 모니터도 비활성화하려면 innodb_status_output
를 OFF로 설정합니다.
InnoDB 테이블 스페이스 모니터 활성화
InnoDB
테이블 스페이스 모니터의 정기적 인 출력을 활성화하려면 innodb_tablespace_monitor
테이블을 만듭니다.
CREATE TABLE innodb_tablespace_monitor (a INT) ENGINE = INNODB;
표준 InnoDB
테이블 공간 모니터를 해제하려면 해당 테이블을 삭제합니다.
DROP TABLE innodb_tablespace_monitor;
테이블 스페이스 모니터는 사용되지 않으며 향후 MySQL 릴리스에서 제거 될 예정입니다.
InnoDB 테이블 모니터 활성화
InnoDB
테이블 모니터의 정기적 인 출력을 활성화하려면 innodb_table_monitor
테이블을 만듭니다.
CREATE TABLE innodb_table_monitor (a INT) ENGINE = INNODB;
InnoDB
테이블 모니터를 해제하려면 해당 테이블을 삭제합니다.
DROP TABLE innodb_table_monitor;
테이블 스페이스 모니터는 사용되지 않으며 향후 MySQL 릴리스에서 제거 될 예정입니다.