Последовательности мета-данных Spring Batch - PullRequest
0 голосов
/ 01 июня 2018

Это скорее запрос на быстрое объяснение последовательностей, используемых для генерации идентификатора из таблиц Spring Batch, в которых хранится информация о заданиях и шагах.

Я запустил следующие последовательности в DB2 for Spring Boot+ Пакетное приложение:

CREATE SEQUENCE AR_REPORT_ETL_STEP_EXECUTION_SEQ AS BIGINT MAXVALUE 9223372036854775807 NO CYCLE;
CREATE SEQUENCE AR_REPORT_ETL_JOB_EXECUTION_SEQ AS BIGINT MAXVALUE 9223372036854775807 NO CYCLE;
CREATE SEQUENCE AR_REPORT_ETL_JOB_SEQ AS BIGINT MAXVALUE 9223372036854775807 NO CYCLE;

Когда выполняется задание Spring Batch, каждое поле идентификатора увеличивается на 20 для каждой новой записи.Хотя это не главная проблема, это все еще немного сбивает с толку, почему.

Я удалил последовательности и добавил их снова с помощью INCREMENT BY 1.Теперь это увеличивает каждую вторую запись на 1, а другую запись на 20.

Любые советы или объяснения будут отличной возможностью для обучения.

1 Ответ

0 голосов
/ 01 июня 2018

По соображениям производительности Db2 для Linux Unix Windows по умолчанию предварительно выделит 20 номеров последовательности и сохранит их в памяти для более быстрого доступа.

Если вам не нужно такое поведение кэширования и вы можете терпеть накладные расходы при выделении без кэширования, тогда вы можете использовать опцию NO CACHE при определении последовательности.Но имейте в виду, что без кэширования Db2 должен выполнять синхронную запись журнала транзакций для каждого номера, который будет выделен из последовательности, что обычно нежелательно в ситуациях высокочастотной вставки.

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

Пример: нет синтаксиса кэша:

    CREATE SEQUENCE AR_REPORT_ETL_STEP_EXECUTION_SEQ 
AS BIGINT MAXVALUE 9223372036854775807 NO CACHE NO CYCLE;

Подробнее можно прочитать в документация .

...