‘데이터베이스’ 태그의 글
7편 RSS로 구독
7편
PostgreSQL 트랜잭션 ID 랩어라운드: VACUUM이 행을 동결하는 이유와 age(datfrozenxid) 읽는 법
PostgreSQL의 32비트 트랜잭션 ID가 한 바퀴 돌면 무슨 일이 생기는지, VACUUM의 동결과 relfrozenxid·datfrozenxid, 랩어라운드 방지 autovacuum, 경고와 쓰기 거부 단계, 복구 순서를 PostgreSQL 18 공식 문서로 정리했습니다.
PostgreSQL 데이터 체크섬이 잡는 것과 놓치는 것
PostgreSQL 데이터 체크섬은 데이터 페이지를 읽을 때 손상을 감지합니다. 검사가 일어나는 시점, pg_checksums로 오프라인에서 켜는 방법, pg_stat_database 카운터, amcheck와 백업이 여전히 맡는 범위를 정리했습니다.
PostgreSQL UPDATE가 새 인덱스 항목을 만들지 않는 조건: HOT 업데이트와 fillfactor
PostgreSQL의 HOT(heap-only tuple) 업데이트가 일어나는 두 조건, 인덱스가 참조하는 열과 같은 페이지의 빈 공간을 공식 문서로 정리했습니다. fillfactor 설정과 pg_stat_user_tables로 비율을 보는 법도 다룹니다.
PostgreSQL 테이블을 작업 큐로 쓸 때: FOR UPDATE SKIP LOCKED와 잠금이 풀리는 시점
여러 워커가 PostgreSQL 테이블에서 작업을 나눠 가져갈 때 쓰는 FOR UPDATE SKIP LOCKED를 공식 문서로 정리했습니다. 잠금이 유지되는 범위, LIMIT과 OFFSET, ORDER BY 순서, WITH 안의 잠금 절을 다룹니다.
SQLite의 -wal 파일이 계속 커질 때: 체크포인트와 끝나지 않는 읽기 트랜잭션
SQLite WAL 모드에서 -wal 파일이 줄지 않는 이유를 공식 문서로 정리했습니다. 자동 체크포인트 1000페이지, 읽기 트랜잭션이 체크포인트를 멈추는 원리, PASSIVE·FULL·RESTART·TRUNCATE의 차이와 journal_size_limit을 다룹니다.
트랜잭션 안의 SELECT 두 번이 다른 값을 돌려주는 이유: PostgreSQL READ COMMITTED와 스냅샷
PostgreSQL 기본 격리 수준인 READ COMMITTED에서 한 트랜잭션의 SELECT 두 번이 다른 결과를 내는 이유를 공식 문서로 정리했습니다. 문장마다 잡는 스냅샷, UPDATE의 재평가, REPEATABLE READ와 재시도도 다룹니다.
NOT IN 쿼리가 0건을 돌려줄 때: SQL의 NULL과 3값 논리
서브쿼리 결과에 NULL이 하나만 있어도 NOT IN 조건이 0건을 돌려주는 이유를 PostgreSQL·MySQL·SQLite 공식 문서로 정리했습니다. 3값 논리, WHERE의 행 선택 규칙, NOT EXISTS로 고치는 방법도 다룹니다.
찾는 글이 없습니다. 다른 낱말로 검색해 보세요.