💬 MySQL 5.7버전 이하에서는?
간단한 테이블 / 인덱스 정보만 가지고 실행 계획을 수립해 효과가 떨어졌습니다.
💬 MySQL 8.0버전 이상부터는?
인덱스가 걸리지 않은 컬럼의 히스토그램도 모두 수집해 실행 계획의 효과를 높였습니다.
버전 | 비교 |
---|---|
v5.5 이하 | 테이블 통계 정보를 모두 메모리에 올려둬서 |
서버를 껐다 키면 다 날아갔습니다. | |
v5.6 이상 | innodb_index_stats 테이블과 |
innodb_table_stats 테이블에 통계 정보를 저장해놓고 사용합니다. |
💾 영속화 관련 옵션
STATS_PERSISTENT | 1이면 통계 정보를 영구적으로 저장합니다. | v5.6 이상 |
---|---|---|
STATS_AUTO_RECALC | 1이면 통계 정보를 자동으로 수집합니다. | |
0이면 ANALYZE TABLE 실행 시에만 수집합니다. |
MySQL에서는 히스토그램으로 컬럼의 데이터 분포를 나타냅니다.
히스토그램이 없을 때?