Операция выполнена!
Закрыть
Хабы: PostgreSQL

Выбор типа данных для первичного ключа и способ его заполнения влияет на производительность и эффективность индекса ключа. В статье описываются особенности вставки в таблицу с первичным ключем для целочисленных полей (bigint) и uuid. Патч с функцией, генерирующей uuidv7 был принят в PostgreSQL 31 января 2025. У последовательностей и identity столбцов есть параметр CACHE. Параметр определяет сколько значений из последовательности будет кэшировать серверный процесс в своей локальной памяти для будущих вставок.

Быстрый путь вставки в индексы

Оптимизация вставки, позволяющая не спускаться с корня дерева индекса типа btree называется fastpath. Серверный процесс, который выполнил вставку в правый листовой блок, запоминает ссылку на него и при последующей вставке, если новое значение больше предыдущего (или пусто) и не проходит путь от корня до листового блока. "The fastpath optimization avoids most of the work of searching the tree repeatedly when a single backend inserts successive new tuples on the rightmost leaf page of an index" (nbtinsert.c).

Столбец с первичным ключом обычно делают автоинкрементальным, то есть используется монотонно возрастающая последовательность целых чисел. В таком случае, при вставке (INSERT) новой строки она всегда будет вставляться в самый правый листовой блок и при вставке нет смысла проходить блоки начиная с корня. Также при вставке в датавременной столбец, заполняемый по DEFAULT временем вставки или заполняемые другим способом.

Если по какой-либо причине выполнил вставку (в индекс записи только вставляются, они не меняются, а удаляются только вакуумом) не в самый правый блок, то процесс забывает адрес блока и снова начинает поиск с корня.

Читать далее
Читайте также
СТАТЬ АВТОРОМ
НОВОСТИ

ПИШИТЕ

Техническая поддержка проекта ВсеТут

info@vsetut.pro