728x90

PostgreSQL 90

PostgreSQL: MVCC

※ PostgreSQL: MVCC.※ Version: PostgreSQL 17. 안녕하세요. 듀스트림입니다. 아니.. 이걸 포스팅 안했더라고요? 그래서 작성하는 오늘의 포스팅은 PostgreSQL의 MVCC 관련 내용입니다.1. PostgreSQL MVCC란?PostgreSQL은 고성능의 동시성 처리를 위해 MVCC (Multi-Version Concurrency Control) 방식을 채택했습니다.이 방식은 트랜잭션이 데이터베이스의 '스냅샷'을 통해 데이터를 읽고, 동시에 다른 트랜잭션이 동일한 데이터에 대해 변경을 가하더라도 서로 간섭받지 않도록 하는 아키텍처입니다. 핵심 원리각 트랜잭션은 자신이 '시작할 당시의 트랜잭션 ID' 상태를 스냅샷으로 보관합니다.데이터를 변경하면 기존 튜플을 직접 수정하지..

PostgreSQL 2025.05.16

PostgreSQL: SLRU(Simple Least Recently Used) 버퍼 캐시

※ PostgreSQL: SLRU (Simple Least Recently Used) Buffer Cache. 안녕하세요. 듀스트림입니다. 오늘은 PostgreSQL 내부 구조에서 단순하지만 매우 중요한 버퍼 캐시 관리 시스템인 SLRU에 대해 알아보겠습니다.1. 배경 지식LRU (Least Recently Used) 알고리즘이란?가장 오랫동안 사용되지 않은 데이터를 가장 먼저 제거하는 전략입니다. LRU는 메모리 캐시, DB 버퍼 관리, 운영체제 페이지 교체 등에서 가장 널리 쓰이는 알고리즘 중 하나입니다.LRU의 핵심 개념 캐시에는 제한된 크기만큼의 데이터를 저장할 수 있습니다.새로운 데이터가 들어왔는데 공간이 부족하면?가장 오래 전에 접근된 데이터를 찾아서 제거 가장 최근에 접근한 항목은 가장 늦게..

PostgreSQL 2025.05.15

PostgreSQL: Latency Spike 관련

※ PostgreSQL: Latency Spike. 안녕하세요. 듀스트림입니다.Latency Spike(지연 시간 급증)는 시스템이나 애플리케이션에서 일시적으로 응답 시간이 급격히 증가하는 현상을 말합니다.일반적인 평균 지연(latency)은 안정적인 수준을 유지하지만, 어떤 순간에 특정 요청이나 작업이 비정상적으로 오래 걸리는 상황을 뜻합니다. Latency Spike는 어떤 시스템에서든 일어날 수 있습니다. 이번 포스팅에서는 PostgreSQL(DBMS) 관점에서의 Latency Spike 사례들과 원인 그리고 보완 방법에 대해 알아보겠습니다.주요 사례 및 원인1. hot_standby_feedback로 인한 복제 지연원인hot_standby_feedback은 리플리카(standby)에서 실행 중인 ..

PostgreSQL 2025.05.14

PostgreSQL vs Oracle: 실행 계획 캐싱 전략과 통계 수집의 민감도 비교 분석

※ PostgreSQL vs Oracle: A Comparative Analysis of Execution Plan Caching Strategies and Sensitivity to Statistics Collection. 안녕하세요. 듀스트림입니다. Oracle에서 PostgreSQL로 전환하는 프로젝트 시 자주 나오는 질문들이 있습니다. 오늘 포스팅은 그 중 하나인 실행 계획 캐싱에 대한 내용을 주제로 다뤄봤습니다.특히, OLTP 시스템에서 데이터베이스 성능은 실행 계획의 적절성에 크게 의존합니다.실행 계획이 캐시되고 재사용되는 방식과 통계 수집 작업이 계획 무효화에 미치는 영향은 성능 최적화 및 예측 가능성 확보에 있어 핵심적인 이슈입니다. 이 글은 PostgreSQL과 Oracle의 실행 계획 ..

PostgreSQL 2025.05.12

PostgreSQL: EXPLAIN을 활용한 선택도 추정 정확도 분석

