Особенности работы нумерации и выбор типа нумератора

Работа нумераторов разных типов зависит от особенностей хранения и обработки данных приложения и раздела в базе PostgreSQL. Это напрямую влияет на скорость присваивания индексов элементам, нагрузку на систему и работу нумератора при обновлении и перезагрузке СУБД.

Ниже приведены ключевые особенности каждого типа нумератора и рекомендации по их выбору под ваши задачи.

Особенности нумератора на уровне приложения

При обновлении или перезагрузке базы данных PostgreSQL возможен сдвиг значения индекса для новых элементов приложения. Например, такое может произойти после перехода на новую версию системы.

Возможные решения:

  • если сдвиги в нумерации критичны — используйте в работе нумератор на уровне раздела. При этом важно учитывать особенности присваивания индекса в условиях интенсивного автоматического создания записей;
  • если сдвиг в нумерации не критичен — используйте нумератор на уровне приложения. После сдвига вы можете скорректировать нумерацию в настройках.

Особенности нумератора на уровне раздела

Перезагрузка или обновление базы данных PostgreSQL не влияют на последовательность присваивания номеров. При использовании нумератора на уровне раздела не будут выполнятся сдвиги в нумерации.

Однако при массовом создании элементов, например с помощью скриптов, присваивание индексов требует больше ресурсов, из-за чего время создания элементов может увеличиться.

Как исправить сдвиг нумерации после перезагрузки PostgreSQL

Если в приложении использовался нумератор уровня приложения и после обновления или перезагрузки PostgreSQL произошёл сдвиг индексов, вы можете выбрать один из вариантов, в зависимости от требований к нумерации:

  1. Вместо нумератора на уровне приложения настройте нумератор на уровне раздела. Во время настройки в поле Начальное значение* укажите число, с которого должна продолжиться нумерация.

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

  1. Если использовать нумератор на уровне раздела не требуется и сдвиг не критичен, перейдите в настройки нумератора приложения и установите следующий нужный номер вручную.

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