본문 바로가기

허브 살리기 프로젝트18

인덱스와 버퍼 풀 인덱스에 관해서 정리하다보면 문득 인덱스도 결국 디스크상에 존재하는 것이고 브랜치 노드를 탐색하는 과정에서 계속 Disk I/O가 있으며 탐색 과정은 루트 노드에서 탐색 과정을 진행 할 때 마다 Disk I/O로 접근해서 다음 노드의 주소를 가져와야 하기 때문에 인덱스 스캔도 생각보다 비효율적일지 않을까?라는 의문에서 생각을 정리하고 이해한 내용을 바탕으로 정리했다. 개발에서 사용하게 될 인덱스는 거의 B-Tree (Balanced Tree) 구조이므로 물론 B+Tree 인덱스도 사용된다고 하지만 편의상 B-Tree 인덱스로 확인하려고 하며 데이터베이스는 MySQL기준으로 확인하였다. B-Tree 인덱스의 구조 (RealMySQL 8.0 그림 8.4) 그림에서 나오는 개념을 간략히 정리하면. 페이지란 디.. 2024. 1. 25.
False Sharing 설명 단어를 그대로 보면 '거짓 공유' 이다. 거짓을 공유한다는 것은 말이 웃기다. 컴퓨터에서 False는 논리 연산의 결과에 사용되며 조건이 맞지 않다는 의미로 사용된다. 그럼 어떤 조건에 맞는 것을 누구한테 공유하는 것일까를 생각해보면 해당 개념을 더 쉽게 이해할 수 있다. 우선 여기서 조건에 맞지 않음은 데이터가 조건에 맞지 않음을 의미하며, 공유의 대상은 주로 LLC (Last Level Cache)이다. 물론 L2, L3 까지 캐시를 사용하는 CPU이면 L2에서도 발생할 수 있다. 즉 마지막 대상 캐시만 발생하는 것은 아니다. 더 풀어서 데이터가 조건에 맞지 않음은 캐시 일관성이 맞지 않음을 의미한다. CPU는 메모리에서 데이터를 가져올 때 캐시라인 단위로 데이터를 가져온다. 캐시라인은 캐시 메.. 2024. 1. 22.