※ PostgreSQL: Analysis of Selectivity Estimation Accuracy Using EXPLAIN.※ Version: PostgreSQL 17. 안녕하세요. 듀스트림입니다. 계속해서 이전 포스팅과 이어지는 내용입니다. PostgreSQL: 선택도 기반 실행 계획 수립 원리※ PostgreSQL: The Principle of Execution Plan Generation Based on Selectivity.※ Version: PostgreSQL 17. 안녕하세요. 듀스트림입니다. 오늘 포스팅은 이전 포스팅과 이어지는 내용입니다. PostgreSQL: 동등 조건과 범위dewstream.tistory.comPostgreSQL 옵티마이저는 실행 계획 수립 시 조건절의 선택도(S..

PostgreSQL 2025.05.11

PostgreSQL: 선택도 기반 실행 계획 수립 원리

※ PostgreSQL: The Principle of Execution Plan Generation Based on Selectivity.※ Version: PostgreSQL 17. 안녕하세요. 듀스트림입니다. 오늘 포스팅은 이전 포스팅과 이어지는 내용입니다. PostgreSQL: 동등 조건과 범위 조건의 선택도 추정 방식 분석※ PostgreSQL: An In-Depth Analysis of Selectivity Estimation for Equality and Range Conditions. 안녕하세요. 듀스트림입니다. 오늘 포스팅은 조금 심도 있는 내용입니다. PostgreSQL의 옵티마이저에 대한 이해도를 높이dewstream.tistory.com 아래 포스팅도 참고하시면 좋을 거 같습니다. ..

PostgreSQL 2025.05.10

PostgreSQL: 동등 조건과 범위 조건의 선택도 추정 방식 분석

※ PostgreSQL: An In-Depth Analysis of Selectivity Estimation for Equality and Range Conditions.※ Version: PostgreSQL 17. 안녕하세요. 듀스트림입니다. 오늘 포스팅은 조금 심도 있는 내용입니다. PostgreSQL의 옵티마이저에 대한 이해도를 높이고 통계 기반 실행 계획 최적화 전략을 세우기 위하여 동등 조건(=)과 범위 조건(, BETWEEN)에 대한 선택도 추정 방식을 알아보겠습니다.1. 선택도 추정 이해를 위한 배경 지식1.1 선택도 (Selectivity)특정 조건이 전체 행에서 몇 %의 데이터를 필터링할지를 나타내는 값 (0~1 사이)-- 공식selectivity = 조건을 만족하는 예상 행 수 / 전체..

PostgreSQL 2025.05.09

PostgreSQL: Autovacuum 파라미터

※ PostgreSQL: Autovacuum Parameters.※ Version: PostgreSQL 16. 안녕하세요. 듀스트림입니다. 오늘은 유지관리에서 중요한 Autovacuum 파라미터들을 알아보고 튜닝 포인트와 주의사항에 대해 알아보겠습니다. 내용에 나오는 track_counts 등의 파라미터는 이전 포스팅 참고 부탁드립니다. PostgreSQL: Run-time Statistics 파라미터※ PostgreSQL: Run-time Statistics Parameters.※ Version: PostgreSQL 16. 안녕하세요. 듀스트림입니다. 오늘은 가볍게 런타임 통계(Run-time Statistics) 파라미터들을 알아보고 튜닝 포인트와 주의사항에 대해 알아dewstream.tistory...

PostgreSQL 2025.04.26

PostgreSQL: LSN → WAL 파일명 변환 쉘 스크립트

※ PostgreSQL: LSN to WAL file name conversion shell script. 안녕하세요. 듀스트림입니다. 오늘 포스팅은 그냥 제가 필요해서 만들었습니다. 현재의 Timline_id와 LSN을 쿼리해서 WAL 파일명을 계산해주는 쉘 스크립트입니다. ※ 접근제어 설정에 따라 .pgpass 파일 또는 비밀번호 입력이 필요할 수 있습니다.1. 쉘 스크립트#!/bin/bash# PostgreSQL connection settings (modify as needed)PGUSER="postgres"PGDATABASE="postgres"PORT=5432# Retrieve the current timeline ID and LSN from PostgreSQLCURRENT_TIMELINE_ID..

PostgreSQL 2025.03.18
728x90