PostgreSQL

[PostgreSQL] Unlogged Table 이란 ?

리거니 2023. 4. 19. 17:30
Unlogged Table 

A. UNLOGGED Table 이란?



          서버 충돌 후 데이터 일관성 또는 정합성이 문제가 되지 않거나 대용량 데이터 쓰기를 위해 당분간 데이터를

          복구할 가능성이 없는 경우에 한해 성능 향상이 필요한 일회용 테이블을 처리하려는 경우, Unlogged Table

          이 적합합니다. Unlogged Table은 2011 년 PostgreSQL 9.1에 도입되었으며 v9.5부터 alter 구문을 

          통하여 Unlogged Table, Logged Table 로 전환 사용이 가능합니다.

          

           WAL (Write-Ahead Logging ) 시스템은 Postgres를 안정적으로 만드는 주요 구성 요소입니다. 

           WAL 은 이중화 상태일 경우 데이터 동기화에 필요하며 또한, 장애 조치를 위해 복제에 사용하지만 

           테이블을 작성할 때 테이블을 Unlogged 가 셋팅 된 경우 쓰기는 보조(Stand-by) 서버에 복사되지 

           않으므로 명심합니다.



B. UNLOGGED Table 기능은 언제 쓸까 ? 



           ㄱ. 초기 데이터 구성 시 (마이그레이션 및 대용량 ETL 마이그레이션)

           ㄴ. 빠른 시간 내에 부분 DR 구성 시 (Cold Copy 제외)

           ㄷ. 가져 오는 데 많은 시간이 걸리고 몇 번만 사용되는 임시 대규모 데이터 세트 (금융, 과학 컴퓨팅 

                 및 빅 데이터).

           ㄹ. 비정상 종료가 발생할 경우라도 손실되거나 다시 가져올 수 있는 정적 데이터에서 사용 가능



C. 만약 비정상 종료가 발생한다면 ?



            테이블은 존재하지만 데이터가 없어지고 초기화 됩니다. 즉 해당 Unlogged 테이블에는 WAL을 작성할 

            필요가 없으니 트랜젝션 복구를 진행하지 않고 무시합니다.

            즉 테이블은 존재하나 데이터 건수가 0입니다.



D. 얼마나 빠르길래 쓰는 걸까?



            시스템 사양, 구성, 특성 마다 다르겠지만 상당한 효과를 아래와 같이 확인할 수 있었습니다.

 


테이블 생성

CREATE UNLOGGED TABLE "  "
(
  ......
);

 

기존 테이블 변경 시

ALTER TABLE board SET UNLOGGED;
※ 로깅 설정으로 변경 시 : ALTER TABLE board SET LOGGED;

 

unlogged 테이블 확인

SELECT RELNAME FROM PG_CLASS WHERE RELPERSISTENCE = 'u';

 

 

 

Faster Performance with Unlogged Tables in PostgreSQL

In the first "Addon" article of this cycle of Compose's Write Stuff, Lucero Del Alba takes a look at how to get better performance with PostgreSQL, as long as you aren't too worried about replication and persistence. Do you want to shed light on a favorite

www.compose.com