Сравнение Borland InterBase 4.x, Sybase SQL Server и Microsoft SQL Server - Механизмы блокировок. InterBase

ОГЛАВЛЕНИЕ

2.3. InterBase

2.3.1. Архитектура Многоверсионности Записей

InterBase обеспечивает оптимистические блокировки при помощи Архитектуры Многоверсионности Записей (Multi-Generational Architecture- [MGA]). Этот механизм создает оптимизированные версии для новых, удаленных или обновляемых записей, которые видны только в контексте конкретной транзакции, изменяющей данные. Реально, InterBase версионирует только изменяемые столбцы (поля) путем создания deltas. Это обеспечивает максимальную производительность и минимальные требования к дисковому пространству.

Состояние "невидимости" версионированных записей длится только в течение транзакции. После подтверждения (committing) транзакции, измененные записи становятся видимы транзакциям, стартовавшим до завершения этой транзакции (Д.К. - только если эти транзакции ReadCommitted или стартовали после завершения транзакции, менявшей данные. Для транзакций RepeatableRead, стартовавших до завершения такой транзакции, изменения  записей не видны). Вообще, все другие транзакции имеют свое собственное представление изменяемых записей, пока они (транзакции) не закончатся подтверждением или отменой. Как только транзакции, читавшие или обновлявшие записи, завершились, InterBase освобождает старые версии записей. Когда две транзакции пытаются обновить одну и ту-же запись, транзакция, первой сделавшая обновление является "владельцем", и вторая транзакция получит сообщение об ошибке. Разработчики приложений как для SQL Server так и для InterBase одинаково могут управлять такими ситуациями. В любом случае, приложение для  SQL Server должно сначала перечитать запись чтобы убедиться что она не изменена. В зависимости от средств разработки приложений, разработчику, использующему SQL Server, может потребоваться написать дополнительный код для такой операции. Вместо того, чтобы писать код обработки страничных, индексных и табличных блокировок, разработчик при использовании InterBase должен обрабатывать только конфликты обновления с другими транзакциями. Это означает значительно меньшие затраты при разработке и сопровождении для корпораций, использующих InterBase.
(Д.К.- на самом деле механизм многоверсионности значительно сложнее. Например, блокировки в терминах MS SQL, Sybase, Oracle даже на уровне записей в InterBase отсутствуют. 

2.4. Производительность

Результаты тестов на производительность в основном зависят от механизмов блокировок, используемых в тестируемой СУБД. Страничные и табличные блокировки SQL серверов Microsoft и Sybase могут сильно влиять на производительность, когда многим пользователям требуется доступ к одним и тем-же данным (или находящимся на близлежащих страницах). Например, в реальных ситуациях, страничные блокировки в SQL Server могут замедлять доступ к данным (ожидание освобождения блокировок страниц, индексов или таблиц). Этот эффект может быть заметен в системах с большим объемом данных или когда пользователи выполняют создание длительных отчетов по данным в тот момент, когда другие пользователи модифицируют данные. Архитектура Многоверсионности Записей InterBase гарантирует доступность данных на чтение для любых пользователей и в любое время. Клиентское приложение никогда не ждет доступности таблиц, записей или индексов, независимо от числа пользователей в системе или длительности и сложности какой-либо транзакции. Разработчики, использующие InterBase, автоматически получают максимум производительности приложений, безотносительно сложности обработки данных.