У вас есть два конкурирующих интересов: большая транзакция (которая будет иметь низкую производительность, высокий риск сбоя) или быстрый импорт (что лучше всего делать не за одну транзакцию).
Если вы добавляете строки в таблицу, не выполняйте транзакцию. Вы должны быть в состоянии определить, какие строки являются новыми, и удалить их, если вам не нравится, как выглядит первый раунд.
Если транзакция сложная (каждая строка влияет на десятки таблиц и т. Д.), То запускайте их в транзакциях небольшими партиями.
Если вам абсолютно необходимо выполнить огромный импорт данных в одной транзакции, рассмотрите возможность сделать это, когда база данных находится в однопользовательском режиме, и подумайте об использовании ключевого слова checkpoint.