이 영역을 누르면 첫 페이지로 이동
나눔코딩 블로그의 첫 페이지로 이동

나눔코딩

페이지 맨 위로 올라가기

나눔코딩

10. 기술면접 - 데이터 베이스 - 옵티마이저 (Optimizer)

  • 2021.10.18 09:29
  • ∞. 기술 면접/4. 데이터베이스
공부목적으로 다른 블로그의 글을 그대로 따라치면서 작성되었습니다. 저작권 문제 시, 비공개 처리하겠습니다

 

옵티마이저 (Optimizer)

- 옵티마이저란?
    - SQL 개발자가 SQL을 작성하여 실행할 때, 옵티마이저는 SQL을 어떻게 실행할 것 인지를 계획하게 된다
    - SQL 실행 계획 (Execution Plan)을 수리합하고 SQL 을 실행한다
    - 옵티마이저는 SQL의 실행 계획을 수립하고 SQL 을 실행하는 데이터베이스 관리 시스템의 소프트웨어이다
    - 동일한 결과가 나오는 SQL 도 어떻게 실행하느냐에 따라서 성능이 달라지기에, SQL 성능에 옵티마이저는
      아주 중요한 역할을 한다

 

옵티마이저 특징

- 옵티마이저는 데이터 딕셔너리(Data Dictionary)에 있는 오브젝트 통계, 시스템 통계 등의 정보를 사용해서 예상되는
  비용을 산정한다
- 옵티마이저는 여러 개의 실행 계획 중에서 최저 비용을 가지고 있는 계획을 선택해서 SQL 을 실행한다
  ( 예시로 JOIN 을 줄 때 가장왼쪽이 큰 테이블 오른쪽으로 갈 수록 작은 테이블 순으로 가야 속도가 빠르게 나오는데, 옵티마이저가 순서 정리가 되있지 않아도 알아서 최저 비용을 계획하여 실행한다 )

 

옵티마이저의 필요성

- SQL 개발자가 작성한 SQL 문을 어떻게 실행하느냐에 따라 성능이 달라진다
  (때문에 최적의 실행 계획을 관리해줌으로써 일반적인 성능을 보장해줄 수 있다)

- 이로써 개발자가 SQL 문을 잘 못 짜도 성능은 보장받을 수 있게 된다.

옵티마이저 실행 방법

1. 개발자가 SQL 을 실행하면 파싱(Parshing)을 실행해서 SQL의 문법 검사 및 구문 분석을 수행한다

2. 구문 분석이 완료되면, 옵티마이저가 규칙 기반 혹은 비용 기반으로 실행 계획을 수립한다

3. 실행 수립이 완료되면, 최종적으로 SQL을 실행하고, 실행이 완료되면 데이터를 인출 (Fetch) 한다

 

옵티마이저 엔진

https://velog.io/@yewon-july/Optimizer

- 규칙 기반 옵티마이저 (Rule Base Optimizer)는 실행 계획을 수립할 때, 15개의 우선 순위를 기준으로 실행 계획을 수립한다

- 최신 Oracle 버전은 규칙 기반 옵티마이저보다 비용 기반 옵티마이저를 기본적으로 사용한다

- /** Rule */ 를 사용해서 옵티마이저에서 규칙 기반 옵티마이저로 실행하도록 알려준다

https://velog.io/@yewon-july/Optimizer

 

참고

https://velog.io/@yewon-july/Optimizer

 

[SQL 최적화의 원리]옵티마이저(Optimizer)

이 게시물은 "SQL 개발자 이론서+기출문제(이기적)"을 참고하여 작성되었습니다. :)

velog.io

 

저작자표시 (새창열림)

'∞. 기술 면접 > 4. 데이터베이스' 카테고리의 다른 글

