DBA 77

FILLFACTOR

PostgreSQL의 FILLFACTOR란 무엇인가요?'FILLFACTOR'는 데이터베이스 테이블이나 인덱스 페이지가 데이터로 채워지는 양을 제어하는 PostgreSQL의 저장 매개변수이는 특히 빈번한 업데이트 또는 삽입과 관련된 작업의 경우 데이터베이스 성능에 큰 영향을 미칠 수 있는 중요한 조정 매개변수임. FILLFACTOR의 주요 개념:페이지 구조:PostgreSQL은 고정된 크기(일반적으로 8KB)의 블록(또는 페이지)에 테이블 및 인덱스 데이터를 저장함.각 페이지에는 여러 행의 데이터가 포함되어 있음.FILLFACTOR는 테이블이나 인덱스가 처음 채워질 때 각 페이지의 몇 퍼센트가 데이터로 채워지는지를 결정함. 기본 필팩터:기본적으로 PostgreSQL은 'FILLFACTOR' 100을 사용함..

DBA/Postgresql 2024.09.03

pg_hint_plan

ScanHint ListDescriptionFormatSeqScan테이블 순차 스캔을 하도록 적용SeqScan(Table)TidScan테이블 TID 스캔을 하도록 적용TidScan(Table)IndexScan테이블에서 특정 인덱스가 있는 경우, 인덱스 스캔을 하도록 적용.이 때 테이블에 인덱스가 하나거나 인덱스를 특정할 필요가 없는 경우, 테이블만 작성 가능IndexScan(Table [index])IndexOnlyScan테이블에서 특정 인덱스가 있는 경우, 인덱스 전용 스캔을 하도록 적용.이 때 테이블에 인덱스가 하나거나 인덱스를 특정할 필요가 없는 경우, 테이블만 작성 가능IndexOnlyScan(Table [index])BitmapScan테이블에서 특정 인덱스가 있는 경우, 비트맵 스캔을 하도록 적..

DBA/Postgresql 2024.09.03

유휴 세션 정리

PostgreSQL의 "idle in transaction" 상태는 트랜잭션이 시작되었지만(BEGIN, START TRANSACTION 또는 자동으로 시작되는 암시적 트랜잭션을 사용하여) 현재 실행 중인 명령이 없고 트랜잭션이 시작된 상황을 나타냅니다. 아직 커밋되거나 롤백되지 않았습니다. 세션은 본질적으로 유휴 상태로 열려 있는 트랜잭션 내에서 추가 명령을 기다리고 있습니다. 유휴 세션 확인SELECT pid, usename, application_name, client_addr, state, backend_xid, backend_xmin, state_change, queryFROM pg_stat_activityWHERE state = 'idl..

DBA/Postgresql 2024.08.28

DB간 테이블 복제(실시간)

동일 서버 내에 생성된 DB간 테이블 복제 방법 / 방식은 다르지만 CDC처럼 동작하는 효과를 얻을 수 있음.. 예시 ) TEST DB의 TEST테이블을 TEST1 DB의 TEST테이블로 데이터를 복제하고 복제된 데이터는 TEST DB의 TEST테이블에서 삭제가 필요했음.  1) EXTENSION설치 (TEST DB에서 실행)CREATE EXTENSION dblink;CREATE EXTENSION postgres_fdw; 2) TEST DB에서 생성CREATE SERVER tropdb_serverFOREIGN DATA WRAPPER postgres_fdwOPTIONS (host 'HOST', port '5432', dbname 'test1'); --> 복제할 DB정보CREATE USER MAPPING F..

DBA/Postgresql 2024.07.26

pg_stat_statements 활용(통계 정보)

pg_stat_statements는 PostgreSQL 데이터베이스에서 실행되는 SQL 쿼리에 대한 자세한 통계를 제공하는 PostgreSQL용 확장입니다. 이 확장은 성능 모니터링 및 문제 해결에 유용함. 방법1) postgresql.con 파일에 아래 내용 추가shared_preload_libraries = 'pg_stat_statements'#선택사항pg_stat_statements.max = 10000 # Default is 5000pg_stat_statements.track = 'all' # Default is 'top'pg_stat_statements.track_utility = on # Default is offpg_stat_statements.save: 'on'인 경우 서버를 다시 시..

DBA/Postgresql 2024.07.26

PostgreSQL의 VACUUM 및 MVCC 이해

PostgreSQL은 데이터 일관성을 관리하고 성능을 최적화하기 위해 MVCC(다중 버전 동시성 제어) 및 VACUUM이라는 두 가지 필수 메커니즘을 사용합니다. 이러한 메커니즘을 자세히 살펴보고 메커니즘이 작동하는 방식과 강력한 데이터베이스 시스템을 유지하는 데 중요한 이유를 알아보자!다중 버전 동시성 제어(MVCC)MVCC는 데이터베이스 테이블을 잠그지 않고 동시 트랜잭션을 관리하는 데 사용되는 데이터베이스 기술이며,이는 읽기 및 쓰기 작업이 동시에 발생할 수 있어 각 트랜잭션에 대한 데이터에 대한 일관된 보기를 제공할 수 있음을 의미.MVCC 작동 방식트랜잭션 격리: 각 트랜잭션은 특정 시점의 데이터베이스 스냅샷을 확인합니다. 이렇게 하면 한 트랜잭션의 변경 사항이 커밋될 때까지 다른 트랜잭션에 표..

DBA/Postgresql 2024.06.25

DB 내의 모든 table 들에 대해 각 relation ID 별로 block hit/read 통계 정보 확인 쿼

POSTGRESQL 15 버전대에서 사용 가능한 통계정보 확인하는 쿼리. SELECT c.oid AS relid, n.nspname AS schemaname, c.relname, pg_stat_get_blocks_fetched(c.oid) - pg_stat_get_blocks_hit(c.oid) AS heap_blks_read, pg_stat_get_blocks_hit(c.oid) AS heap_blks_hit, sum(pg_stat_get_blocks_fetched(i.indexrelid) - pg_stat_get_blocks_hit(i.indexrelid))::bigint AS idx_blks_read, sum(pg_stat_get_blocks_hit..

DBA/Postgresql 2024.06.25