본문 바로가기

CS/데이터베이스27

조회 최적화를 위한 인덱스 이해하기 - 03. 인덱스 자료구조 인덱스의 핵심 : 탐색(검색) 범위를 최소화 하는 것 검색이 빠른 자료구조들은 어떤 것이 있을까? Hash Map, List, Binary Search Tree Hash Map 단건 검색 속도 O(1) 그러나 범위 탐색은 O(N) 전방 일치 탐색 불가 ex) like ‘AB%’ → hash map은 꺼내서 일일이 다 비교해보아야 함 List 졍렬되지 않은 리스트의 탐색은 O(N) 정렬된 리스트의 탐색은 O(logN) 정렬되지 않은 리스트의 정렬 시간 복잡도는 O(N) ~ O(N*logN) 삽입 / 삭제 비용이 매우 높음 → 중간 값을 삭제하기 위해서는 뒤에 있는 것을 모두 옮겨야 함 Tree 트리 높이에 따라 시간 복잡도가 결정됨 트리의 높이를 최소화하는 것이 중요! 한쪽으로 노드가 치우치지 않도록 균형.. 2023. 6. 4.
조회 최적화를 위한 인덱스 이해하기 - 02. 인덱스 기본동작 인덱스 정렬된 자료구조, 이를 통해 탐색 범위를 최소화 예시 첫번째 column : id(pk) 나이가 가장 어린 사람의 데이터를 찾고 싶다. index가 없을 때 : 순차적으로 컬럼들의 데이터를 처음부터 끝까지 살펴봄 (이름→성별→나이 → 직업) 전체테이블을 살펴보게 된다. 인덱스가 있다면? 나이에 관한 정렬된 테이블이 하나 생기게 됨 → 여기서 찾은 후 전체 테이블에 해당 데이터를 찾게 됨 (데이터가 나이순으로 정렬되어 있기 때문에 하나만 조회하면 됨) 인덱스도 테이블이다. 인덱스의 핵심은 탐색(검색) 범위를 최소화 하는 것 2023 KAKAO Tech Campus_BackEnd 필수 과정 DB(MySQL) 강의 정리 내용입니다. 2023. 6. 4.
조회 최적화를 위한 인덱스 이해하기 - 01. 데이터베이스 성능 핵심 컴퓨터 구조 CPU가 디스크나 네트워크 카드 등에 접근을 하기 위해서는 I/O 버스를 거쳐야 함 데이터를 저장하기 위한 용도 → 메모리, 디스크 메모리 vs 디스크 메모리 속도 : 빠름 영속성 : 전원이 공급되지 않으면 휘발 가격 : 비쌈 디스크 속도 : 느림 영속성 : 영속성이 있음 가격 : 저렴함 데이터베이스의 데이터는 결국 디스크에 저장됨 하지만, 디스크는 메모리에 비해 훨씬 느리다. → 데이터베이스 성능의 핵심은 디스크 I/O(접근)을 최소화 하는 것 디스크 접근은 어떻게 줄일 수 있을까? 메모리에 올라온 데이터로 최대한 요청을 처리하는 것 → 메모리 캐시 히트율을 높이는 것 심지어 쓰기도 곧바로 디스크에 쓰지 않고 메모리에 쓴다. → 메모리에 데이터 유실을 고려해 WAL(Write Ahead L.. 2023. 6. 4.
SNS 모델링으로 배우는 정규화 / 비정규화 - 07. 실무에서의 정규화 비정규화에 대한 고민들 실무에서는 어떤 고민들을 할까? 테이블을 만들 때면 항상 고민 중복된 데이터이면 반드시 정규화를 해야할까? 사실 그렇지 않음 실무에서 중복 데이터면 기계적으로 정규화를 하는 분이 종종 있음 정규화는 비용 → 읽기 비용을 지불하고 쓰기 비용을 줄이는 것 정규화시 고려해야 하는 것 얼마나 빠르게 데이터의 최신성을 보장해야 하는가? 히스토리성 데이터(데이터의 최신성을 보장하지 않음 → 과거의 데이터를 가지고 있어야함)는 오히려 정규화를 하지 않아야 한다. 데이터 변경 주기와 조회 주기는 어떻게 되는가? → 만약 변경주기가 조회주기보다 빈번하다면 정규화하기에 유리하다. (쓰기의 이점을 가져가야 함. 반대의 경우에는 조회의 이점을 가져야함 ) 객체(테이블) 탐색 깊이가 얼마나 깊은가? 객체(테이블) 탐색 깊이가 .. 2023. 6. 4.