12. 기술면접 - 데이터베이스 - 파티셔닝(Partitioning)  (0) 2021.10.18
11. 기술 면접 - 데이터베이스 - 리플리케이션 (Replication)  (0) 2021.10.18
09. 기술면접 - 데이터베이스 - 효과적인 쿼리 저장  (0) 2021.10.17
07. 기술면접 - 데이터베이스 - Statement와 PrepareStatement  (0) 2021.10.17
06. 기술면접 - 데이터베이스 - 인덱스 (Index)  (0) 2021.10.17

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • 12. 기술면접 - 데이터베이스 - 파티셔닝(Partitioning)

    12. 기술면접 - 데이터베이스 - 파티셔닝(Partitioning)

    2021.10.18
  • 11. 기술 면접 - 데이터베이스 - 리플리케이션 (Replication)

    11. 기술 면접 - 데이터베이스 - 리플리케이션 (Replication)

    2021.10.18
  • 09. 기술면접 - 데이터베이스 - 효과적인 쿼리 저장

    09. 기술면접 - 데이터베이스 - 효과적인 쿼리 저장

    2021.10.17
  • 07. 기술면접 - 데이터베이스 - Statement와 PrepareStatement

    07. 기술면접 - 데이터베이스 - Statement와 PrepareStatement

    2021.10.17
다른 글 더 둘러보기

정보

나눔코딩 블로그의 첫 페이지로 이동

나눔코딩

  • 나눔코딩의 첫 페이지로 이동

검색

메뉴

  • 홈
  • 태그
  • 방명록

