Я хотел бы предложить, что если вы получаете эту ошибку, то возможно, вам не следует использовать транзакцию для вашей массовой операции базы данных . Вместо этого рассмотрите возможность выполнения транзакции для каждого отдельного обновления: имеет ли смысл рассматривать весь массовый импорт как транзакцию? Возможно нет. Если это так, то да, MVCC = true или больший тайм-аут блокировки - разумное решение.
Однако я думаю, что в большинстве случаев вы видите эту ошибку, потому что пытаетесь выполнить очень длинную транзакцию - другими словами, вы не знаете, что выполняете действительно длинную транзакцию. Это, безусловно, имело место для меня, и я просто больше заботился о том, как я записывал записи (без использования транзакций или с использованием меньших транзакций), и проблема тайм-аута блокировки была решена.