На самом деле вы используете транзакции уже , когда используете СУБД. Однако, если вы не явно о том, когда транзакции начинаются и заканчиваются, вы неявно позволяете каждому оператору SQL запускать и завершать отдельную транзакцию. Это также называется «автоматическая фиксация».
Транзакции являются хорошим инструментом для создания логических наборов изменений с помощью нескольких операторов SQL, поэтому вы можете зафиксировать или откатить весь набор изменений как единое целое и гарантировать, что ваши изменения оставят базу данных в согласованном состоянии. Транзакции не предназначены в первую очередь для повышения производительности.
Есть небольшие накладные расходы для начала и завершения любой транзакции. Это увеличивается, если вы используете неявные транзакции для больших изменений, что приводит к накладным расходам для каждого оператора. Например, это становится значительным, если вы выполняете тысячи операторов INSERT
для выполнения массовой загрузки данных, каждый INSERT
неявно в отдельной транзакции. В других случаях выигрыш в производительности от использования транзакций по сравнению с неиспользованием транзакций является тривиальным, особенно в таком языке, как PHP, который имеет архитектуру «без участия».