65.7. Кортежи только в куче (Heap-Only Tuples, HOT) #

Для обеспечения высокой степени параллельности PostgreSQL сохраняет строки, реализуя многоверсионное управление конкурентным доступом (MVCC). Однако механизм MVCC работает не очень эффективно, когда происходит изменение данных. В частности, при изменении строк в таблицы должны добавляться их новые версии. Кроме того, для каждой изменённой строки в индексы должны добавляться новые элементы, а удаление старых версий строк и элементов индекса может повлечь дополнительные издержки.

Для снижения издержек, связанных с изменениями данных, в PostgreSQL реализована оптимизация, называемая «кортежи только в куче» (HOT). Её применение возможно в следующих условиях:

  • При изменении не меняются столбцы, на которые ссылаются индексы таблицы, за исключением индексов сводных данных. Единственный метод, определяющий поведение сводных значений в базовом дистрибутиве PostgreSQL, — BRIN.

  • На странице, содержащей старую версию строки, достаточно свободного места для новой.

При выполнении этих условий оптимизация HOT даёт два преимущества:

  • Для представления изменённых строк не нужны новые элементы индекса, однако они могут потребоваться для индексов сводных данных.

  • При многократном изменении строки её версии, кроме первой и последней, могут быть полностью удалены в ходе обычной работы, даже во время SELECT, для этого не нужно периодически выполнять операции очистки. (Индексы всегда ссылаются на идентификатор элемента страницы исходной версии строки. Данные кортежей, связанных с этой версией строки, удаляются, а её идентификатор элемента преобразуется в ссылку, указывающую на первую версию строки, которая может быть по-прежнему видна параллельной транзакции. Промежуточные версии строки, которые больше никому не видны, полностью удаляются, а связанные идентификаторы элементов страниц становятся доступны для повторного использования.)

Чтобы на страницах было достаточно места для HOT-кортежей, можно уменьшить fillfactor (фактор заполнения) таблицы. Даже если это не делать, механизм HOT всё равно будет работать, поскольку новые строки будут естественным образом переноситься на новые страницы и существующие страницы, где достаточно свободного места для новых версий строк. За изменениями в режиме HOT и в обычном режиме позволяет наблюдать системное представление pg_stat_all_tables.

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy