PostgreSQL – быстрая вставка
Если нужно сделать быструю вставку, чтобы не держать транзакцию, то можно использовать промежуточную табличку или PgQ. Далее job (pgpro_scheduler) или сторонний worker может спокойно перекладывать данные (или оправлять куда-то, например в брокер сообщений) уже в другой транзакции.
В случае с собственной табличкой помните – вставку замедляет все: триггеры, индексы, ограничения, поля с AUTO_INCREMENT. Поэтому, чем меньше всего этого будет навешано, тем быстрее произойдет вставка.
Рассмотрим идеальный пример, когда можно пренебречь последовательностью записей. Допустим, транзитная таблица для быстрой вставки будет определяться так …
Worker будет перекладывать данные в целевую таблицу с «обвесом», примерно так …
Если нужно перенести не все записи, а пачку, например 1000 шт., то так …
Если нужно гарантированно повторить последовательность записи данных, то так …