BI Consult Desktop Logo BI Consult Mobile Logo
  • Russian BI Исследование российских bi
  • Перейти на Fine BI
  • Контакты
  • +7 812 334-08-01
    +7 499 608-13-06
  • Отправить сообщение
  • Главная
  • Продукты Эксперт-BI
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Страхование
    • Банки
    • Лизинг
    • Логистика
    • Нефтегазовый сектор
    • Медицина
    • Сеть ресторанов
    • E-Commerce
    • Сельское хозяйство
    • Энергетика
    • FMCG
    • Девелоперы
    • Маркетплейсы
    • Пищевая промышленность
    • Фармацевтика
    • Построение Data Platform
    • Цифровая трансформация
    • Управление по KPI
    • Финансы
    • Продажи
    • Склад
    • HR
    • Маркетинг
    • Внутренний аудит
    • Категорийный менеджмент
    • S&OP и FP&A
    • Геоаналитика
    • Цепочки поставок (SCM)
    • AutoML
    • Process Mining
    • IBP
    • ИТ (CIO)
    • Закупки
  • Платформы
    • Системы бизнес-анализа (BI)
    • Интегрированное бизнес-планирование (IBP)
    • Хранилища данных (DWH / Lakehouse)
    • Каталоги данных (Data Catalog)
    • Системы ETL и ELT
    • AI / Исскуственный интеллект
    • Шина данных (ESB)
    • Система управления мастер-данными (MDM)
    • Семантический слой
  • Услуги
    • Переход на отечественные BI и DWH системы
    • Консалтинг
    • Пилотный проект
    • Обучение и сертификация
    • Бесплатное обучение
    • Поддержка
    • Технические задания
    • Сбор требований для проекта внедрения BI-системы
    • CI/CD для DWH
    • Аудит BI приложений и DWH
    • Выделенная команда
    • Настойка и поддержка баз данных
    • Разработка BI Стратегии
    • Styleguide для BI-системы
    • Как выбрать BI-систему
  • Курсы
    • Учебный курс Информационная грамотность (Data Literacy)
    • Учебный курс для бизнес-аналитиков
    • Учебный курс для системных аналитиков
    • Учебный курс по Data Governance
    • Учебный курс Как стать CDO
    • Учебный курс Современная архитектура хранилища данных
    • Учебный курс по Fine BI
    • Учебный курс по FineReport
    • Учебный курс по DWH
    • Учебный курс по Data Science (ML, AI)
    • Учебный курс по PostgreSQL
    • Учебный курс по Greenplum
    • Учебный курс по Apache Airflow и NiFi
    • Учебный курс по Open-source BI
    • Учебный курс по ClickHouse
    • Учебный курс по DataLens
    • Учебный курс по Loginom
    • Учебный курс по Modus BI и ETL
    • Учебный курс по Visiology
    • Учебный курс по dbt (Data Build Tool)
  • Компания
    • Руководство
    • Новости
    • Клиенты
    • Карьера
    • Скачать
    • Контакты

BI

  • FineBI
  • FineReport
  • FineDataLink
  • FineChatBI (FineAI)
  • Коннекторы данных из 1С в BI
  • Airflow / Nifi
  • Visiology
  • PIX BI
  • Modus BI
  • Yandex.DataLens
  • Open-source BI: Superset/Metabase
  • Luxms BI
  • AW BI + Alpha BI
  • FlyBI + Форсайт. Аналитическая Платформа
  • Loginom
  • Триафлай
  • AI / Исскуственный интеллект
  • Optimacros
  • Навигатор BI
  • Семантический слой

СУБД

  • Arenadata
  • ClickHouse
  • Greenplum
  • Postgres Professional
  • TData

Другое

  • Построение Data Platform
    • Аналитическое хранилище данных
    • Data Lake и Data Engineering
    • Подробнее про Data Lake
    • Внедрение Lakehouse
      • Apache Doris
      • StarRocks
      • Trino
    • Миграция витрин из пропиетарных DWH на новый стек
    • Учебный курс "Современная архитектура хранилища данных"
Главная » Курсы по системам бизнес-анализа и методологии » Учебный курс по PostgreSQL » Как устроен PostgreSQL » Heap Only Tuples (HOT) PostgreSQL

Heap Only Tuples (HOT) PostgreSQL

Для снижения издержек, связанных с изменениями данных, в PostgreSQL реализована оптимизация HOT (Heap Only Tuples).

 Её применение возможно при соблюдении следующих условий:

  • При изменении не затрагиваются столбцы, задействованные в индексах таблицы (в том числе, в индексах по выражениям и частичных индексах);
  • На странице, содержащей старую версию строки, достаточно свободного места для новой.

 

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

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

 

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

