13.7.2.1 ANALYZE TABLE 구문
ANALYZE [NO_WRITE_TO_BINLOG | LOCAL] TABLEtbl_name
[,tbl_name
] ...
ANALYZE TABLE
은 테이블의 키 분포를 분석하고 저장합니다. 분석 중, 테이블은 InnoDB
와 MyISAM
에 대한 읽기 잠금 잠금됩니다. 이 문은 InnoDB
, NDB
및 MyISAM
테이블에서 작동합니다. MyISAM
테이블의 경우,이 문은 myisamchk --analyze를 사용하는 것과 같습니다.
InnoDB
에서 분석이 어떻게 작동하는지에 대한 자세한 내용은 섹션 14.13.16.1 "영구 옵티 마이저 통계 매개 변수 구성" 및 섹션 14.13.17 "InnoDB 테이블에 ANALYZE TABLE의 복잡성 추정" 을 참조 바랍니다. 섹션 14.6.7 "InnoDB 테이블에서의 제한" 을 참조하십시오. 특히 innodb_stats_persistent
옵션을 활성화 한 경우, InnoDB
테이블에 대량의 데이터를로드하거나 테이블의 새로운 인덱스를 생성 한 후에 ANALYZE TABLE
을 실행해야합니다.
MySQL은 저장된 키 분포를 사용하여 상수가 아닌 무언가에 대한 결합이 실행 된 때 테이블 조인 순서를 결정합니다. 또한 쿼리에서 특정 테이블에 어떤 인덱스를 사용할지 여부를 결정하려면 키 분포를 사용할 수 있습니다.
이 문은이 테이블에 대한 SELECT
및 INSERT
권한이 필요합니다.
ANALYZE TABLE
은 파티션 된 테이블에 대해 지원되는 때문에 ALTER TABLE ... ANALYZE PARTITION
을 사용하여 하나 이상의 파티션을 분석 할 수 있습니다. 자세한 내용은 섹션 13.1.7 "ALTER TABLE 구문」 및 섹션 19.3.4 "파티션 관리" 를 참조하십시오.
MySQL 5.6.11에서만이 문을 발행하기 전에 gtid_next
를 AUTOMATIC
으로 설정해야합니다. (Bug # 16062608, Bug # 16715809, Bug # 69045)
ANALYZE TABLE
은 다음 컬럼을 포함하는 결과 집합을 반환합니다.
컬럼 | 값 |
---|---|
Table | 테이블 이름 |
Op | 항상 analyze |
Msg_type | status , error , info , note 또는 warning |
Msg_text | 정보 메시지 |
SHOW INDEX
문을 사용하여 저장된 키 분포를 확인할 수 있습니다. 섹션 13.7.5.23 "SHOW INDEX 구문" 을 참조하십시오.
테이블이 마지막 ANALYZE TABLE
문 뒤에 변경되지 않은 경우 해당 테이블을 다시 분석하는 것은 아닙니다.
기본적으로 서버는 ANALYZE TABLE
문을 바이너리 로그에 기록하고 또 리플리케이션 슬레이브에 복제되도록합니다. 로깅을하지 않으려면 옵션의 NO_WRITE_TO_BINLOG
키워드 또는 별칭 LOCAL
을 지정합니다.