[SQL 레벨업] 3강 DBMS와 실행 계획

가니·2023년 9월 23일
1

SQL레벨업

목록 보기
2/5
post-thumbnail

데이터에 접근하는 방법은 어떻게 결정될까 ?

RDB에서 데이터 접근 절차를 결정하는 모듈을 쿼리 평가 엔진이라고 불린다.

쿼리 평가 모듈 은 파서,옵티마이저,카탈로그 매니저,플랜평가 와 같은 서브 모듈로 구성된다.

쿼리 처리 흐름

1️⃣  파서 (parser)

: 파서는 구문을 분석한다. SQL 구문을 정형적인 형식으로 변환해준다.

입력한 테이블이 존재하는지, 쉼표 구분이 되어있는지 등




옵티마이저 (optimizer)

: 인덱스 유무, 데이터 분산 또는 편향 정도, DBMS 내부 매개변수 등의 조건을 고려해서 선택 가능한 많은 실행 계획을 작성한 후 2️⃣ , 비용을 연산 3️⃣ 하여 가장 낮은 비용을 가진 실행 계획을 선택한다.

  • 2️⃣  플랜 생성
  • 3️⃣  비용 평가




4️⃣ 카탈로그 매니저 (catalog manager)

: DBMS 의 내부 정보를 모아놓은 테이블들로 , 테이블 또는 인덱스의 통계 정보가 저장되어 있다.

옵티마이저가 실행 계획을 세울 때, 옵티마이저에게 중요한 정보를 제공한다.




5️⃣ 플랜 평가 (plan evaluation)

: 옵티마이저가 여러 개의 실행 계획을 세우면 그것을 받아 최적의 실행 결과를 선택하는 것


옵티마이저와 통계 정보의 중요성

데이터베이스 사용자로서는 옵티마이저를 잘 사용하는 것이 중요하다.

→실제로 최적의 플랜이 선택되지 않는 경우가 꽤 많기 때문

특히 카탈로그 매니저가 관리하는 통계정보에 대해서는 데이터베이스 엔지니어가 항상 신경을 써야한다.

→ 통계 정보(카탈로그 매니저)가 부족하거나 카탈로그 정보가 테이블 또는 인덱스의 실제와 일치하지 않을 때 문제가 생긴다.

최적의 실행 계획이 작성되려면 ?

테이블의 데이터가 많이 바뀌면 카탈로그의 통계 정보도 함께 갱신되어야 한다!

→ but, 카탈로그 갱신 실행 비용이 높음, 갱신 시점을 확실하게 검토해서 맞는 시점에 갱신해야한다.

<MySQL DBMS 통계 정보 갱신>

ANALYZE TABLE [스키마 이름].[테이블 이름];

profile
동료에게 선한 영향력을 전달할 수 있는 개발자가 되고싶닷 ദ്ദി(☆⸝⸝•̀ᴥ•́⸝⸝)

0개의 댓글