mysqlcheck와 --analyze 옵션으로 테이블 분석하기
MySQL Server에서 특정 데이터베이스에 속한 모든 테이블을 명령줄에서 한 번에 분석하려면 mysqlcheck 클라이언트 프로그램에 --analyze 옵션을 함께 사용하면 됩니다. 이 명령은 데이터베이스 내부에서 ANALYZE TABLE 문을 실행하는 것과 동일한 효과를 가지며, 키 분포 통계를 생성·갱신하여 쿼리 옵티마이저가 더 나은 실행 계획을 세우도록 돕습니다.
기본 문법
mysqlcheck -u root --analyze db_name
- -u root : 분석 작업을 수행할 사용자 계정을 지정합니다.
- --analyze : 테이블 분석(ANALYZE)을 수행하는 옵션입니다.
- db_name : 분석 대상 데이터베이스의 이름입니다.
실행 예제
다음 명령은 'query' 데이터베이스에 포함된 모든 테이블을 분석합니다.
C:\mysql\bin>mysqlcheck -u root --analyze query query.cars OK query.copy_cars OK query.countries Table is already up to date query.customers OK query.date_time_test OK query.detail_bday OK query.eeee OK query.emp OK query.emp123 OK query.emp_t OK query.employee12 OK query.employee13 OK query.examination_btech OK query.item_list OK query.item_list1 OK query.new_number OK query.reservation OK query.reservations OK query.reserve OK query.student OK query.student_detail OK query.student_info OK query.student_marks OK query.tender OK query.website OK
결과 해석
- OK : 해당 테이블의 분석이 정상적으로 완료되었음을 의미합니다.
- Table is already up to date : 테이블이 이미 최신 키 분포 통계를 가지고 있어 분석이 필요하지 않다는 의미입니다.
참고 사항
테이블 분석은 대량의 데이터를 삽입·수정·삭제한 이후에 실행하면 특히 유용합니다. 통계가 최신 상태로 유지되면 JOIN, WHERE 조건 처리 시 옵티마이저가 인덱스를 효율적으로 선택하여 쿼리 성능이 향상됩니다. 또한 특정 테이블만 분석하고 싶다면 데이터베이스 이름 뒤에 테이블 이름을 함께 지정하면 됩니다.
mysqlcheck -u root --analyze db_name table_name