Skip to content

Commit 9e8f819

Browse files
HOT-обновления
1 parent 40da90e commit 9e8f819

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

CORE.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,20 @@ SELECT pg_current_xact_id();
189189
SELECT pg_xact_status('<номер транзакции>');
190190
```
191191

192+
### HOT-обновления
193+
194+
HOT (Heap-Only Tuples) обновления - это механизм оптимизации в PostgreSQL, который позволяет уменьшить накладные расходы при выполнении операций обновления данных в таблице, особенно в случаях, когда обновление не изменяет значения индексированных столбцов.
195+
196+
При обновлении строки в таблице самая сложная часть это обновление индексов, так как требуется обновление индексов на всех колонках, которые были изменены. HOT-обновления позволяют избежать этой сложности, оставляя исходную строку в том же месте на диске и помечая её как устаревшую. Новые данные записываются в конец таблицы, при этом индексы не обновляются.
197+
198+
Пример:
199+
200+
Предположим, есть таблица "users" с двумя колонками: "id" и "name". Нужно обновить значение колонки "name" у пользователя с id=1. Без HOT-обновлений, PostgreSQL должен был бы обновить индексы для каждой строки, где значение "name" меняется.
201+
202+
С использованием HOT-обновлений: PostgreSQL помечает текущую строку с id=1 как устаревшую, не обновляя индексы. Он добавляет новую строку с обновленным значением "name" в конец таблицы без обновления индексов. Теперь PostgreSQL знает, что строка с id=1 больше не актуальна и должна быть проигнорирована при выполнении запросов.
203+
204+
HOT-обновления уменьшают IO-нагрузку и уменьшают время, необходимое для выполнения операций обновления в PostgreSQL. Однако, HOT-обновления могут быть применены только в определенных случаях, когда обновляются только ниндексированные данные.
205+
192206

193207
### Изоляция
194208

0 commit comments

Comments
 (0)