개발/데이터베이스 2

[MySQL] 인덱스를 사용하는 이유, B-Tree 구조 및 동작 방식

개요MySQL InnoDB 엔진이 데이터를 디스크에 읽고 쓰는 방식을 알아보고, 인덱스를 적용하면 왜 성능이 개선되는 것인지 살펴보고자 합니다. 1. 데이터 읽기/쓰기와 디스크 드라이브 데이터베이스에서 작성한 데이터는 디스크 드라이브에 저장되어 영속됩니다. 컴퓨터에서 CPU나 메모리 등의 주요 장치는 전자식 장치지만, HDD는 기계식 장치입니다. 디스크에 데이터를 쓰고 읽는 데 걸리는 시간은 디스크 헤더를 물리적으로 움직이는 단계에서 결정됩니다. 때문에 데이터베이스 서버에서는 데이터를 읽어올 때 하드 디스크 드라이브가 병목지점이 됩니다. 이러한 단점을 개선하기 위해 SSD가 출시되었습니다. 솔리드 스테이트 드라이브는 기존의 HDD에서 플래터(원판)를 제거하고 그 대신 플래시 메모리를 장착하고 있습니다. ..

[MySQL] 서버 구조와 동작 원리 - MySQL 엔진, 스토리지 엔진

1. MySQL 서버 전체 구조MySQL 엔진MySQL 엔진은 커넥션 관리, SQL 명령어 처리, 캐시 & 버퍼 관리, 스레드 관리 등을 담당합니다.커넥션 핸들러: MySQL 서버 사용자인 응용 프로그램과 커넥션을 체결합니다.SQL 인터페이스: 사용자가 작성한 SQL 명령어를 DBMS 서버 내부로 전달합니다.SQL 파서: SQL 명령어를 분석해 Syntax Tree를 형성한 뒤 옵티마이저에게 전달합니다.SQL 옵티마이저: SQL 명령어를 최적화해 실행 계획을 세웁니다.캐시 & 버퍼: 데이터를 메모리에 저장하여 성능을 향상시킵니다. 스토리지 엔진데이터 저장 방식을 관리하고 실제 물리적 디스크에 접근합니다.InnoDB와 MyISAM 등이 대표적인 스토리지 엔진입니다. 핸들러 APIMySQL 엔진과 스토리지 ..