본문 바로가기
DB 인사이드 | PostgreSQL 16 Release - New Feature (3) 이번 문서에서는 PostgreSQL 16 Release New Feature 중 Replication에 대한 내용을 다룹니다. Logical Replication From Standby Server PostgreSQL 15 버전까지는 Primary Server에서만 Logical Replication의 게시(Publication)을 구성할 수 있었습니다. Replication이 다중으로 구성되어 있다면 그 만큼 Primary Server의 부하도 증가합니다. PostgreSQL 16 버전부터는 Standby Server에서 게시(Publication)을 구성할 수 있습니다. 이 기능을 통해 Primary Server의 Replication 부하를 감소 시킬 수 있습니다. 📢 Primary → Physic.. 2023. 12. 27.
DB 인사이드 | PostgreSQL 16 Release - New Feature (2) 이번 문서에서는 앞서 나열된 PostgreSQL 16 Release의 주요 변경내용 중 일부를 테스트한 내용을 기술합니다. [성능 개선] FULL OUTER JOIN 및 RIGHT OUTER JOIN의 병렬 처리 PostgreSQL 16 버전부터 FULL OUTER JOIN 및 RIGHT OUTER JOIN의 병렬 처리를 지원함에 따라 Query Planner가 기존 버전 보다 더 효율적인 실행계획을 수립할 수 있습니다. 📢 병렬 처리는 enable_parallel_hash 파라미터로 제어할 수 있습니다. -- PostgreSQL 15 버전 EXPLAIN (COSTS OFF) SELECT COUNT(*) FROM repltab a FULL OUTER JOIN repltab b USING (c1); QUE.. 2023. 11. 30.
DB 인사이드 | PostgreSQL 16 Release - New Feature (1) 2023년 9월 14일 PostgreSQL Global Development Group은 최신 버전의 PostgreSQL 16을 출시하였습니다. PostgreSQL 16의 주요 기능은 아래와 같습니다. 📢 PostgreSQL 릴리즈 현황은 DB 인사이드 | PostgreSQL Setup - Version & Utility에서 확인할 수 있습니다. 성능개선 새로운 Query Planner 최적화로 PostgreSQL 기능의 성능 향상 FULL OUTER JOIN 및 RIGHT OUTER JOIN의 병렬 처리 가능 집계 함수(ex. string_agg, array_agg) 사용 시 DISTINCT 또는 ORDER BY와 함께 사용할 경우, 쿼리에 대한 더 최적화된 실행 계획 생성 enable_presorte.. 2023. 11. 30.
DB 인사이드 | PostgreSQL Extension - PG_STAT_MONITOR 시작하며 SQL 튜닝보다 중요한 작업은 튜닝대상을 식별하는 일이라고 생각합니다. DBMS별로 제공되는 정보의 한계를 명확히 알아야 하며, 여기저기 산재해 있는 정보들을 조합하여 온전한 결론에 도달해야 하기 때문입니다. 자칫 부정확한 판단으로 애꿎은 SQL을 선택했다면, 이는 안 하느니만 못한 결과를 초래할 수도 있으므로, 그 중요성은 이루 다 말할 수 없습니다. PostgreSQL에서는 튜닝대상 선정을 위해 PG_STAT_STATEMENTS라는 Extension을 많이 사용합니다. 해당 Extension은 매우 범용적이지만 제공되는 정보에는 다소 아쉬운 부분들이 존재합니다. 본 문서에서는 PG_STAT_STATEMENTS를 확장한 Percona의 PG_STAT_MONITOR Extension에 대해 알아.. 2023. 9. 21.
DB 인사이드 | PostgreSQL HOT - 3. Fillfactor와 HOT Update 시작하며 본 문서에서는 HOT Update와 Single-page Vacuuming의 효과를 확인하기 위한 테스트를 진행합니다. 테스트 결과를 통해 Fillfactor 설정에 따라 어떤 차이가 있는지 확인해 보겠습니다. 📢 HOT Update, Single-page Vacuuming, Fillfactor에 대한 개념은 해당 시리즈의 1. Page와 관리 글에 설명되어 있으니 참고하시기 바랍니다. TEST 환경 구성 설정 1만 건의 데이터를 가지고 있는 테이블 생성 (autovacuum_enabled=false) 100만 건의 Row Update 수행 수행 완료 후, 결과 확인 Fillfactor값을 100→75→50→30으로 변경하며 동일 과정 반복 참고 Script 1) 테스트 데이터 생성 ## TES.. 2023. 8. 31.
DB 인사이드 | PostgreSQL Replication - Slot Replication Slot 탄생 PostgreSQL에서 안정적인 Replication 유지를 위한 WAL 파일의 관리는 항상 어려운 문제였습니다. Standby Server의 연결이 끊어진 상태에서 Main Server의 WAL 파일이 재사용(Overwrite) 되면 Replication 상태를 유지할 수 없으므로 다음과 같은 에러를 마주하게 됩니다. LOG: started streaming WAL from primary at 0/3000000 on timeline 1 FATAL: could not receive data from WAL stream: ERROR: requested WAL segment 000000010000000000000003 has already been removed 그리고 이.. 2023. 7. 26.
DB 인사이드 | PostgreSQL Replication - Parameter 이번 문서에서는 PostgreSQL Replication과 관련된 Parameter에 대해 알아보겠습니다. 아래 그림을 통해서 Replication 종류에 따라 설정이 필요한 Parameter를 확인할 수 있습니다. 각 Parameter에 대한 설명은 Replication Parameter에 알파벳 순서로 설명되어 있습니다. Replication Parameter archive_cleanup_command Standby Server에서 더 이상 필요하지 않은 아카이브 WAL 파일을 정리하기 위해 사용됩니다. 보통 WAL 파일 정리를 쉽게 하기 위해 pg_archivecleanup Application을 주로 사용합니다. archive_cleanup_command = 'pg_archivecleanup /P.. 2023. 7. 26.
DB 인사이드 | PostgreSQL Replication - 설정 확인 ※ 목차 ※ 1. File-based Log Shipping Replication 설정확인 2. Streaming Replication 설정확인 3. Logical Replication 설정확인 1. File-based Log Shipping Replication File-based Log Shipping Replication 설정 확인 PostgreSQL 프로세스조회를 통해서 file-based Log Shipping 설정이 되었는지 확인할 수 있습니다. Main Server에서는 archiver 프로세스가 작동하며, Standby Server에서는 Main Server에서 전송하는 WAL 파일을 대기하는 프로세스가 작동합니다. Main Server 프로세스 [postgres@main ~] ps -ef.. 2023. 6. 29.
DB 인사이드 | PostgreSQL Replication - Catalog 이번 문서에서는 PostgreSQL Replication과 관련된 Catalog에 대해 알아보겠습니다. Catalog Name Description pg_stat_replication Replication에 대한 통계 확인 pg_stat_wal_receiver WAL Receiver에 대한 통계 확인 pg_replication_slots Replication Slot에 대한 정보 확인 pg_stat_replication_slots [Since. v14] Replication Slot에 대한 통계 확인 pg_publication Logical Replication의 Publication에 대한 정보 확인 pg_publication_rel Relation과 Publication간의 매핑정보 확인 pg_pub.. 2023. 6. 29.