В Firebird 2.0 быстрее использует явную транзакцию для команды SELECT, чем для выполнения команды с неявной?
Все команды SQL (SELECT, INSERT, UPDATE и т. Д.) Могут быть выполнены ТОЛЬКО в рамках какой-либо транзакции. Вы не можете запустить команду без транзакции, запущенной до нее.
Явные и неявные транзакции - это функция набора компонентов, которую вы используете для доступа к базе данных, а не функция самого Firebird. Как упоминалось ранее, Firebird всегда делает все внутри транзакции. Это имеет несколько последствий для вас:
Кроме того, что уже было сказано, учтите, что транзакция может быть:
Для SELECT лучше всего использовать транзакцию только для чтения.
PS: существуют другие типы транзакций, но эти два являются важными для этой темы.
Firebird не может выполнять команды SQL без транзакции.
PS: Вы получаете лучшие результаты производительности, если совершаете транзакции, а не откатываете их назад. Даже если вы только позвонили в SELECT и ничего не изменили.
По моему опыту неявные транзакции имеют тенденцию к автоматическому сохранению фиксации, поэтому они должны быть медленнее. Вы всегда можете изменить поведение по умолчанию.
Но я бы порекомендовал использовать явные транзакции, так как сохранение фиксации может вызвать дальнейшее горе, если оно блокирует слишком много транзакций. Если это произойдет, то доступ к Firebird может значительно замедлиться, поскольку он проходит через все задержанные / заблокированные транзакции, чтобы определить правильное значение данных.
Вот некоторые обсуждения этого вопроса
http://forums.devshed.com/firebird-sql-development-61/difference-active-transaction-863103.html
http://www.slideshare.net/ibsurgeon/3-how-transactionswork
Обычно транзакция добавляет некоторые накладные расходы. Однако следует соблюдать осторожность, если у вас не запущена транзакция по умолчанию при подключении к Firebird.