mysql4 B-Tree 인덱스,구조 및 성능 고려사항 B-TreeB-Tree는 인덱싱 알고리즘 중 가장 보편적으로 사용되고, 가장 먼저 도입된 알고리즘이면서 여전히 가장 범용적인 목적으로 사용되는 인덱스 알고리즘 입니다. 그리고 B-Tree의 B는 Binary(이진)이 아닌, Balanced를 의미합니다. B-Tree는 칼럼의 원래 값을 변형시키지 않고 인덱스 구조체 내에서는 항상 정렬된 상태로 유지합니다.특별한 검색 조건이 없는 경우엔 대부분 B-Tree 또는 B+Tree를 사용합니다. B-Tree 인덱스 구조인덱스는 트리 구조로 되어 있으며, 루트 노드 → 브랜치 노드 → 리프 노드 순으로 구성됩니다. 리프 노드에는 실제 데이터를 가리키는 프라이머리 키 주소를 가지고 있습니다. 인덱스 자체는 데이터 테이블의 키 컬럼만을 포함하고, 실제 데이터는 별도로 .. 2025. 4. 25. Index 인덱스란데이터베이스에서 데이터를 조회하려면, 기본적으로 테이블 전체를 훑는 전체 검색(Full Scan)을 수행해야 합니다.이는 시간이 오래 걸릴 수 있습니다. 그래서 등장한 것이 바로 인덱스입니다. 인덱스는 값(Key)과 데이터 주소(Value)의 쌍 (Key-Value Pair)로 구성되어 있으며, 원하는 데이터를 더 빠르게 찾을 수 있도록 돕는 구조입니다. 즉, 인덱스는 정렬된 찾아보기로 생각하면 됩니다. 인덱스 핵심 구조DB 인덱스는 보통 항상 정렬된 상태를 유지합니다.이를 위해 SortedList와 같은 자료구조가 활용되며, 이는 값을 삽입할 때마다 정렬을 유지하는 구조입니다.이 구조 덕분에 SELECT는 빠르지만, INSERT/UPDATE/DELETE는 느릴 수 있습니다. 인덱스의 장점과 단점.. 2025. 4. 23. 디스크 I/O 병목 DB가 느린 이유컴퓨터의 성능은 매년 빠르게 발전하고 있지만, 여전히 운영하는 시스템에서 가장 느린 부분은 디스크입니다.특히, DB의 성능 병목은 대부분의 디스크 I/O에서 발생합니다.결국, DB 성능 튜닝의 핵심은 디스크 I/O를 얼마나 줄일 수 있느냐에 달려 있다고 해도 과언이 아닙니다. 디스크 I/O가 병목인 이유CPU나 메모리는 전자 회로 기판의 장치이기 때문에, 나노초(ns) 단위로 연산과 접근이 가능합니다.하지만, 디스크는 여전히 기계적인 동작이 필요한 장치입니다. 특히 전통적인 하드디스크는 데이터를 읽기 위해 디스크 회전과 헤드 이동이라는 물리적 동작이 필요합니다. 이 물리적 구조 때문에, 데이터베이스 서버에서 디스크는 항상 병목 구간이 될 수밖에 없습니다.아무리 CPU가 빠르고 메모리가 넉.. 2025. 4. 22. [Mysql] 트랜잭션과 잠금 이번 글은 트랜잭션과 잠금에 대해서 알아보도록 하겠습니다. 트랜잭션트랜잭션은 하나의 논리적인 작업이 100% 적용(commit)이 되거나 100% 적용이 되지 않아야 함(rollback)을 보장해주는 것입니다.트랜잭션은 작업의 일부만 진행되는 현상(Partial update)를 발생하지 않게 만들어주어 작업의 완정성을 보장해 줍니다. 추가로, MySQL 서버에서 트랜잭션을 지원하는 엔진은 InnoDB 스토리지 엔진입니다. MyISAM과 MEMORY는 트랜잭션을 지원하지 않습니다. MySQL에서 트랜잭션트랜잭션은 논리적인 작업 셋 자체가 100% 적용(COMMIT)되거나 아무것도 적용되지 않음(ROLLBACK)을 보장해 줍니다. InnoDB 테이블과 MyISAM 테이블 차이를 알아보기 위해 아래 코드를 적.. 2024. 12. 11. 이전 1 다음