70.7. Кортежи только в куче (HOT)#

70.7. Кортежи только в куче (HOT)

70.7. Кортежи только в куче (HOT) #

Чтобы обеспечить высокую параллельность, Tantor BE использует многоверсионный контроль параллелизма (MVCC) для хранения строк. Однако MVCC имеет некоторые недостатки для запросов на обновление. В частности, обновления требуют добавления новых версий строк в таблицы. Это также может потребовать создания новых записей индекса для каждой обновленной строки, а удаление старых версий строк и их записей индекса может быть затратным.

Для снижения издержек при обновлении, Tantor BE имеет оптимизацию, называемую кучей только кортежей (HOT). Эта оптимизация возможна, когда:

  • Обновление не изменяет ни одного столбца, на которые ссылаются индексы таблицы, не включая суммирующие индексы. Единственный метод суммирующего индекса в основной дистрибуции Tantor BE - это BRIN.

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

В таких случаях, кучные кортежи обеспечивают две оптимизации:

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

  • Во время нормальной работы, включая SELECT, старые версии обновленных строк могут быть полностью удалены, вместо того чтобы требовать периодических операций очистки. (Это возможно, потому что индексы не ссылается на свои идентификаторы элементов страницы).

Вы можете увеличить вероятность достаточного пространства на странице для HOT обновлений, уменьшив fillfactor таблицы. Если вы этого не сделаете, HOT обновления все равно будут происходить, так как новые строки будут естественным образом мигрировать на новые страницы и существующие страницы с достаточным свободным пространством для новых версий строк. Системное представление pg_stat_all_tables позволяет отслеживать возникновение HOT и не-HOT обновлений.