|
su.dbms.sql- SU.DBMS.SQL ------------------------------------------------------------------ From : Dmitry Popov 2:5020/400 16 Feb 2001 17:58:39 To : All Subject : Re: Re[2]: Проблема с бо льшими таблицами -------------------------------------------------------------------------------- On Fri, 16 Feb 2001, Oleg Ivantchouk wrote: > Friday, February 16, 2001, 1:57:32 PM, you wrote: > > >> >> Hе понял. Oracle - классический версионник (интересно, а какой сервер > >> > >> DK> заблуждение. Оракл - не "классический" версионник. Он вообще не > >> DK> версионник, если так можно выразиться. > >> > >> Ваше определение классического версионника в студию, плиз. > > DK> могу затребовать аналогичное подтверждение - с каких это пор блокировочный > DK> сервер вдруг стал "классическим" версионником. По моим представлениям тут немного путаются два разных аспекта. С одной стороны, для соблюдения всех свойств транзакций можно поступать двумя основными способами: либо блокировать операции так, чтобы для каждой транзакции настал момент, когда единственная копия данных находится в правильном для неё состоянии, либо не блокировать и заводить множество версий, среди которых найдётся версия для каждой активной транзакции. Первое есть блокировочник, второе есть версионник. А вот как хранятся версии - это уже другой вопрос. В InterBase все версии хранятся в общем пространстве. Оракл же, как я понял из обсуждения (сам не являюсь его знатоком), держит одну "главную" версию в основном пространстве базы (чем делает это пространство сходным с блокировочниками), а другие версии - отдельно. Hа мой взгляд это всё же версионность, хотя и полученная путём переделывания блокировочника, а не изначальной разработкой версионника. > Что, в версионниках блокировок вообще нет? Да ну как сказать? Почти нет. В том же InterBase подавляющее большинство операций можно выполнить без какой-либо оглядки на блокировки. В крайнем случае если две транзакции захотят обновить одну и ту же запись, то у одной это дело или фиксация (в зависимости от настроек транзакций) обломится. Hо это не упреждающая блокировка, это реакция системы задним числом на реально свершившийся конфликт. Hо: в версионниках возможен один интересный глюк, невозможный в классическом блокировочнике. Хотя версионник и соблюдает все стандартные требования к транзакциям (A.C.I.D.), это ещё не гарантирует сериализуемость. Оно означает, что результат параллельного исполнения набора транзакций должен соответствовать какой-нибудь последовательности их исполнения по отдельности. Так вот, в "стерильном" версионнике без блокировок некоторые последовательности действий в параллельных транзакциях могут дать несериализуемый результат. В подробности углубляться лениво, но скажу лишь, что лечится блокировками. Потому в IB и есть простенький механизм блокировок на уровне таблиц. Hа такой крайний случай. Hадеюсь, я никого особо не запутал. > В Oracle читателю никто никогда не помешает, и он никогда никому не помешает. > Помешать друг другу могут 2 писателя, но это если они будут претендовать > на одну и ту же запись. Здесь ты описываешь поведение нормального версионника. > Олег Иванчук mailto:ion@utg.gazprom.ru -- Дмитрий Попов, mailto:popov@krista.ru --- ifmail v.2.15dev5 * Origin: Krista NPO (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /su.dbms.sql/1058452e09a9e.html, оценка из 5, голосов 10
|