옵티마이저 스위치: 인비저블 인덱스

공부하는 감자·2024년 3월 29일
0

MySQL

목록 보기
36/74
post-thumbnail

인비저블 인덱스

Use Invisible Indexes

  • MySQL 8.0 이전 버전까지는 인덱스가 존재하면 항상 옵티마이저가 실행 계획을 수립할 때 해당 인덱스를 검토하고 사용했다.
  • MySQL 8.0 버전부터 인덱스의 가용 상태를 제어할 수 있는 기능이 추가되었다.
    • 인덱스를 삭제하지 않고, 해당 인덱스를 사용하지 못하게 제어하는 기능 제공
  • 인덱스의 가용 상태 변경
    • ALTER TABLE ... ALTER INDEX ... [ VISIBLE | INVISIBLE ]

      -- 옵티마이저가 ix_hiredate 인덱스를 사용하지 못하게 변경
      ALTER TABLE employees ALTER INDEX ix_hiredate INVISIBLE;
      
      -- 옵티마이저가 ix_hiredate 인덱스를 사용할 수 있게 변경
      ALTER TABLE employees ALTER INDEX ix_hiredate VISIBLE;
  • use_invisible_indexes 옵티마이저 옵션을 이용하면 INVISIBLE로 설정된 인덱스라 하더라도 옵티마이저가 사용하게 제어할 수 있다.
    • OFF로 설정하면 인덱스는 옵티마이저가 볼 수 없는 상태이고, ON으로 설정하면 옵티마이저가 INVISIBLE 상태의 인덱스도 볼 수 있다.

    • 기본값은 OFF이다.

      SET optimizer_switch='use_invisible_indexes=on'

Reference

참고 서적

📔 Real MySQL 8.0

profile
책을 읽거나 강의를 들으며 공부한 내용을 정리합니다. 가끔 개발하는데 있었던 이슈도 올립니다.

0개의 댓글