Более детальную информацию о данном механизме Вы найдете в README.HOT.

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

 

Обновление строки без HOT

Предположим, что таблица 'tbl' содержит два столбца: 'id' и 'data'; при этом 'id' является первичным ключом таблицы 'tbl'.

testdb=# \d tbl
                Table "public.tbl"

Column |  Type   | Collation | Nullable | Default
-------+---------+-----------+----------+---------
id     | integer |           | not null | 
data   | text    |           |          | 
Indexes:
    "tbl_pkey" PRIMARY KEY, btree (id)

 

Таблица 'tbl' содержит 1000 кортежей; последний кортеж, чей идентификатор равен 1000, хранится на 5-й странице таблицы. На последний кортеж указывает соответствующий индекс, ключ которого равен 1000, а tid - '(5, 1)'. См. рис. 78(a).

Как происходит обновление последнего кортежа без применения механизма HOT:

testdb=# UPDATE tbl SET data = 'B' WHERE id = 1000;

 

В этом случае PostgreSQL вставляет в индексную страницу не только новый кортеж, но и новый индексный кортеж. См. рис. 78(b).

Стоит заметить, что затраты на вставку кортежей достаточно велики. HOT невелирует данный нежелательный момент.

 

Принцип работы HOT

При обновлении строки с помощью HOT, если обновленная строка будет храниться в той же странице таблицы, где хранится старая строка, PostgreSQL не вставляет соответствующий индексный кортеж и устанавливает флаг HEAP_HOT_UPDATED и флаг HEAP_ONLY_TUPLE в поля t_informask2 старого и нового кортежа соответственно. Смотрите рисунки 79 и 80.

В этом случае для Tuple_1 и Nuple_2 устанавливаются флаги HEAP_HOT_UPDATED и HEAP_ONLY_TUPLE соответственно.

Далее приводится описание того, как PostgreSQL получает доступ к обновленным кортежам с помощью индексного сканирования сразу после обновления кортежей с помощью HOT. Смотрите рис. 81(a).

  • (1) Найдите индексный кортеж, указывающий на целевой кортеж.
  • (2) Перейдите к указателю строки [1], на которую указывает индексный кортеж.
  • (3) Прочитайте Tuple_1.
  • (4) Прочитайте Tuple_2 с помощью t_ctid Tuple_1.

 

В данном случае PostgreSQL считывает два кортежа, Tuple_1 и Tuple_2, и решает, какой из них будет видимым, используя механизм управления параллельным доступом, описанном в разделе 5.

Однако удаление “мертвых” кортежей на страницах таблицы приводит к неелательным последствиям -  если удалить Tuple_1, поскольку он является “мертвым”, то к Tuple_2 нельзя будет получить доступ из индекса.

Чтобы решить эту проблему, в нужный момент PostgreSQL перенаправляет указатель строки, указывающий на старый кортеж, на указатель строки, указывающий на новый кортеж – рис. 81 b

  • (1) Найдите индексный кортеж.
  • (2) Перейдите к указателю строки [1], на которую указывает индексный кортеж.
  • (3) Перейдите к указателю строки [2], указывающему на Tuple_2.
  • (4) Прочитайте Tuple_2, на который указывает указатель строки [2].

 

Более подробную информацию Вы найдете в файле README.HOT.

PostgreSQL удаляет мертвые кортежи в определенные промежутки времени. Данный процесс называется  дефрагментацией. Рис. 82 иллюстрирует дефрагментацию с помощью механизма HOT.

Обратите внимание на то, что стоимость дефрагментации гораздо меньше стоимости операции VACUUM, поскольку дефрагментация не предполагает удаления индексных кортежей.

 

Примечание:  случаи, когда использование механизма HOT невозможно

Для лучшего понимания принципа работы HOT, я опишу случаи, когда использования данного механизма недоступно.

Когда обновленный кортеж хранится на странице, отличной от страницы, на которой хранится старый кортеж, индексный кортеж, указывающий на этот кортеж, также должен быть вставлен в индексную страницу. Смотрите рис. 83 (a).

При обновлении значения ключа индексного кортежа в индексную страницу должен быть вставлен новый индексный кортеж. Смотрите рис. 83 (b).

 

 

Узнать стоимость решенияЗапросить видео презентацию

← Предыдущая статья
FULL VACUUM PostgreSQL
Следующая статья →
INDEX-ONLY-SCAN PostgreSQL

Решения

Анализировать ФинансыУвеличивайте ПродажиОптимальный Склад и ЛогистикаМаркетинговые Метрики

