MySQL MySQL 스터디를 위한 repository 입니다. MySQL 아키텍쳐 MySQL 엔진 아키텍쳐 InnoDB 스토리지 엔진 아키텍쳐 InnoDB 버퍼풀 버퍼 풀과 리두로그 버퍼 풀 플러시 버퍼 풀 상태 백업 및 복구 Double Write Buffer 언두로그 언두 테이블스페이스 관리 체인지 버퍼 리두 로그 및 로그 버퍼 어댑티브 해시 인덱스 MyISAM 스토리지 엔진 아키텍쳐 트랜잭션과 잠금 트랜잭션 MySQL 에서의 트랜잭션 주의사항 MySQL 엔진의 잠금 MySQL 엔진의 잠금 글로벌 락 & 백업 락 테이블 락 네임드 락 메타데이터 락 InnoDB 스토리지 엔진 잠금 인덱스와 잠금 레코드 수준의 잠금 확인 및 해제 인덱스 디스크 읽기 방식 하드 디스크 드라이브(HDD)와 솔리드 스테이트 드라이브(SSD) 랜덤 I/O 와 순차 I/O 인덱스란? B-Tree 인덱스 B-Tree 인덱스 - 구조 및 특성 B-Tree 인덱스 키 추가 및 삭제 B-Tree 인덱스 사용에 영향을 미치는 요소 B-Tree 인덱스 - 인덱스를 통한 데이터 읽기 다중 컬럼 인덱스 B-Tree 인덱스 정렬 및 스캔 방향 B-Tree 인덱스 - 가용성과 효율성 함수 기반 인덱스 멀티 밸류 인덱스 클러스터링 인덱스 유니크 인덱스 외래키 쿼리 작성 및 최적화 SELECT SELECT 절의 처리 순서 WHERE 절과 GROUP BY 절, ORDER BY 절의 인덱스 사용 인덱스를 사용하기 위한 기본 규칙 WHERE 절의 인덱스 사용 GROUP BY 절의 인덱스 사용 ORDER BY 절의 인덱스 사용 WHERE 조건과 ORDER BY(GROUP BY) 절의 인덱스 사용 GROUP BY 절과 ORDER BY 절의 인덱스 사용 WHERE 조건과 ORDER BY 절, GROUP BY 절의 인덱스 사용 WHERE 절의 비교 조건 사용 시 주의사항 NULL 비교 문자열이나 숫자 비교 날짜 비교 Short-Circuit Evaluation LIMIT COUNT JOIN JOIN의 순서와 인덱스 JOIN 컬럼의 데이터 타입 OUTER JOIN의 성능과 주의사항 지연된 조인 래터럴 조인 실행 계획으로 인한 정렬 흐트러짐 GROUP BY WITH ROLLUP ORDER BY ORDER BY 사용법 및 주의사항 여러 방향으로 동시 정렬 서브쿼리 SELECT 절에 사용된 서브쿼리 WHERE 절에 사용된 서브쿼리 잠금을 사용하는 SELECT NOWAIT & SKIP LOCKED INSERT 고급 옵션 LOAD DATA 명령 주의 사항 옵티마이저와 힌트 개요 기본 데이터 처리 풀 테이블 스캔과 풀 인덱스 스캔 병렬처리 ORDER BY 처리 소트 버퍼 정렬 알고리즘 옵티마이저 트레이스 활성화 및 보기 정렬 알고리즘의 종류 싱글 패스 정렬 방식 투 패스 정렬 방식 싱글 패스 정렬 방식 VS 투 패스 정렬 방식 정렬 처리 방법 정렬 처리 방법의 성능 비교 GROUP BY 처리 인덱스 스캔을 이용하는 GROUP BY 루스 인덱스 스캔을 이용하는 GROUP BY 임시 테이블을 사용하는 GROUP BY DISTINCT 처리 단순 DISTINCT SELECT 집합 함수와 함께 사용된 DISTINCT 내부 임시 테이블 활용 메모리 임시 테이블과 디스크 임시 테이블 임시 테이블이 필요한 쿼리 임시 테이블이 디스크에 생성되는 경우 임시 테이블 구체적인 정보 조회 고급 최적화 MRR과 배치 키 엑세스 네스티드 루프 조인과 블록 네스티드 루프 조인 인덱스 컨디션 푸시다운