다가오는 프로젝트에서 다양한 MVCC 가능 데이터베이스를 고려 중이며 PostgreSQL이 내 레이더에 들어 왔습니다.PostgreSQL Vacuum을 1 ~ 2 분마다 실행할 수 있습니까?
는 데이터베이스의 현재 버전에서 몇 가지 정보를 읽어 데이터를 80 ~ 90 %로 수정 한에 다시 쓰거나 : 내 프로그램의
요구 사항은 대략 다음과 같은 순서를 포함 더 많은 거래 (과거와 현재 상태가 모두 필요한 Conway의 Game of Life에서 그리드 업데이트와 같은 것을 상상해보십시오).
대기 완료 후 1-2 분. 이 시간 동안 클라이언트는 새 데이터에 대해 읽음을 발행 할 수 있습니다.
반복.
데이터베이스의 크기는 2-4GB로 제한됩니다.
~ 90 %의 변경 사항은 기존 개체의 업데이트로, ~ 5 %는 새 개체가되고 ~ 5 %는 삭제 된 개체가됩니다.
제 질문은 평범한 VACUUM 명령을 1 ~ 2 분에 한 번씩 1.5 단계로 실행하고 매번 2-3 ~ GB의 변경 사항을 PostgreSQL에서 자동으로 처리 할 수 있습니까?
아마 수동으로 실행할 필요는 없습니다. 특정 테이블에 대한 자동 진공 설정을 조정하면 충분합니다. 그러나 진공은 많은 수의 행을 삭제하거나 삽입 할 때만 필요합니다. 업데이트에는 그러한 공격적인 공백이 필요하지 않습니다. –
필자가 알고있는 모든 업데이트는 새로운 XID를 사용하여 새 레코드를 생성하기 때문에 각주기마다 개체의 80-90 %를 업데이트하므로 많은 "오래된"레코드를 정리해야합니다. – MindJuice
단계 1이 실행되는 동안 클라이언트가 단계 "0"에서 데이터베이스의 "이전"상태에 대한 읽기를 발행 할 수도 있으므로 새 레코드가있는 동안 이전 레코드를 사용할 수 있어야합니다. 생성됩니다. – MindJuice