PostgreSQL의 하나의 테이블에서만 미리 쓰기 로깅을 방지하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/38090

  •  09-06-2019
  •  | 
  •  

문제

로그 배송을 고려하고 있습니다. 미리 로그 쓰기(WAL) PostgreSQL에서 웜 스탠바이 데이터베이스를 생성합니다.그러나 매일 엄청난 양의 INSERT/DELETE를 수신하지만 그 안의 데이터 보호에는 관심이 없는 테이블이 데이터베이스에 하나 있습니다.생산되는 WAL의 양을 줄이기 위해 궁금했습니다. 한 테이블의 활동이 WAL에 기록되지 않도록 하는 방법이 있습니까?

도움이 되었습니까?

해결책

불행하게도 나는 그런 일이 있다고 믿지 않습니다.WAL 로깅은 테이블 수준보다 훨씬 낮은 페이지 수준에서 작동하며 어떤 페이지가 어떤 테이블의 데이터를 보유하고 있는지조차 알지 못합니다.실제로 WAL 파일은 어떤 페이지가 어느 페이지에 속해 있는지조차 모릅니다. 데이터 베이스.

활동량이 많은 테이블을 완전히 다른 PostgreSQL 인스턴스로 이동하는 것을 고려할 수 있습니다.이것은 극단적인 것처럼 보이지만 해당 활동이 WAL 파일에 표시되는 것을 방지하기 위해 머리 위로 다른 방법을 생각할 수 없습니다.

다른 팁

이제 더 나은 답변이 있는 이 오래된 질문을 발견했습니다.Postgres 9.1에는 DML 변경 사항을 WAL에 기록하지 않는 테이블인 "기록되지 않은 테이블"이 도입되었습니다.자세한 내용은 문서를 참조하세요. 하지만 적어도 지금은 이 문제에 대한 해결책이 있습니다.

보다 9.1을 기다리는 중 - 로그되지 않은 테이블 작성자: depesz, 그리고 9.1 문서.

내 질문에 하나의 옵션을 제공합니다.있다 임시 테이블 - "임시 테이블은 세션이 끝날 때 또는 선택적으로 현재 트랜잭션이 끝날 때 자동으로 삭제됩니다(아래 ON COMMIT 참조)." - 이는 WAL을 생성하지 않는 것 같습니다.그럼에도 불구하고 테이블 생성 및 디자인이 코드에 포함되어야 하므로 이는 이상적이지 않을 수 있습니다.

나는 고려할 것이다 멤캐시드 이와 같은 사용 사례의 경우.값싼 기계 여러 대에 부하를 분산시킬 수도 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top