DB 실행계획 차이: 원인 및 해결책
·
📊DB/MariaDB
🚨 문제 상황 소개개발 DB와 운영 DB, 같은 버전/같은 테이블/같은 쿼리인데 실행계획이 달라졌다.한쪽은 인덱스를 타고, 다른 한쪽은 풀스캔 + filesort 발생원인 추적 과정 간단히 설명 (EXPLAIN 결과 비교)🧱 실행계획 차이 원인옵티마이저는 비용 기반(cost-based) 으로 플랜을 선택.이때 “선택도(selectivity)” 추정이 중요.그런데 추정 방식이 통계값만 보느냐, 실제 인덱스를 내려가 보느냐에 따라 결과가 달라짐.⚠️ 인덱스 다이브(Index Dive)란?개념: 옵티마이저가 실제 인덱스 레벨에서 값 분포를 확인해 정확한 선택도를 계산하는 과정.장점: 더 정확한 실행계획.단점: 옵티마이저가 실행계획 계산에 시간이 조금 더 걸림.⚙️ EQ_RANGE_INDEX_DIVE_LIM..
MariaDB ➡️ MySQL Migration: mydumper & myloader 사용법 정리(스키마 제외, 데이터만)
·
카테고리 없음
📌 개요이 글에서는 MySQL에서 특정 데이터베이스의 데이터만 덤프하고, 다른 서버에 복원하는 과정을 mydumper / myloader 툴로 설명합니다.✅ 병렬 덤프 및 복원 지원✅ 데이터만 추출 및 복원✅ 병렬 덤프 및 복원 지원🧱 설치🧤 ubuntusudo apt updatesudo apt install mydumper -y🧤 데이터 덤프 (Source DB 에서)mydumper \ -h [DB-IP] \ -u [User] \ -p ['password'] \ -B [DataBase_name] \ --no-schemas \ --outputdir /home/ubuntu/[output_dir] \ --threads 4🔖 옵션 설명옵션설명-hDB 서버 주소-u, -p접속 계정 정보-B..
MariaDB: Memory 관련 개념
·
📊DB/MariaDB
■ MariaDB Memory 종류- MariaDB Memory는 두가지로 분류가된다. 모든 세션이 공유하고 사용하는 Global Memory 영역과 각각의 세션들별로 사용되는 Session Memory영역이 있다.■ Global Memory 영역DB가 최초 기동되었을 때에는 메모리를 최소한만 사용하다가 설정된 값 까지 증가하며 증가한 이후에는 “메모리를 반환하지 않고” 설정 된 값 이내에서 계속 사용됩니다.(오라클의 경우 DB기동시 설정된 값 만큼 메모리를 할당 받고 올라가는 반면 Mariadb 는 기동시 설정된 메모리 값만큼 할당 받는것이 아닌 설정된 값 만큼 서서히 증가하게 됩니다) 1) Innodb_buffer_pool_size- 디스크에서 데이터를 메모리에 캐싱함과 동시에 데이터의 변경을 버퍼링..