mysql

Database/MySQL

클러스터링 인덱스

클러스터링이란 여러 개를 하나로 묶는다는 의미로 주로 사용되는데, 지금 설명하고 자하는 인덱스의 클러스터링도 그 의미를 크게 벗어나지 않는다. MySQL 서버에서 클러스터링은 테이블의 레코드를 비슷한 것(프라이머리 키를 기준으로)들끼리 묶어서 저장하는 형태로 구현되는데, 이는 주로 비슷한 값들을 동시에 조회하는 경우가 많다는 점에 착안한 것이다. MySQL에서 클러스터링 인덱스는 InnoDB 스토리지 엔진에서만 지원하며, 나머지 스토리지 엔진에서는 지원되지 않는다. 클러스터링 인덱스 클러스터링 인덱스는 테이블의 프라이머리 키에 대해서만 적용되는 내용이다. 즉 프라이머리 키 값이 비슷한 레코드끼리 묶어서 저장하는 것을 클러스터링 인덱스라고 표현한다. 여기서 중요한 것은 프라이머리 키 값에 의해 레코드의 저..

Database/MySQL

B-Tree 인덱스 2편

B-Tree 인덱스를 통한 데이터 읽기 어떤 경우에 인덱스를 사용하게 유도할지, 또는 사용하지 못하게 할지 판단하려면 각 스토리지 엔진이 어떻게 인덱스를 이용(경유)해서 실제 레코드를 읽어 내는지 알아야 한다. 인덱스 레인지 스캔 인덱스 레인지 스캔은 인덱스의 접근 방법 가운데 가장 대표적이며, 앞으로 나올 두 가지 접근 방식보다 빠른 방법이다. 인덱스를 통해 레코드를 한 건만 읽는 경우와 한 건이상을 읽는 경우를 각각 다른 이름으로 구분하지만, 이번에는 모두 묶어서 인덱스 레인지 스캔이라고 표현했다. 인덱스 레인지 스캔은 검색해야 할 인덱스의 범위가 결정됐을 때 사용하는 방식이다. 검색하려는 값의 수나 결과 레코드 건수와 관계 없이 레인지 스캔이라고 표현한다. 루트 노드에서부터 비교를 시작해 브랜치 노..

Database/MySQL

B-TREE 인덱스 1편

2023.10.11 복습 리팩토링 시작 B-Tree 인덱스 B-Tree는 제일 범용적인 인덱스 알고리즘이다. 여기서 B는 Binary가 아니라 Balanced라는 의미를 지닌다. B-Tree 칼럼의 원래 값을 변형시키지 않고 (물론 값의 앞부분만 잘라서 관리하기는 하지만) 인덱스 구조체 내에서는 항상 정렬된 상태를 유지한다. 전문 검색과 같은 특수한 요건이 아닌 경우, 대부분의 인덱스는 B-Tree를 사용할 정도로 일반적인 용도에 적합한 알고리즘이다. 구조 및 특성 B-Tree는 트리 구조의 최상위에 하나의 루트 노드가 존재하고 그 하위에 자식 노드가 붙어 있는 형태다. 트리 구조의 가장 하위에 있는 노드를 리프 노드라 하고, 트리구조에서 루트 노드도 아니고 리프노드도 아닌 중간의 노드를 브랜치 노드라고..

Database/MySQL

MySQL 인덱스 기초

2023.10.10 복습 리팩토링 시작 디스크 읽기 이번에 인덱스에서 자주 나올 랜덤 I/O와 순차 I/O에 대한 개념을 정리하고 넘어가겠습니다. 하드 디스크 드라이브 (HDD)와 솔리드 스테이트 드라이브(SSD) 컴퓨터에서 CPU나 메모리 같은 주요 장치는 대부분 전자식 장치지만 하드 디스크 드라이브는 기계식 장치다. 그래서 데이터베이스 서버에서는 항상 디스크 장치가 병목이 된다. 이러한 HDD를 대체하기 위해 전자식 저장 매체인 SSD가 많이 출시되고 있다. SSD도 기존 하드디스크 드라이브에서 데이터 저장용 플래터(원판)을 제거하고 그 대신 플래시 메모리를 장착하고 있다. 그래서 원판을 기계적으로 회전시킬 필요가 없으므로 아주 빨리 데이터를 읽고 쓸 수 있다. 플래시 메모리는 전원이 공급되지 않아도..

Debin
'mysql' 태그의 글 목록 (2 Page)