DB 실행계획 차이: 원인 및 해결책
·
📊DB/MariaDB
🚨 문제 상황 소개개발 DB와 운영 DB, 같은 버전/같은 테이블/같은 쿼리인데 실행계획이 달라졌다.한쪽은 인덱스를 타고, 다른 한쪽은 풀스캔 + filesort 발생원인 추적 과정 간단히 설명 (EXPLAIN 결과 비교)🧱 실행계획 차이 원인옵티마이저는 비용 기반(cost-based) 으로 플랜을 선택.이때 “선택도(selectivity)” 추정이 중요.그런데 추정 방식이 통계값만 보느냐, 실제 인덱스를 내려가 보느냐에 따라 결과가 달라짐.⚠️ 인덱스 다이브(Index Dive)란?개념: 옵티마이저가 실제 인덱스 레벨에서 값 분포를 확인해 정확한 선택도를 계산하는 과정.장점: 더 정확한 실행계획.단점: 옵티마이저가 실행계획 계산에 시간이 조금 더 걸림.⚙️ EQ_RANGE_INDEX_DIVE_LIM..
MariaDB: Memory 관련 개념
·
📊DB/MariaDB
■ MariaDB Memory 종류- MariaDB Memory는 두가지로 분류가된다. 모든 세션이 공유하고 사용하는 Global Memory 영역과 각각의 세션들별로 사용되는 Session Memory영역이 있다.■ Global Memory 영역DB가 최초 기동되었을 때에는 메모리를 최소한만 사용하다가 설정된 값 까지 증가하며 증가한 이후에는 “메모리를 반환하지 않고” 설정 된 값 이내에서 계속 사용됩니다.(오라클의 경우 DB기동시 설정된 값 만큼 메모리를 할당 받고 올라가는 반면 Mariadb 는 기동시 설정된 메모리 값만큼 할당 받는것이 아닌 설정된 값 만큼 서서히 증가하게 됩니다) 1) Innodb_buffer_pool_size- 디스크에서 데이터를 메모리에 캐싱함과 동시에 데이터의 변경을 버퍼링..