[MySQL] B-Tree 인덱스 - 2
·
Database
인덱스를 적재적소에 활용하려면, 결국 MySQL이 어떻게 인덱스를 타고 실제 레코드를 읽어내는지에 대해 좀 더 깊이 살펴봐야 한다. 인덱스 레인지 스캔인덱스 레인지 스캔은, 인덱스의 접근 방법 가운데 가장 대표적인 접근 방식이다.B-Tree 인덱스의 필요한 영역을 스캔하는데에는 어떤 작업이 필요할까 ? 다음 쿼리를 예제로 살펴보자SELECT * FROM employees WHERE first_name BETWEEN 'Ebbe' AND 'Gad'; 인덱스 레인지 스캔은, 검색해야할 범위가 결정되었을 때 사용하는 방식이다.위 그림은 "인덱스"를 읽는 경우에 대한 그림인데, 크게 두 가지 과정이 수반된다. 이는 먼저 브랜치 노드를 거쳐 리프노드의 레코드 시작지점을 찾는 과정, 그리고 해당 시작 지점부터 리프노..
[OS] IPC
·
OS
IPC는 프로세스간 소통하는 방법이다. 프로세스는 independent 이거나 cooperating한다.independent한 프로세스의 경우 다른 프로세스에 영향을 주지 않지만,cooperating이 필요한 프로세스의 경우, 다른 프로세스에 영향을 주고받을 수 있다. 프로세스간 소통이라는게 말은 쉽지만, 일반적으로 프로세스에 할당된 메모리 공간은 해당 프로세스에 고유하기 때문에다른 프로세스가 접근할 수 없다. 이를 문제를 해결하는 방법이 IPC이다. IPC의 두 가지 모델공유 메모리 (Shared Memory Model)프로세스끼리 공유할 수 있는 메모리 공간을 생성하고 이 메모리를 통해 정보를 교환한다.(조금더 자세히 말하면, 어떤 프로세스가 공유하고싶은 실제 메모리 공간을 참조하는 메모리 공간을 생..
[MySQL] B-Tree 인덱스-1
·
Database
B-Tree는 데이터베이스의 인덱싱 알고리즘 중 가장 일반적으로 사용된다.B-Tree는 칼럼의 원래 값을 변형시키지 않고 인덱스 구조체 내에서는 항상 정렬된 상태로 유지한다. 페이지인덱스의 저장방식에 대해 이해하려면 페이지에 대한 이해가 필수이다.페이지는 디스크와 메모리(버퍼풀)에 데이터를 읽고 쓰는 최소 작업 단위이다. 일반적인 인덱스를 포함해 PK와 테이블 등은 모두 페이지 단위로 관리된다.따라서 페이지에 저장되는 개별 데이터의 크기를 최대한 작게 하여, 1개의 페이지에 많은 데이터들을 저장할 수 있도록 하는 것이 중요하다.페이지에 저장되는 데이터가 크기가 클수록 디스크 I/O가 많아지고, 메모리에 캐싱할 수 있는 페이지의 수가 줄어들 수 있다.(디스크I/O를 통해 페이지를 읽어오면 버퍼 풀이라는 메..