반응형 MySQL6 B-Tree 데이터베이스 인덱스의 자료구조로 해쉬 테이블과 B+Tree 자료구조를 활용할 수 있다는 것을 알았다 추가로 범위 탐색에 용이한 B+Tree를 대부분 활용하며 리프노드에 선형 데이터를 담아놓아 메모리 효율성이나 데이터 탐색에 용이하다 B-Tree는 어디서 파생되었는지 B-Tree에서 왜 B+Tree가 나오게 되었고, 어떤 자료구조를 구현하여 효율적인 탐색이 가능해졌는지 정리해보고자 한다 이진트리 B-Tree도 트리 자료구조이며 깊이가 깊어지면 탐색의 비용이 커진다 이것은 트리 자료구조를 알면 어느 정도 이해가 될 것이다 이진트리의 탐색 비용은 얼마인가? 일반적인 이진트리는 편향 트리가 발생할 수 있어 탐색 비용은 O(N)이다 트리의 깊이가 깊어지면 비용이 올라간다는 말을 이해할 수 있을 것이다 탐색의 비용.. 2023. 9. 15. 테이블 조인 데이터베이스에서 데이터 중복을 줄이고 테이블을 분리(정규화)하면서 테이블 사이에 관계를 가지게 되었다 그렇다면 그 분리된 테이블에서 데이터를 합쳐서 하나의 레코드로 읽어오려면 테이블의 데이터를 조합해야 한다 관계형 데이터베이스는 이러한 연산을 조인이라고 하며 어떻게 데이터를 결합하여 원하는 데이터를 추출하는지 여러 조인에 대해 알아보자 환경: MySQL 8.0 이상 버전 조인이란? 조인에 대한 개념은 다음과 같다 두 개 이상의 테이블 들을 연결 또는 결합하여 데이터를 출력하는것 JOIN은 관계형 데이터베이스의 가장 큰 장점이면서 대표적인 기능이라고 할 수 있다 일반적인 경우 행들은 PRIMARY KEY(PK)나 FOREIGN KEY(FK) 값의 연관에 의해 JOIN이 성립 어떤 경우에는 이러한 PK, F.. 2023. 9. 13. MySQL 인덱스 동작 확인하기 이전 글에서 조회 성능 최적화를 위한 인덱스를 작성하면서 인덱스를 적용시키는 여러 방법에 대해서 지식이 부족한 것 같아 추가로 인덱스 동작을 확인하는 글을 정리하게 되었다 MySQL8.0 버전 MySQL WorkBench의 Visual Explain을 사용하면서 정리해보려고 한다 인덱스는 B-tree구조로 되어있으며 리프 노드는 인덱스로 지정한 컬럼의 오름차순으로 정렬되어 있어 where절에 `=`, `>, 데이터 분포에 따라 성능이 크게 달라질 것으로 보임 따라서 where col1 = 1 and col2 > 1에 사용하게 되면 col1이 정해지면 col2이 정렬된 상태이니 빠르게 범위 탐색이 가능하다 ex:) 사용자가 2023년 이후 작성한 글을 불러오자 -> memberId=1 and created.. 2023. 7. 23. 조회 성능 최적화를 위한 인덱스 (2) 글을 작성하는 도중 인덱스에 대한 개념부터 알아두어야 이해가 더 쉬울 것 같아 글을 분리하였습니다 1편은 여기를 참고해 주세요! 대부분의 개발자들은 대용량 서비스에서 어떻게 데이터베이스의 부하를 줄이고 성능을 올릴 수 있는지에 대해 고민하고 여러 방법을 테스트해 볼 것이다. 나도 자주 고민해 봤지만 부하 테스트 환경 세팅, 서비스 구조, DB 구조에 따라 적용해 볼 수 있는 방법이 모두 다르며 제 각각의 상황에 맞는 고민을 하기 때문에 쉽게 접근해보지 못하였다. 이에 따라 사이드 프로젝트로 이커머스 도메인에서의 대용량 시스템일 때 어떤 기술들을 적용해서 성능을 최적화시킬 수 있을지 여러 방면으로 테스트하고 변화를 확인해 보는 프로젝트를 진행해 볼까 생각하고 있다. 이에 대한 사전 공부로 회원이 작성한 게.. 2023. 7. 6. 이전 1 2 다음 반응형