전체 글
-
[MySQL] 인덱스 > 클러스터링 인덱스Study 2025. 3. 26. 00:16
MySQL 서버에서 클러스터링은 클러스터링 키를 사용해 테이블의 레코드를 비슷한 것들끼리 묶어서 저장하는 형태로 구현됨주로 비슷한 값들을 동시에 조회하는 경우가 많다는 점에 착안한 것MySQL에서 클러스터링 인덱스는 InnoDB 스토리지 엔진에서만 지원함 클러스터링 인덱스테이블의 PK에 대해서만 적용되는 내용즉, PK 값이 비슷한 레코드끼리 묶어서 저장하는 것을 '클러스터링 인덱스'라고 표현함중요한 것은 PK 값에 의해 레코드의 저장 위치가 결정된다는 것PK 값이 변경되면 그 레코드의 물리적인 저장 위치가 바뀌어야 한다는 것을 의미하기도 함인덱스 알고리즘이라기보다 테이블 레코드의 저장 방식이라고 볼 수 있음클러스터링 인덱스와 클러스터링 테이블은 동의어로 사용되기도 함클러스터링의 기준이 되는 PK를 '클러..
-
[MySQL] 인덱스Study 2025. 3. 25. 00:56
디스크 읽기 방식데이터베이스의 성능 튜닝은 어떻게 디스크 I/O를 줄이느냐가 관건데이터베이스는 디스크를 사용해 데이터를 저장한다. 이때 대용량의 요청에도 어떻게 고성능을 낼 수 있게 할까?에 대한 의문이다.즉, 결론부터 말하자면 필요한 데이터만 읽도록 쿼리를 개선해야 한다. 랜덤 I/O와 순차 I/O공통점하드 디스크 드라이브의 플래터(원판)을 돌려 데이터를 읽거나 써야 할 위치로 디스크 헤더를 이동시켜야 함차이점순차 I/O : 위치를 찾기 위해 디스크의 헤더 1번 움짐임랜덤 I/O : 위치를 찾기 위해 디스크의 헤더 3번 움직임디스크에 데이터를 쓰고 읽는 데 걸리는 시간은 디스크 헤더를 움직여서 읽고 쓸 위치로 옮기는 단계에서 결정됨디스크의 성능은 디스크 헤더의 위치 이동 없이 얼마나 많은 데이터를 한 ..
-
[카프카] 카프카는 어떻게 고성능을 유지할까?Study/카프카 핵심 가이드 2025. 3. 24. 23:11
카프카는 디스크 기반 보존을 사용해 데이터 유실 위험을 줄인다.그렇다면 카프카는 디스크 기반 보존을 하는데 어떻게 고성능을 유지할까? 신규 컨슈머가 추가되었을 때 이전 오프셋부터 데이터를 불러오는 경우도 있다.이때 캐시에 데이터가 없을 수 있는데 이런 경우에도 어떻게 고성능을 낼 수 있을까? 1. append-only와 sequential write카프카는 로그 형식으로 데이터를 기록하는데, 이때 append-only로 파일의 끝에 연속적으로 쓴다.카프카는 파티션을 세그먼트 단위로 나누고 세그먼트는 디렉토리 내 하나의 파일 형식 - 참고즉, 파일 중간을 수정하거나 임의 위치에 쓰지 않으므로, 항상 마지막에 순차적으로 write함디스크에 저장할 때 가능한 연속적인 블록에 저장한다. 이를 통해 순차 I/O가..
-
[컴퓨터 밑바닥의 비밀] 6. 입출력Study/컴퓨터 밑바닥의 비밀 2025. 3. 24. 00:00
CPU는 어떻게 입출력 작업을 처리할까?입출력 작업을 어떻게 요청하고 결과를 어떻게 전달받을까?CPU 내부에 레지스터가 있는 것과 마찬가지로, 장치에도 자체적인 레지스터인 장치 레지스터(device register)가 있음장치 레지스터는 주로 장치에 관련된 일부 정보를 저장하고, 다음 두 가지 레지스터가 있음데이터를 저장하는 레지스터ex) 사용자가 키보드의 키를 누르면 그 정보는 이런 레지스터에 저장됨제어 정보와 상태 정보를 저장하는 레지스터레지스터를 읽고 쓰는 작업을 이용해 장치를 제어하거나 장치 상태를 볼 수 있음장치에서 생성된 데이터를 얻거나 장치를 제어하는 작업은 모두 이런 레지스터를 읽고 쓰는 것으로 함 Q. 어떻게 장치 레지스터를 읽고 쓸까?아래 두 가지 방식을 사용함특정 입출력 기계 명령어를..