Показать сообщение отдельно
Старый 02.04.2004, 14:15   #33  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Если коротко то так: версионность там не состояние сервера, а скорее состояние конкретной базы - то есть, для каждой бд можно включить и отключить эту функциональность.
Версии транзакций собираются в специальном хранилище, которое расположено в tempdb. Собственно, благодаря особенностям tempdb и отсутствию журналирования для хранилища версий при обслуживании и чтении копий данных, нагрузка на операции ввода/вывода обещает быть минимальной.
Насчет уровней изоляции - в режиме версинника:
* read uncommited - не поддерживается ибо не нужно;
* read commited - все запросы на чтение работают как версионные, то есть если при чтении натыкаемся на заблокированную записть, то читается предыдущая версия из tempdb; при обновлении там несколько сложнее - если пытаться обновить записи, которые изменены но не зафиксированны - то ждать пока другая транзакция вроде как нельзя - так как после изменения запись может перестать удовлетворять критериям запроса. Чтоб этого не произошло многие реализации версионников просто перечитывают запись заново. Как я понял, в Yukon реализовывать таких сложностей, и все изменения делаются так же, как и в блокировочнике. Вплоть до побочного эффекта, связанного с блокированием всей таблицы по причине отсутствия индекса.
* repeatable read - в базе с включенной поддержкой версионности все работает точно так же, как и без оной.
* snapshot - как я заметил, работает так же как и в других версионниках - транзакция получает согласованный срез данных, начиная с первого обращения к данным, и все последующие изменения ее не касаются.
* serializable - похоже на то, что по механизму этот уровень изоляции является чисто блокировочным и никакие версионные запросы, даже на чтение, здесь не поддерживаются, если конечно, не давать специальных указаний оптимизатору.

Из остальных замеченных новшеств - хранимые процедуры на net языках, возможность создания своих агрегаирующих функций, все метаданные хранятся не в системных таблицах, а доступны из view (как в Oracle), была обещана row level security, но я ее не нашел; наконец-то разделены понятия схемы и владельца объекта (опять же как в Oracle ).

p.s. Вся информация относительно беты версии и ms не гарантирует правомерность всего вышесказанного в final версии.