Вы должны выполнять COMMIT каждый раз, когда выполняете логическое изменение.
Одна из причин транзакции состоит в том, чтобы запретить отображение незафиксированных данных транзакции извне. Это важно, потому что иногда одно логическое изменение может переводиться в несколько операторов INSERT или UPDATE. Если один из последних запросов транзакции завершится неудачно, транзакция может быть отменена с помощью ROLLBACK, и никакие изменения не регистрируются.
Вообще говоря, никакие изменения, выполненные в транзакции, не регистрируются в базе данных до тех пор, пока не завершится COMMIT.
не сильно ли это замедляет мой код? - захарпопов
Частые коммиты, может замедлить ваш код, и в качестве оптимизации вы можете попробовать сгруппировать несколько логических изменений в одну транзакцию. Но это отклонение от правильного использования транзакций, и вы должны делать это только после измерения, что это значительно повышает производительность.