본문 바로가기

인덱스2

[MySQL] B-Tree 인덱스 디스크 읽기 방식랜덤 I/O와 순차 I/O랜덤 IO와 순차 IO 모두 하드 디스크 드라이브의 플래터를 돌려 데이터가 저장된 위치로 디스크 헤더를 이동시킨 다음 데이터를 읽는 것은 동일합니다.그러나 순차 IO가 3개의 페이지를 디스크에 기록하기 위해 1번의 시스템 콜을 호출한다면, 랜덤 IO는 3번의 시스템 콜을 호출합니다. 즉, 디스크 헤드를 3번 움직이며 3배의 속도 차이가 발생합니다.쿼리를 튜닝해서 랜덤 IO를 순차 IO로 바꾸는 방법은 많지 않습니다. 쿼리 튜닝의 목적은 랜덤 IO 자체를 줄이는 것이며 꼭 필요한 데이터만 읽도록 쿼리를 개선하는 것을 의미합니다.인덱스란인덱스란 컬럼의 값과 해당 레코드가 저장된 주소를 키-값 쌍으로 만들어 둔 것을 의미합니다. 컬럼의 값을 기준으로 정렬해서 보관하기 .. 2024. 6. 18.
프로젝션, 인덱스로 조회 성능 개선하기(feat.ngrinder) 이전 일대다 페이지네이션 최적화하기에서 애니프렌즈 프로젝트의 코드 일부를 예로 들며 BatchSize와 프로젝션을 이용한 일대다 컬렉션 페이징 쿼리를 최적화하였습니다. 이후 QA를 진행하던 중 보호 동물 목록 조회에서 1000ms 이상의 시간이 소요되는 것을 인지하였습니다. 보호 동물 서비스는 애니프렌즈 프로젝트에서 메인에 노출되는 기능이기 때문에 사용자에게 최대한 빠른 응답을 돌려줄 수 있어야 합니다. public record FindAnimalResponse( Long animalId, String animalName, String shelterName, String shelterAddress, String animalImageUrl ) { public static FindAnimalResponse .. 2023. 12. 16.