카테고리

  • 분류 전체보기 (316)
    • ∞. 읽은 거리 (3)
    • ∞. 기술 면접 (61)
      • 1. 자료구조 (0)
      • 2. 네트워크 (9)
      • 3. 운영체제 (11)
      • 4. 데이터베이스 (13)
      • 5. 디자인 패턴 (0)
      • 6. 알고리즘 (0)
      • 7. 자바 (15)
      • 8. 자바스크립트 (7)
      • 9. 스프링 (5)
      • 10. 시큐리티 (1)
      • 11. 기타 (0)
      • 12. Vue (0)
    • ∞. 웹개발 유용한 사이트 (14)
    • ∞. 트러블 슈팅 + TIL (7)
    • 00. 출발 (9)
    • 01. 엑셀 (9)
      • 기초 (4)
      • 컴활 1급 (4)
      • VBA (0)
    • 02. 엑세스 (9)
      • 기초 (5)
      • 컴활 1급 (4)
    • 04. Oracle (1)
      • 기초 (1)
    • 03. JAVA (8)
      • 기초 (7)
      • 객체지향 프로그래밍 (0)
    • 05. HTML (13)
      • 기초 (1)
      • css (10)
      • sass (0)
      • less (0)
    • 06. Javascript (16)
      • 기초 (13)
      • ES6 모듈 (2)
      • Canvas (0)
    • 07. JSP (0)
      • 기초 (0)
    • 08. jQuery (0)
      • 기초 (0)
    • 09. BootStrap (1)
      • 기초 (0)
      • v4 - Layout (1)
    • 10. Spring (30)
      • 기초 (3)
      • 실험 (4)
      • MVC (1)
      • BOOT (6)
      • Security (10)
      • Lib (Library) (2)
      • 벤치마킹 (0)
      • JUnit5 (2)
      • DevTools (0)
      • Socket (1)
      • Batch (0)
      • Mobile (0)
      • WebFlux (0)
      • Cloud (0)
      • Thymleaf (0)
      • Actuator (0)
      • 성능 테스트 (1)
    • 11. JetBrains (34)
      • 기초 (1)
      • IntelliJ IDEA (33)
      • WebStorm (0)
      • Pycham (0)
    • 12. API (0)
      • 기초 (0)
      • 네이버 API (0)
      • 카카오 API (0)
      • 구글 API (0)
      • 인스타그램 API (0)
    • 13. AutoHotkey (1)
    • 14. Python (8)
      • 기초 (3)
      • Selenium (2)
      • Beautiful Soup (0)
      • openpyxl (1)
      • Pyqt5 (0)
      • Deep learning (open CV) (0)
      • Geocoder (0)
      • Anaconda (0)
      • DeepLearning (0)
      • Jupyter Nootbook (0)
    • 14.5. R (0)
    • 15. JMeter (0)
      • 다운로드 (0)
    • 16. Vue JS (23)
      • 기초 (3)
      • Vue 2 (15)
      • Vue 3 (5)
      • Vuetify 2.5.8 (0)
    • 17. Git (12)
      • 기초 (8)
      • ItelliJ IDEA (4)
      • SourceTree (0)
    • 18. AWS (5)
      • 기초 (2)
      • Jira (3)
    • 19. Naver Cloud Platform (0)
    • 20. Google Cloud Platform (0)
      • 기초 (0)
      • stt & tts (0)
    • 21. Kotlin (0)
    • 22. Android (0)
      • 기초 (0)
      • Java (0)
      • Kotlin (0)
      • Flutter FrameWork (0)
    • 23. Clean Code [JAVA] (1)
    • 24. BuildTool (1)
      • Maven (1)
      • Gradle (0)
    • 25. 자료 구조와 알고리즘 (18)
      • JAVA (1)
      • Java Script (1)
      • 프로그래머스 (0)
      • 백준 알고리즘 (0)
      • 나의 알고리즘 (14)
      • Brilliant 공부 (0)
    • 26. React (1)
      • 기초 (0)
      • 강의 정리 (1)
    • 27. PostMan (0)
      • 기초 (0)
    • 28. 프로그래머스 (9)
    • 29. Leet Code (0)
    • 30. MySQL (3)
      • 기초 (2)
      • 문제 (1)
    • 73. GraphQL (0)
    • 74. Nuxt JS (0)
    • 75. Electron (0)
    • 76. UX & UI Design Tool (0)
      • 기초 (0)
      • Axure (0)
      • Sketch (0)
      • Figma (0)
    • 77. MarkDown (1)
      • 기초 (1)
    • 78. Tomcat (1)
      • 메모 (1)
    • 79. Element JS (0)
    • 80. Parallax JS (0)
      • 기초 (0)
    • 81. Player JS (0)
      • 기초 (0)
    • 82. Smart Maker (0)
    • 83. Vim (0)
      • 기초 (0)
    • 84. Linux (0)
      • 기초 (0)
      • Centos 7 (0)
      • Ubuntu (0)
    • 85. Node JS (2)
      • 기초 (1)
      • WebRTC (0)
      • NVM (1)
    • 86. Propeller JS (0)
    • 87. FullPage JS (0)
      • 기초 (0)
    • 88. 아두이노 (0)
    • 89. Tensorflow (0)
    • 90. 웹 패킷 분석 (0)
    • 91. 크롬 개발자도구 (0)
    • 92. 디자인 패턴 (7)
      • 생성(Creational) (3)
      • 구조(Structral) (1)
      • 행위(Behavioral) (2)
      • SOLID 패턴 (0)
    • 95. Linux Shell Script (0)
    • 96. 구글 애널리스틱 (0)
    • 97. ffmpeg (0)
    • 98. ShareX (1)
    • 자료실 (0)
    • 기타 (2)

최근 글

인기 글

댓글

공지사항

아카이브

태그

  • 엑셀 분석작업
  • 엑셀 가운데맞춤
  • 엑셀 기타작업
  • 엑셀 기본작업
  • 엑셀 표시형식
  • 졵
  • 엑셀 글씨
  • 깁

나의 외부 링크

  • 비전공자 개발자
  • 자바 디자인 패턴
  • 자바 디자인 패턴
  • 스프링 블로그
  • 해킹보안 & 웹 관련
  • ERD 생성
  • 전문 기술 블로그
  • Servlet에 대한 개념없이 스프링을 했네요?
  • 스프링 FitlerChainList
  • 알고리즘 파워 블로그

정보

THE HEYDAZE의 나눔코딩

나눔코딩

THE HEYDAZE

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. © THE HEYDAZE. Designed by Fraccino.

티스토리툴바