Вопрос

В Firebird 2.0 использование явной транзакции быстрее для команды SELECT, чем выполнение команды с неявной?

Это было полезно?

Решение

Все команды SQL (SELECT, INSERT, UPDATE и т. д.) могут быть выполнены ТОЛЬКО в рамках какой-либо транзакции. Вы не можете запустить команду без транзакции, запущенной до нее.

Другие советы

Явная и неявная транзакция - это функция набора компонентов, который вы используете для доступа к базе данных, а не функция самого Firebird.Как упоминалось ранее, Firebird всегда делает все в рамках транзакции.Это имеет для вас несколько последствий:

  • Использование "Неявной" транзакции не может быть быстрее, чем использование "Явной" транзакции, потому что с точки зрения Firebird транзакция есть транзакция, не имеет значения, кто ее запустил.
  • Для достижения наилучшей производительности иногда требуется точный контроль над "фиксациями".Хотя "Неявная" транзакция не может быть быстрее, чем "Явная" транзакция, явная может быть быстрее, потому что вы можете контролировать свои StartTransactions и фиксации.Хотя обычно вы хотите выполнять все обновления базы данных в рамках одной транзакции (чтобы все они выполнялись успешно или завершались неудачей как набор), иногда требуется разделить операции на несколько групп:Если вам нужно массово вставлять много-много записей, вы, вероятно, захотите фиксировать по одной записи каждые 1000 записей или около того.

Firebird не может выполнять команды SQL без транзакции.

PS. Вы получаете лучшие результаты производительности, если совершаете транзакции, а не откатываете их назад. Даже если вы только вызвали SELECT и ничего не изменили.

Помимо того, что уже было сказано, примите во внимание, что транзакция может быть:

  • Чтение-Запись
  • Доступно только для чтения

Для ВЫБОРА было бы лучше использовать транзакцию только для чтения

PS:Существуют и другие типы транзакций, но эти два являются наиболее важными для данной темы.

Обычно транзакция добавляет некоторые накладные расходы. Однако следует соблюдать осторожность, если у вас не запущена транзакция по умолчанию при подключении к Firebird.

По моему опыту, неявные транзакции имеют тенденцию к автоматическому сохранению фиксации, поэтому они должны быть медленнее. Вы всегда можете изменить поведение по умолчанию.

Но я бы порекомендовал использовать явные транзакции, так как сохранение фиксации может вызвать дальнейшее горе, если оно блокирует слишком много транзакций. Если это произойдет, то доступ к Firebird может значительно замедлиться, поскольку он проходит через все задержанные / заблокированные транзакции, чтобы определить правильное значение данных.

Вот некоторые обсуждения этого вопроса

http: //forums.devshed. ком / Жар-SQL-разработка-61 / разностная активная транзакция 863103.html

http://www.slideshare.net/ibsurgeon/3-how-transactionswork

scroll top