MySql, MaridDB 튜닝1 - 튜닝 용어

개발Velog·2022년 2월 2일
1

MySql

목록 보기
1/1


MySql, MariaDB 튜닝 용어 정리하기👍

🙄 오브젝트 스캔 유형

테이블 스캔과, 인덱스 스캔으로 구분.

1. 테이블 풀 스캔

  • 인덱스를 사용하지 않고 테이블을 처음부터 끝까지 읽어서 요청 작업을 처리.

    Mysql, MariaDB에서 자동 적용.
    테이블의 양이 적을 경우.
    Where, On 적용할 인덱스 없을 경우.

2. 인덱스 범위 스캔

  • 인덱스의 범위 검색 후 테이블의 데이터를 찾아가는 방식.

    Mysql, MariaDB에서 자동 적용.
    Unique Index를 사용하지 않는 경우
    BETWEEN ~ AND, <, >, LIKE 구문 포함

3. 인덱스 풀 스캔

  • 인덱스를 처음부터 끝까지 읽어서 요청 작업을 처리.
  • 테이블 풀 스캔보다는 적은 양의 데이터를 읽는다.

4. 인덱스 고유 스캔

  • 기본 키나 고유 인덱스로 테이블에 접근하는 방식.
  • 인덱스를 사용하는 스캔 방식 중 가장 효율적인 스캔 방법.

5. 인덱스 루스 스캔

  • 인덱스의 필요한 부분들만 골라 스캔하는 방식.
  • 보통 GROUP BY, MAX(), MIN() 함수가 포함되면 자동적으로 작동.

6. 인덱스 병합 스캔

  • 테이블 내에 생성된 인덱스들을 통합해서 스캔하는 방식.
  • WHERE 조건절의 열들이 서로 다른 인덱스로 존재하면 옵티마이저가 해당하는 인덱스를 가져와서 모두 활용.
  • 통합하는 방법으로는 결합, 교차 방식이 있고 이들 모두 실행계획으로 출력.

🙄 디스크 접근 방식

MYSQL은 원하는 데이터를 찾으려고 데이터가 저장된 스토리지와 페이지에 접근한다.
페이지란 데이터를 검색하는 최소 단위로, 페이지 단위로 데이터를 읽고 쓰기를 수행할 수 있다.

1. 시퀀스 엑세스

  • 논리적 물리적으로 연결된 순서에 따라 차례대로 읽는 방식.
  • 연결된 주소값으로 순차적으로 스캔 하는 방식.

2. 랜덤 엑세스

  • 물리적으로 떨어진 페이지들에 임의로 접근하는 임의 접근 방식.
  • 페이지가 위치한 물리적인 위치를 고려하지 않고 접근.
  • 최소한의 페이지에 접근할 수 있도록 접근 범위를 줄이고 효율적인 인덱스를 활용할 수 있도록 튜닝 필요.

🙄 조건 유형

SQL문의 WHERE 절 조건문 기준으로 데이터가 저장된 디스크에 접근하게 된다.
이때 필요한 데이터에 엑세스하는 조건문으로 데이터를 가져오고, 가져온 데이터에서 다시 한번 출력할 데이터만 추출한다. 이때 맨 처음 디스크에서 데이터를 검색하는 조건을 엑세스 조건이라 한다.

1. 엑세스 조건

  • 디스크에 있는 데이터에 어떻게 접근할 것인지를 다루는 것.

2. 필수 조건

  • 엑세스 조건을 이용해 MySQL 엔진으로 가져온 데이터를 기준으로 추가로 불필요한 데이터를 제거하거나 가공하는 조건.

🙄 응용 용어

1. 선택도(Selectivity)

  • 전체 레코드 중에서 조건절에 의해 선택될 것으로 예상되는 레코드의 비율.

    선택도 = 카디널리티 / 총 레코드 수
    변형된 선택도 = 1 / DISTINCT(COUNT 열명)

2. 카디널리티(Cardinality)

  • 특정 데이터 집합의 Unique한 값의 개수이다.
  • 현업에서는 전체 행에 대한 특정 열의 중복 수치를 나타내는 지표로 자주 활용.
  • 카디널리티 = 선택도 * 총 레코드 수.

    일상생활에서의 카디널리티 적용사례
    주민등록번호: 카디널리티 높음
    이름: 카디널리티 중간
    성별: 카디널리티 낮음

3. 힌트(Hint)

  • 옵티마이저라고 반드시 최선의 실행계획을 수립할 수는 없기 때문에, 조인이나 인덱스의 잘못된 실행 계획을 개발자가 직접 바꿀 수 있도록 도와주는 것.

4. 콜레이션(Collation)

캐릭터셋(Character set) vs 콜레이션(Collation)
캐릭터셋 : 각 문자가 컴퓨터에 저장될 때 어떠한 '코드'로 저장될지에 대한 규칙의 집합을 의미.
콜레이션 : 특정 문자 셋에 의해 데이터베이스에 저장된 값들을 비교 검색하거나 정렬 등의 작업을 위해 문자들을 서로 '비교' 할때 사용하는 규칙들의 집합.

5. 통계정보

  • MySql은 시스템 변수를 통해 활용할 통계정보의 수준을 정의할 수 있다.
  • 통계정보의 최신성 유지 및 관리가 매우 중요.

6. 히스토그램(Histogram)

  • 테이블의 열값이 어떻게 분포되어 있는지 확인하는 통계정보.
  • 옵티마이저가 실행 계획을 최적화하고자 참고하는 정보.
  • 컬럼의 데이터 분포도를 참조할 수 있는 기능.

    MySQL 8.0 버전으로 업그레이드 되면서 활용 가능.

출처 및 참조 :

업무에 바로 쓰는 SQL 튜닝
http://www.yes24.com/Product/Goods/102382080

profile
안녕하세요. 데이터와 동고동락 중인 개발자 입니다.

0개의 댓글