본문 바로가기
Database/MYSQL

테이블 조인 (MariaDB) - join_cache_level

by 반화넬 2023. 7. 20.
반응형

조인 알고리즘

 

  • MiriaDB 5.3 이전 : 네스티드 루프 알고리즘만 사용
  • MiriaDB 5.3 이후 : 다양한 형태의 알고리즘 도입. 활용율은 높지 않지만 개선중.
  • MiriaDB 5.3 부터 지원되는 알고리즘의 종류
    • 단순 네스티드 루프(Simple Nested Loop)
    • 블록 네스티드 루프(Block Nested Loop)
    • 블록 네스티드 루프 해시(Block Nested Loop Hash)
    • 블록 인덱스(Block Index Join, Batched Key Access)
    • 블록 인덱스 해시(Block Index Hash Join, Batched Key Access Hash)

 

 

블럭 기반 조인 알고리즘의 종류 8가지

 

join_cache_Incremental=offjoin_cache_hashed=offjoin_cache_bka=offjoin_cache_level(0~8)

1.Block Nested Loop - Flat) on on on on:1~8, off=0~0
2.Block Nested Loop - Incremental) off on on on:2~8, off=0~1
3.Block Nested Loop Hash - Flat) on off on on:3~8, off=0~2
4.Block Nested Loop Hash - Incremental) off off on on:4~8, off=0~3
5.Batched Key Access - Flat) on on off on:5~8, off=0~4
6.Batched Key Access - Incremental) off on off on:6~8, off=0~5
7.Batched Key Access Hash - Flat) on off off on:7~8, off=0~6
8.Batched Key Access Hash - Incremental) off off off on:8~8, off=0~7

조인 캐시 레벨(join_cache_level) (MariaDB)
  • 블럭 기반 조인 알고리즘의 활용 방식
    • Flat 방식 : 조인버퍼에 레코드 필드를 복사하는 방식
    • Incremental 방식 : 포인터만 조인버퍼에 저장하는 방식
  • 블럭 기반 조인 알고리즘의 종류 8가지
    • 1. 블록 네스티드 루프(Block Nested Loop - Flat)
    • 2. 블록 네스티드 루프(Block Nested Loop - Incremental)
    • 3. 블록 네스티드 루프(Block Nested Loop Hash - Flat)
    • 4. 블록 네스티드 루프(Block Nested Loop Hash - Incremental)
    • 5. 배치 키 엑세스(Batched Key Access - Flat)
    • 6. 배치 키 엑세스(Batched Key Access - Incremental)
    • 7. 배치 키 엑세스(Batched Key Access Hash - Flat)
    • 8. 배치 키 엑세스(Batched Key Access Hash - Incremental)
  • 알고리즘 선택 optimizer_switch 변수 3가지 기본 설정값
    • join_cache_Incremental=on
    • join_cache_hashed=on
    • join_cache_bka=on
  • join_cache_level 시스템 변수
    • join_cache_level=1 (0~8)
    • 설정된 값 이하 번호만 수행 가능
    • batched_key_access (MySQL)
  • 기타 조인시 optimizer_switch
    • outer_join_with_cache
    • semijoin_with_cache

 

조인 버퍼 설정

SET optimizer_switch='optimizer_join_buffer_size=on';
SET join_cache_space_limit=5*1024*1024;
  • 설정된 5M 한도 내에서 적절하게 필요한만큼 메모리 공간 할당

 

반응형