DB/MySQL

DB/MySQL

Offset 페이징 vs Cursor 페이징 - 커서 기반 페이징으로 최적화하기

Offset Paging오프셋 페이징은 데이터 목록을 페이지 단위로 나눠서 조횔 때 사용하는 방식입니다.주로 SQL의 offset과 limit 구문을 사용합니다.select *from postorder by create_at descoffset 10limit 20;offset, limit을 사용한 쿼리 이용페이지 단위로 구분⛔ 오프셋 페이징 방식은 앞에서 읽었던 행을 다시 전부 읽어야 하므로 데이터가 많아지고 뒷 페이지를 읽을 수록 느려지는 단점이 있습니다. Offset Paging: 데이터 중복 문제1. 현재 작성된 게시글 10개가 있다. id( 1 ~ 10)2. A 사용자에게 최신 게시글을 5개 보여주기 (10-6)select *from postorder by id desclimit 5 # 한 페이지..

DB/MySQL

데이터베이스 인덱스 자료구조: B-Tree와 B+Tree 구조 이해 및 차이점 설명

B-Tree자녀 노드의 최대 개수를 늘리기 위해서 ➡️ 부모 노드에 Key를 1 개 이상 저장하는 자료구조이다. 이진 탐색 트리를 일반화한 트리라고도 합니다.Root Node: 최상위에 있는 노드Branch Node: 루트 노드와 리프 노드 중간에 있는 노드Leaf Node: 가장 하위에 있는 노드리프 노드에는 실제 데이터 레코드 or 레코드를 찾아가기 위한 주소값이 저장됩니다.리프 노드뿐 아니라 내부 노드에도 위 정보가 존재할 수 있음 부모 노드의 Key들을 오름차순으로 정렬합니다.정렬된 순서에 따라 자녀 노드들의 key 값의 범위가 결정됩니다.? k1 ? > k2 B-Tree 파라미터M : 각 노드의 최대 자녀 노드 수M이 3인 경우, 3차 B-Tree라고 부름M-1 : 각 노드의 최대 Key 수..

DB/MySQL

MySQL InnoDB 인덱스 구조 이해하기: 클러스터 인덱스, 보조 인덱스

InnoDB란?InnoDB는 MySQL의 대표적인 트랜잭션 기반 스토리지 엔진(Storage Engine)이다.Each InnoDB table has a special index called the clustered index that stores row data.Typically, the clustered index is synonymous with the primary key. Set Primary KeyWhen you define a Primary key on a table, InnoDB uses it as the clustered index. A primary key should be defined for each table.If there is no logical unique and non-nu..

DB/MySQL

데이터베이스 단일 인덱스와 복합 인덱스의 차이와 활용법

복합 인덱스 알아보기복합 인덱스는 단어 그대로 여러 개의 컬럼 조합으로 생성된 인덱스이다.(idx_col1, idx_col2) 에 대해 인덱스를 설정하면, 명시한 컬럼 순서대로 인덱스가 정렬됩니다.B+ Tree 구조를 만들 때 idx_col1 컬럼에 대해 먼저 정렬을 하고, 동일한 값이 있다면 idx_col2를 기준으로 정렬하여 인덱스를 관리합니다.복합 인덱스 구조를 보면 첫 번째 컬럼을 먼저 조회하고 그다음에 두 번째 컬럼을 조회하는 것을 알 수 있습니다. 그래서 해당 인덱스를 제대로 사용하기 위해서는 순서에 맞게 Query를 구성해야 합니다.만약, idx_col2를 먼저 탐색하고 idx_col1을 탐색하게 where 조건문을 설정했다면, 올바르게 인덱스 탐색이 이루어지지 않을 수 있습니다. CREAT..