728x90
반응형
SMALL

DATABASE 3

[SQL] ORDER BY Ties: 하나의 데이터가 여러 Page에 조회되는 이유

제가 아는 tie 는 넥타이 뿐입니다.라고 하실 분들을 위해(저도 포함입니다), 용어부터 짚고 넘어가보겠습니다.# 영어에서, tie = 묶다 / 연결하다 / 동점 => 스포츠 경기 동점되면, “The game is tied” 라고 표현# DB에서, ORDER BY tie = 정렬 기준 같은 row 존재 => “ORDER BY tie 발생했다" 라고 표현# tie-breaker = 동점을 깨는 기준 데이터 조회 쿼리에서 페이지네이션을 구현할 때 마주친 ORDER BY Ties 버그를 소개합니다.실제로는 1개의 행만 존재하는데, 1페이지와 2페이지에 동일한 데이터가 나타나는 현상을 겪었고, 그 원인과 해결 방법을 정리했습니다.문제 유형: 데이터베이스 — LIMIT/OFFSET 페이지네이션 불안정성문제: 1..

IT/DB 2026.03.30

[Index] 복합 인덱스 적용기: 트리 구조 개념부터 실전 적용까지

오늘은, 데이터를 조회하는 쿼리에 복합 인덱스를 추가하면서,인덱스가 어떤 원리로 동작하는지 다시 한번 정리했습니다. 배경: 인덱스 없이 조회하면 어떻게 될까?아래 예시는 조회 쿼리의 WHERE 절입니다.WHERE (use_yn != 'N' OR created_at::date = CURRENT_DATE - 1) AND (created_at IS NULL OR created_at::date >= CURRENT_DATE - 1) 인덱스가 없으면 PostgreSQL은 Sequential Scan(Seq Scan) 을 수행합니다.테이블의 모든 행을 첫 줄부터 끝까지 읽으며 조건을 하나씩 확인하는 방식입니다.데이터가 100건이면 100번, 1만 건이면 1만 번 읽습니다.데이터가 적을 때는 문제없지만, 쌓일수록 ..

IT/DB 2026.03.25

[Supabase] DB 연결 실패? Connection Pool Size 부족 문제 해결하기

무료형 SaaS DB를 처음 써보는 것이기도 하고, 이렇게 작게 기본값이 되어 있을 줄 몰랐다. 문제 상황Supabase Postgres를 사용하던 중, Spring Boot 애플리케이션에서 간헐적으로 DB 명령문이 실행되지 않는 현상이 발생했다.❌ [ERROR] java.sql.SQLException: Cannot connect to databaseorg.postgresql.util.PSQLException: too many connections for role "user_account"검색해보니 Supabase의 기본 Connection Pool Size가 너무 작다는 것이 원인이었다.원인 분석Supabase는 Compute Size(사양)에 따라 기본 Pool Size가 결정된다.Comput..

IT/DB 2026.02.12
728x90
반응형
LIST