높은 동시성을 허용하려면postgresql용도Multiversion 동시성 제어(MVCC) 줄을 저장합니다. 하지만,MVCC토토 꽁 머니 쿼리를위한 몇 가지 단점이 있습니다. 특히 토토 꽁 머니에는 테이블에 새 버전의 행이 추가되어야합니다. 또한 토토 꽁 머니 된 각 행에 새로운 인덱스 항목이 필요할 수 있으며, 기존 버전의 행을 제거하고 인덱스 항목이 비쌀 수 있습니다.
토토 꽁 머니의 오버 헤드를 줄이는 데 도움이됩니다.PostgreSQL힙 전용 튜플 (이라는 최적화가 있습니다.hot). 이 최적화는 다음과 같이 가능합니다.
토토 꽁 머니는 표현식 및 부분 색인을 포함하여 테이블의 인덱스에서 참조 된 열을 수정하지 않습니다.
토토 꽁 머니 된 행의 기존 행이 포함 된 페이지에 충분한 여유 공간이 있습니다.
이 경우 힙 전용 튜플은 두 가지 최적화를 제공합니다.
토토 꽁 머니 된 행을 나타내는 데 새 인덱스 항목이 필요하지 않습니다.
기존 버전의 토토 꽁 머니 된 행 버전은 정상 작동 중에 완전히 제거 할 수 있습니다.select
s,주기적인 진공 작업이 필요하지 않고. (인덱스가 참조하지 않기 때문에 가능합니다페이지 항목 식별자.)
요약하면, 인덱스에서 사용하는 열이 토토 꽁 머니되지 않은 경우에만 힙 전용 튜플 토토 꽁 머니를 만들 수 있습니다. 충분한 페이지 공간의 가능성을 높일 수 있습니다.hot테이블을 줄임으로써 토토 꽁 머니FillFactor
. 그렇지 않으면hot새 행이 자연스럽게 새 페이지 및 기존 페이지로 새 행하는 충분한 여유 공간으로 새 페이지와 기존 페이지로 마이그레이션되므로 토토 꽁 머니는 여전히 발생합니다. 시스템보기pg_stat_all_tables핫 업데이트 및 비 hot 업데이트 발생을 모니터링 할 수 있습니다.