Показать сообщение отдельно
Старый 12.07.2004, 10:35   #11  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
Я так понимаю, что это принципиальный подход к Аксапте? Чем же обусловлен такой однозначный выбор?
Хм... Concurrency control и сопутствующие ему блокировки - задача сервера СУБД, а ни как не его клиента.
Другое дело, что в Oracle и MS SQL очень по-разному решены эти задачи.
Так например в MS SQL есть Lock Manager, который отвечает за все блокировки. При каждом обращении к БД lock manager выдает информацию - свободен ли ресурс. Поэтому в MS SQL блокировки - дорогостоящий ресурс. Поэтому в MS SQL и существует такая вещь, как эскалация блокировок.
В Oracle информация о блокировке хранится в самом блоке данных, точнее в его заголовке и никаких дополнительных ресурсов на это хранение не тратится, что позволяет более "расточительно относиться к блокируемым ресурсам". И именно поэтому в Oracle нет надобности в эскалации блокировок.
Если вспомнить про версионность Oracle - то разница в подходах станет еще более значительной.

Теперь про Аксапту - как я понимаю, с целью обеспечить работу приложения как на одной так и на другой СУБД, разработчики вынуждены отказываться от использования специфичных фич той или иной платформы.

То есть, если по классике (читаем Кайта) для Оракла длинные транзакции не есть плохо и решение об длительности транзакции разработчик принимает только на основании того, сколько нужно для лочной функциональности, то в MS SQL длительные транзакции могут обернуться большими проблемами.