내장 된 모든 토토 사이트-LOGGED 모듈에는 고유 한 유형의 토토 사이트 레코드가 있지만 일반적인 토토 사이트 레코드 유형이 있으며 일반적인 방식으로 페이지 변경 사항을 설명합니다. 이는 자신의 토토 사이트 REDO 루틴을 등록 할 수 없기 때문에 사용자 정의 액세스 방법을 제공하는 확장에 유용합니다.
일반 토토 사이트 레코드를 구성하기위한 API는에 정의되어 있습니다.access/generic_xlog.h
and 구현access/transam/generic_xlog.c
.
일반 WAL 레코드 시설을 사용하여 WAL 로그 데이터 업데이트를 수행하려면 다음을 따르십시오.
state = genericxlogstart (관계)
- 주어진 관계에 대한 일반 토토 사이트 레코드의 구성을 시작하십시오.
page = genericxlogregisterbuffer (state, buffer, flags)
- 현재 일반 토토 사이트 레코드 내에서 수정할 버퍼를 등록하십시오. 이 기능은 수정을 해야하는 버퍼 페이지의 임시 사본에 대한 포인터를 반환합니다.generic_xlog_full_image
, 델타 업데이트가 아닌 전체 페이지 이미지가 토토 사이트 레코드에 포함되어야 함을 나타냅니다. 일반적 으로이 플래그는 페이지가 새 것으로 새롭거나 완전히 다시 작성된 경우 설정됩니다.genericxlogregisterbuffer
토토 사이트-Loged 조치가 여러 페이지를 수정 해야하는 경우 반복 할 수 있습니다.
이전 단계에서 얻은 페이지 이미지에 수정을 적용합니다.
genericxlogfinish (state)
- 버퍼에 변경 사항을 적용하고 일반 토토 사이트 레코드를 방출합니다.
토토 사이트 레코드 구성을 호출하여 위의 단계 중 하나 사이에 취소 할 수 있습니다genericxlogabort (state)
. 이것은 페이지 이미지 사본에 대한 모든 변경 사항을 폐기합니다.
Generic WAL 레코드 시설을 사용할 때 다음 사항에 주목하십시오 :
버퍼의 직접 수정이 허용되지 않습니다! 모든 수정 사항은에서 획득 한 사본에서 수행해야합니다.genericxlogregisterbuffer ()
. 다시 말해, 일반적인 토토 사이트 레코드를 호출해서는 안되는 코드buffergetPage ()
그 자체. 그러나 적절한 시간에 버퍼를 고정/풀고 잠금/잠금 해제하는 것은 발신자의 책임으로 남아 있습니다.genericxlogregisterbuffer ()
이후까지genericxlogfinish ()
.
버퍼 등록 (2 단계) 및 페이지 이미지의 수정 (3 단계)은 자유롭게 혼합 될 수 있습니다. 즉, 두 단계 모두 어떤 순서로든 반복 될 수 있습니다. 버퍼는 재생 중에 자물쇠를 얻을 수있는 것과 동일한 순서로 등록해야합니다.
일반 토토 사이트 레코드에 등록 할 수있는 최대 버퍼 수는max_generic_xlog_pages
. 이 한계를 초과하면 오류가 발생합니다.
Generic 토토 사이트은 수정 될 페이지에 표준 레이아웃이 있다고 가정하고 특히 그 사이에 유용한 데이터가 없다고 가정합니다.PD_LOWER
andpd_upper
.
버퍼 페이지의 사본을 수정하기 때문에genericxlogstart ()
중요한 섹션을 시작하지 않습니다. 따라서 메모리 할당, 오류 던지기 등을 안전하게 수행 할 수 있습니다.genericxlogstart ()
andgenericxlogfinish ()
. 유일한 실제 중요한 섹션은 내부에 있습니다genericxlogfinish ()
. 전화에 대해 걱정할 필요가 없습니다genericxlogabort ()
오류 종료 중에.
genericxlogfinish ()
버퍼를 더럽게 마킹하고 LSN을 설정합니다. 당신은 이것을 명시 적으로 할 필요가 없습니다.
unlogged 관계의 경우 실제 토토 사이트 레코드가 방출되지 않는 것을 제외하고는 모든 것이 동일하게 작동합니다. 따라서 일반적으로 무제한 관계에 대한 명시 적 점검을 수행 할 필요는 없습니다.
Generic 토토 사이트 Redo 함수는 등록 된 것과 동일한 순서로 버퍼에 대한 독점 잠금 장치를 획득합니다. 모든 변경 사항을 다시 실행하면 잠금 장치가 동일한 순서로 해제됩니다.
ifgeneric_xlog_full_image
등록 된 버퍼에 대해 지정되지 않았으며 일반 WAL 레코드에는 이전 및 새 페이지 이미지 사이에 델타가 포함되어 있습니다. 이 델타는 바이트 바이트 비교를 기반으로합니다.
올바른 문서에 아무것도 표시되면 일치하지 않습니다.이 양식문서 문제를보고하려면