Azure Database for PostgreSQL에... 노트

Azure Database for PostgreSQL에서 DELETE 후 스토리지 이해 및 복구

PostgreSQL의 Multi-Version Concurrency Control (MVCC)는 독자와 작성자가 차단 없이 동시에 작동할 수 있도록 합니다. 행이 삭제될 때 PostgreSQL은 디스크에서 물리적으로 제거하는 대신 죽은 튜플로 표시합니다. 이는 진행 중인 트랜잭션에 대한 데이터 일관성을 보장하지만 테이블 파일 크기는 변경되지 않습니다. 결과적으로 Azure Monitor 스토리지 그래프는 논리적 행 수가 감소했음에도 불구하고 높은 사용량을 계속 표시합니다. 업데이트로 인해 생성된 이전 행 버전도 활성 트랜잭션에서 더 이상 필요하지 않을 때까지 공간을 차지합니다. 오래된 행 버전인 죽은 튜플은 축적될 수 있으며 vacuuming 작업을 통한 정리 작업이 필요합니다. 빈번한 데이터 수정으로 인해 테이블 및 인덱스 bloat가 발생할 수 있습니다. 표준 VACUUM은 내부 공간을 재사용을 위해 회수하지만 테이블 파일을 축소하지는 않습니다. VACUUM FULL은 테이블을 압축된 파일로 다시 작성하여 물리적으로 축소하지만 독점 잠금이 필요합니다. pg_repack은 테이블 및 인덱스 압축을 위한 덜 차단적인 대안을 제공합니다. 파티셔닝은 개별 행 대신 전체 파티션을 제거하여 과거 데이터를 관리하는 사전 예방적 접근 방식입니다. 임시 파일의 사용되지 않은 공간은 쿼리가 완료된 후 자동으로 회수됩니다. Azure Database for PostgreSQL Flexible Server는 스토리지 증가를 허용하지만 감소는 허용하지 않습니다. 스토리지 비용은 프로비저닝된 용량을 기준으로 하므로 데이터를 삭제해도 요금이 자동으로 낮아지지는 않습니다. 모범 사례에는 배치 삭제, 주요 메트릭 모니터링, 파티셔닝 사용 및 스토리지 용량에 대한 사전 계획이 포함됩니다.