Что означает jpa @ SequenceGenerator.allocationSize? - PullRequest
0 голосов
/ 18 февраля 2019

Я много гуглил и обнаружил, что многие люди говорят, что allocationSize означает 'After 'allocationSize' is reached, the next id will be retrieved from the database sequence again' в https://www.logicbig.com/tutorials/java-ee-tutorial/jpa/seq-generator.html.

В документе jpa это означает.

The amount to increment by when allocating sequence numbers from the sequence

Кажется,это то же самое, что «приращение на» в sql.

Какой из них правильный?Поскольку я тестировал в h2 / jpa, этот allocSize не работает, даже если он установлен равным 20, следующее значение последовательности не увеличивается на 20.

Я также запутался в «кэше» в sql.

В итоге, возьмем, к примеру, ниже.

CREATE SEQUENCE ITEM_ID_SEQ START WITH 1 INCREMENT BY 100 cache 30;

В чем разница между INCREMENT BY 100 , кеш 30 и Выделение размера jpa .

спасибо.

1 Ответ

0 голосов
/ 18 февраля 2019

Вот краткое объяснение значений конфигурации:

allocSize

Чтобы свести к минимуму обратные поездки на сервер базы данных, идентификаторы распределяются по группам.Количество идентификаторов в каждом выделении определяется атрибутом allocSize.

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

По умолчанию установлено значение 50.

INCREMENT BY

Укажите интервалмежду порядковыми номерами.

Это целочисленное значение может быть любым положительным или отрицательным целым числом, но оно не может быть 0.

Если это значение отрицательное, последовательность убывает.Если значение положительное, последовательность возрастает.Если вы пропустите это предложение, то интервалом по умолчанию будет 1.

CACHE

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

Если происходит системный сбой, все значения кэшированной последовательности, которые не были использованы в зафиксированных инструкциях DML, теряются.Потенциальное число потерянных значений равно значению параметра CACHE.

Заключение

allocSize и INCREMENT BY должны иметь одинаковое значение.Большее число сокращает количество обращений к базе данных.

Кэш - это оптимизация производительности БД, доступная не для всех типов баз данных.

...