Клиенты
  • ПАО АНК «Башнефть» — российская вертикально-интегрированная нефтяная компания, с 2016 года входит в ПАО НК «Роснефть». Главный офис расположен в городе Уфе (Башкортостан). Добыча углеводородов – более 21 млн тонн нефти в год. Объем переработки – более 18 млн тонн нефти в год. Число сотрудников – более 33 тыс. человек.

  • ООО «Ай Пи Ти Групп» (IPT Group) — многопрофильный консалтинговый холдинг, специализирующийся на юридическом и финансовом сопровождении бизнеса. IPT Group занимает высокие позиции в профессиональных рейтингах, входит в ТОП-30 лучших юридических компаний России по версии «Право.ru-300», Global Law Experts и др.

  • НПФ «Будущее» — один из крупнейших негосударственных пенсионных фондов России, предоставляющий услуги по пенсионному обеспечению и накоплениям. Фонд активно внедряет цифровые технологии для повышения качества обслуживания клиентов.

  • Авиакомпания NordStar (АО «АК «НордСтар») – работает под данным брендом с 2008 г. и сейчас входит в топ-15 крупнейших российских авиакомпаний (данные Росавиации) с пассажирооборотом более 1 млн человек в год. АО «АК «НордСтар» выполняет и внутренние, и внешние рейсы, а ее основные хабы - Домодедово, Пулково и Емельяново. С 2021 года компания является базовым перевозчиком аэропорта Норильск.

  • Решения
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Страхование
    • Банки
    • Лизинг
    • Логистика
    • Нефтегазовый сектор
    • Медицина
    • Сеть ресторанов
    • E-Commerce
    • Энергетика
    • Фармацевтика
  • Услуги
    • Переход на отечественные BI и DWH
    • Консалтинг
    • Пилотный проект
    • Обучение и сертификация
    • Бесплатное обучение
    • Техническая поддержка
    • Технические задания
    • Сбор требований для проекта внедрения BI-системы
    • CI/CD для DWH
    • Аудит BI приложений
    • Выделенная команда
    • Настойка и поддержка баз данных
    • Разработка BI Стратегии
    • Styleguide для BI-системы
    • Как выбрать BI-систему
  • Платформы
    • FineBI
    • FineReport
    • FineDataLink
    • Коннекторы данных из 1С в BI
    • Airflow + NiFi
    • Visiology
    • Luxms BI
    • Modus BI
    • PIX BI
    • Arenadata
    • ClickHouse
    • Greenplum
    • Postgres Professional
    • Open-source BI: Superset/Metabase
    • Loginom
    • Yandex.DataLens
    • AI / Исскуственный интеллект
    • Optimacros
    • Шины данных
  • Курсы
    • Учебный курс Информационная грамотность
    • Учебный курс для бизнес-аналитиков
    • Учебный курс для системных аналитиков
    • Учебный курс по Data Governance
    • Учебный курс Как стать CDO
    • Учебный курс Современная архитектура хранилища данных
    • Учебный курс по Fine BI
    • Учебный курс по FineReport
    • Учебный курс по DWH
    • Учебный курс по Data Science (ML, AI)
    • Учебный курс по PostgreSQL
    • Учебный курс по Apache Airflow и NiFi
    • Учебный курс по Open-source BI
    • Учебный курс по ClickHouse
    • Учебный курс по DataLens
    • Учебный курс по Loginom
    • Учебный курс по Modus BI и ETL
    • Учебный курс по Visiology
    • Учебный курс по dbt
  • Функциональные решения
    • Создание Data Lake
    • Цифровая трансформация
    • Управление по KPI
    • Финансы
    • Продажи
    • Склад
    • HR
    • Маркетинг
    • Внутренний аудит
    • Категорийный менеджмент
    • S&OP и прогнозная аналитика
    • Геоаналитика
    • Цепочки поставок (SCM)
    • AutoML
    • Process Mining
    • Сквозная аналитика
  • Компания
    • О нас
    • Руководство
    • Новости
    • Клиенты
    • Скачать
    • Контакты
    • Политика конфиденциальности
RutubeVkontakteLinkedInYouTube
ООО "Би Ай Консалт",
ИНН: 7811437757,
ОГРН: 1097847154184
199178, Россия,
Санкт-Петербург,
6-ая линия В.О., Д. 63, 4 этаж
Тел: +7 (812) 334-08-01
Тел: +7 (499) 608-13-06
E-mail: info@biconsult.ru

 

 

 

 

 

×

Пользуясь сайтом, вы соглашаетесь с использованием cookies и политикой конфиденциальности.