높은 동시성을 허용하려면,포스트그레SQL사용다중 버전 동시성 제어 (MVCC)을 사용하여 행을 저장합니다. 그러나MVCC업데이트 쿼리에 대한 몇 가지 단점이 있습니다. 특히 업데이트를 수행하려면 새 버전의 행을 테이블에 추가해야 합니다. 또한 업데이트된 행마다 새 색인 항목이 필요할 수 있으며 이전 버전의 행과 해당 색인 항목을 제거하는 데 비용이 많이 들 수 있습니다.
롤 토토 오버헤드를 줄이기 위해,포스트그레SQL힙 전용 튜플이라는 최적화 기능이 있습니다(핫). 이 최적화는 다음과 같은 경우에 가능합니다.
롤 토토는 표현식 및 부분 인덱스를 포함하여 테이블의 인덱스가 참조하는 열을 수정하지 않습니다.
업데이트된 행에 대한 이전 행을 포함하는 페이지에 충분한 여유 공간이 있습니다.
이러한 경우 힙 전용 튜플은 두 가지 최적화를 제공합니다:
롤 토토된 행을 나타내기 위해 새 색인 항목이 필요하지 않습니다.
업데이트된 행의 이전 버전은 다음을 포함하여 일반 작업 중에 완전히 제거될 수 있습니다.선택s, 주기적인 진공 작업이 필요하지 않습니다. (인덱스가 자신을 참조하지 않기 때문에 가능합니다.페이지 항목 식별자.)
요약하자면, 힙 전용 튜플 업데이트는 인덱스에 사용되는 열이 업데이트되지 않는 경우에만 생성될 수 있습니다. 페이지 공간이 충분할 가능성을 높일 수 있습니다.핫테이블을 줄여 롤 토토채우기 요소. 그렇지 않으면,핫새 행이 자연스럽게 새 페이지와 새 행 버전을 위한 충분한 여유 공간이 있는 기존 페이지로 마이그레이션되기 때문에 롤 토토는 계속 발생합니다. 시스템 보기pg_stat_all_tablesHOT 및 비HOT 롤 토토 발생을 모니터링할 수 있습니다.
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.