Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 바이너리 카운팅
- 열 속성
- 조합
- StringBuilder
- hashcode
- cache
- VUE
- stream
- 재정의
- jpa
- redis
- AOP
- DDL
- jwt
- 인덱스
- static
- lambda
- 필드 주입
- Test
- DI
- 생성자 주입
- SQL
- MSA
- 테스트 코드
- select_type
- docker
- equals
- KEVISS
- Spring
- java
Archives
- Today
- Total
백엔드 개발자 블로그
MySQL 옵티마이저 본문
MySQL 아키텍처
MySQL 엔진(SQL문 분석, 최적화) + 스토리지 엔진(데이터 저장/조회)
MySQL 옵티마이저는 MySQL 엔진에 포함됨
실행과정
1. SQL 파서 : SQL문을 MySQL 서버가 이해할 수 있도록 분리 = 파스 트리
2. SQL 옵티마이저 : 파스 트리를 확인하여 쿼리 최적화 및 실행계획 수립
3. 데이터 읽기/쓰기 : 결정된 정보를 토대로 스토리 엔진에서 필요한 데이터 가져오기
실행계획이란?
옵티마이저가 결정한 최적의 쿼리 실행방법
실행계획 분석
type : 각 테이블의 레코드를 어떤 방식으로 조회했는지
오른쪽으로 갈수록 안좋음
- const : 일치하는 행이 하나, 조건절에 PK or Unique 컬럼 이용
- ref : PK or Unique 컬럼이 아닌 인덱스, 동등 조건으로 검색할 때
- range : 인덱스 레인지 스캔
- index : 인덱스 테이블 풀 스캔
- all : 테이블 풀 스캔 => 인덱스를 추가해주자
key : 후보 인덱스 중 실제로 선택한 인덱스
rows : 쿼리를 실행하기 위해 조사해야하는 행의 수 = 줄이는 것이 성능에 좋음, 정확하지는 않은 값임
Extra : 내부적인 처리 알고리즘
- Using filesort : 정렬을 처리하기 위한 적절한 인덱스를 찾지 못한 경우 사용되는 정렬 방식
- Using temporary : 병합할 때 사용되는 새로운 공간
- Using index : 데이터 파일을 읽지 않고 인덱스 테이블만 읽어 쿼리를 처리할 수 있을 때 (커버링 인덱스)
'테크 블로그 리뷰' 카테고리의 다른 글
인덱스와 스캔 튜닝 (0) | 2024.12.11 |
---|---|
OSI7 계층 (0) | 2024.11.01 |
낙관적 락 vs 비관적 락 (0) | 2024.10.24 |
멀티쓰레드와 동기화 (0) | 2024.10.24 |
DI (0) | 2024.10.24 |