본문 바로가기
반응형

옵티마이저2

[mysql/DB] 옵티마이저 옵티마이저, 힌트는 저번에 한 번 다뤄본적이 있다. 기본 데이터를 비교해 최적의 실행 계획을 수립하는 작업이 필요한데 이 기능을 옵티마이저가 담당한다. 옵티마이저는 DB 서버에서 두뇌와 같은데, 현재 DBMS 는 비용 기반 최적화를 사용하고 과거에는 규칙 기반 최적화 방법을 사용했다 데이터 읽기결과물은 동일하더라고 RDBMS 별로 그 결과를 만들어 내는 과정은 다 다르다.일반적으로 테이블의 전체 크기는 인덱스 보다 훨씬 크기 때문에 테이블을 처음부터 읽는 작업은 상당히 많은 디스크 읽기가 필요하다.그래서 대부분 DBMS는 풀 테이블 스캔을 실행할 때 여러개의 블록이나 페이지를 읽어오는 기능을 내장하고 있다. 즉 하나씩 읽어오는 것이 아니다. (InnoDB 에서는 틀린말) InnoDB 엔진은 특정 테이블의.. 2024. 7. 29.
(DB/MySQL)옵티마이저 실제로 sql 문을 실행하기전에 실행계획을 찾아야함 쿼리를 최적으로 실행하기 위해 각 테이블의 데이터가 어떤 분포로 저장돼 있는지를 참조하고, 데이터를 기반으로 최적의 실행 계획을 수립해주는 것이 옵티마이저(Optimizer)이다 어떤 DBMS든 쿼리의 실행 계획을 수립하는 옵티마이저는 가장 복잡한 부분으로 알려져있다. 하지만 실행 계획을 이해해야 실행 계획의 불합리한 부분을 찾아내고, 더 최적화된 방법으로 실행 계획을 수립하도록 유도할 수 있다. EXPLAIN : 쿼리의 실행계획을 확인 할 수 있음. 쿼리 실행과정 1.SQL파싱 : 사용자로 부터 요청된 sql문장을 잘게 쪼개어 서버가 이해할 수 있는 수준으로 분리 2. 최적화 및 실행 계획 수립 / 어떤 인덱스를 이용할지 선택 : 불필요한 조건 제거 .. 2023. 3. 2.
반응형