| PostgreSQL 9.0.23 문서 | ||||
|---|---|---|---|---|
| PostgreSQL : 문서 : 9.0 : 인덱스 스포츠 토토 사이트 | 위로 | 51장. 토토 꽁 머니 액세스 방법 인터페이스 정의 | 토토 베이 : 문서 : 9.0 : 색인 고유성 확인 | |
색인 액세스 방법은 다음의 동시 업데이트를 처리해야 합니다. 여러 프로세스로 색인을 생성합니다. 핵심PostgreSQL시스템 획득액세스공유잠금토토 꽁 머니 스캔 중 토토 꽁 머니에 대해, 그리고RowExclusiveLock업데이트할 때 색인(일반 포함)진공). 이후 이러한 잠금 유형은 충돌하지 않으며 액세스 방법은 다음과 같습니다. 필요할 수 있는 세부적인 잠금을 처리할 책임이 있습니다. 인덱스 전체에 대한 배타적 잠금만 수행됩니다. 인덱스 생성, 삭제 중 또는REINDEX.
동시 업데이트를 지원하는 색인 유형 구축 일반적으로 필요한 사항에 대한 광범위하고 미묘한 분석이 필요합니다. 행동. b-트리 및 해시 인덱스 유형의 경우 다음 내용을 읽을 수 있습니다. 관련된 디자인 결정src/백엔드/액세스/nbtree/README그리고src/백엔드/액세스/해시/README.
색인 자체의 내부 일관성 요구 사항 외에도, 동시 업데이트는 상위 테이블(힙) 및 색인입니다. 왜냐면PostgreSQL별도 인덱스에서 힙에 액세스하고 업데이트합니다. 인덱스가 일치하지 않을 수 있는 창입니다. 힙. 우리는 다음 규칙에 따라 이 문제를 처리합니다.
색인 항목을 만들기 전에 새로운 힙 항목이 만들어졌습니다. (따라서 동시 토토 꽁 머니 스캔은 데이터를 확인하지 못할 가능성이 높습니다. 힙 항목. 색인 판독기가 어쨌든 커밋되지 않은 행에는 관심이 없습니다. 하지만 보세요토토 베이 : 문서 : 9.0 : 색인 고유성 확인.)
힙 항목이 삭제될 때(by진공), 모든 색인 항목을 제거해야 합니다. 먼저.
색인 스캔은 색인 페이지에 핀을 유지해야 합니다
      마지막으로 반환한 항목을 보관함amgettuple및ambulkdelete항목을 삭제할 수 없습니다.
      다른 백엔드에 의해 고정된 페이지. 이에 대한 필요성
      규칙은 아래에 설명되어 있습니다.
세 번째 규칙이 없으면 색인 리더는 다음을 수행할 수 있습니다.
  다음에 의해 제거되기 직전의 색인 항목을 참조하세요.진공, 그리고 해당 항목에 도착합니다.
  그 이후의 힙 항목은에 의해 제거되었습니다.진공. 다음과 같은 경우에는 심각한 문제가 발생하지 않습니다.
  항목 번호는 독자가 해당 항목에 도달해도 여전히 사용되지 않습니다.
  빈 항목 슬롯은 다음에서 무시됩니다.heap_fetch(). 하지만 세 번째 백엔드에
  이미 아이템 슬롯을 다른 용도로 재사용하셨나요? 사용할 때
  MVCC 호환 스냅샷은 새로운 기능이므로 문제가 없습니다.
  슬롯 점유자는 너무 새로운 사람이므로 통과할 수 없습니다.
  스냅샷 테스트. 그러나 MVCC를 준수하지 않는 스냅샷(예:
  와 같이SnapshotNow), 다음이 가능할 것입니다.
  실제로 스캔과 일치하지 않는 행을 수락하고 반환합니다.
  열쇠. 스캔을 요구하여 이 시나리오를 방어할 수 있습니다.
  모든 경우에 힙 행에 대해 키를 다시 확인해야 하지만
  너무 비싸요. 대신에 우리는 색인 페이지에 핀을 사용합니다.
  독자가 아직 있을 수 있음을 나타내는 프록시"비행 중"색인 항목부터 일치 항목까지
  힙 항목. 만들기ambulkdelete이러한 핀을 차단하면 다음이 보장됩니다.진공리더가 작업을 완료하기 전에는 힙 항목을 삭제할 수 없습니다.
  이 솔루션은 런타임 비용이 거의 들지 않으며 차단 기능이 추가됩니다.
  실제로 오버헤드가 발생하는 드문 경우에만 오버헤드가 발생합니다.
  갈등.
이 솔루션을 사용하려면 토토 꽁 머니 스캔이 필요합니다."동기식": 각 힙 튜플을 가져와야 합니다. 해당 토토 꽁 머니 항목을 스캔한 직후. 이것은 여러 가지 이유로 비싸다. 안"비동기"많은 TID를 수집하는 스캔 토토 꽁 머니에서 나중에 언젠가 힙 튜플을 방문합니다. 훨씬 적은 토토 꽁 머니 잠금 오버헤드가 필요하며 더 많은 작업을 허용할 수 있습니다. 효율적인 힙 액세스 패턴. 위의 분석에 따라 우리는 MVCC를 준수하지 않는 스냅샷에는 동기식 접근 방식을 사용합니다. 그러나 MVCC를 사용하는 쿼리에는 비동기 스캔이 가능합니다. 스냅샷.
안에amgetbitmap색인 스캔,
  액세스 방법은 어느 것에도 색인 핀을 유지하지 않습니다.
  반환된 튜플. 따라서 이러한 스캔을 사용하는 것은 다음과 같은 경우에만 안전합니다.
  MVCC 호환 스냅샷.