Database

[MySQL] 옵티마이저 - 기본 데이터 처리

2023. 6. 9. 17:51
목차
  1. 풀 테이블 스캔과 풀 인덱스 스캔
  2. 병렬 처리

MySQL 서버는 사용자의 요청을 처리하기 위해 1) 데이터를 가공하는 기본 절차 2) 빠른 성능을 보장하기 위한 최적화를 수행합니다.

 

이번 글에서는 데이터를 정렬하거나 그루핑하는 등의 기본 데이터 가공 기능에 관해 살펴보겠습니다.

 

풀 테이블 스캔과 풀 인덱스 스캔

풀 테이블 스캔은 인덱스를 사용하지 않고 테이블의 데이터를 처음부터 끝까지 읽는 작업을 의미합니다. 다음과 같은 조건일 때 주로 풀 테이블 스캔을 선택합니다.

  • 테이블의 레코드 건수가 너무 작아 인덱스를 사용하는 것보다 테이블을 스캔하는 것이 빠를 경우(일반적으로 테이블이 페이지 1개로 구성된 경우)
  • WHERE 절이나 ON 절에 인덱스를 이용할 수 있는 적절한 조건이 없는 경우
  • 인덱스 레인지 스캔을 사용할 수 있는 쿼리라고 하더라도 옵티마이저가 판단한 조건 일치 레코드 건수가 너무 많은 경우(인덱스의 B-Tree를 샘플링해서 조사한 통계 정보 기준)

인덱스 풀 스캔은 쿼리가 인덱스의 칼럼만으로 작업할 수 있는 경우 사용합니다. 더 자세한 내용은 이 글을 참고해주세요.

병렬 처리

MySQL 8.0 버전부터 한정된 용도로 쿼리의 병렬 처리가 가능해졌습니다. innodb_parallel_read_threads 시스템 변수를 이용해 하나의 쿼리를 최대 몇 개의 스레드를 이용해 처리할지를 변경할 수 있습니다. 하지만 단순히 테이블 전체 건수를 가져오라는 쿼리만 병렬 처리할 수 있습니다.

저작자표시 (새창열림)

'Database' 카테고리의 다른 글

[MySQL] 옵티마이저 - 개요  (0) 2023.06.09
[MySQL] 외래키  (1) 2023.06.02
[MySQL] 유니크 인덱스  (0) 2023.06.02
[MySQL] 클러스터링 인덱스  (0) 2023.05.25
[MySQL] 함수 기반 인덱스  (0) 2023.05.20
  1. 풀 테이블 스캔과 풀 인덱스 스캔
  2. 병렬 처리
'Database' 카테고리의 다른 글
  • [MySQL] 옵티마이저 - 개요
  • [MySQL] 외래키
  • [MySQL] 유니크 인덱스
  • [MySQL] 클러스터링 인덱스
acisliver
acisliver
acisliver
와당탕탕 개발놀이터
acisliver
전체
오늘
어제
  • 분류 전체보기 (65)
    • 회고 (11)
    • Spring (3)
    • 알고리즘 (21)
    • Java (2)
    • DevOps (2)
    • Shell (2)
    • Nginx (1)
    • Database (22)
    • Project (1)

블로그 메뉴

  • 태그
  • 방명록
  • GitHub
  • Notion

공지사항

인기 글

태그

  • FuntionalInterface
  • Leetcode
  • Java
  • 프로그래머스
  • 카카오
  • 구름톤 트레이닝
  • spring boot
  • 알고리즘
  • Spring
  • Bash
  • 풀 인덱스 스캔
  • 오픈소스 컨트리뷰톤
  • 코딩테스트
  • 풀스택
  • FOSSLight
  • binarySearch
  • DevOps
  • innodb
  • 풀 테이블 스캔
  • 인덱스
  • 이분탐색
  • 프리코스
  • 백준
  • 우아한테크코스
  • Shell
  • mysql
  • 이진탐색
  • dp
  • 오픈소스
  • 자바

최근 댓글

최근 글

hELLO · Designed By 정상우.
acisliver
[MySQL] 옵티마이저 - 기본 데이터 처리
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.