Yaroslav Schekin
Транзакции существуют для того, чтобы обеспечить ACID, а не для "преодоления" каких-то (особенно, придуманных) ограничений по производительности. ;)
Т.е. если "2 миллиона вставок" является одной бизнес-транзакцией — место им всем в транзакции, а если нет — то, в общем случае, чем короче (меньше действий выполняется) транзакция, тем лучше.
Насчёт "общего случая" — если как по одной, так и по 2 миллиона записей в транзакции вставлять правильно, то можно выбирать любое количество на транзакцию.
В этом плане, каждый commit требует fsync, а их "железо" может выдавать не так много (это зависит в основном от дисков), т.е. может быть смысл укрупнять транзакции.
> там было ограничение на 60 вставок в секунду
Не было. А если на том "железе", где у sqlite было, Вы поставили PostgreSQL, и у него TPS больше (особенно, если существенно больше) — у меня для Вас [возможно] плохие новости — где-то в I/O stack (начиная от PostgreSQL и заканчивая дисками) не выполняются гарантии fsync. Т.е. если что случится — Ваш кластер баз postgres запросто станет corrupted, что невесело, даже если есть backup. ;(
Спасибо за развёрнутый ответ, то есть если логически транзакции вырисовываются, то лучше их и делать, я правильно понял?