Кто-нибудь знает о недостатках MARS (Multiple Active Result Sets)? Кто-нибудь знает причину, по которой следует избегать использования MARS, например, случаи, когда курсоры более полезны, чем MARS.
источник
Кто-нибудь знает о недостатках MARS (Multiple Active Result Sets)? Кто-нибудь знает причину, по которой следует избегать использования MARS, например, случаи, когда курсоры более полезны, чем MARS.
Очевидно, есть по крайней мере два известных (потенциальных) недостатка (из этого (1) блога команды ):
Очевидно, что это может вызвать потенциальные проблемы для любых устаревших систем, которые не были разработаны для работы с конструкцией с поддержкой MARS - «существующий код, оптимизированный для работы в мире, не относящемся к MARS, может показывать небольшое снижение производительности при запуске без изменений с MARS»
«С помощью MARS вы можете отправлять на сервер несколько пакетов с несколькими операторами. Сервер будет чередовать выполнение таких пакетов, что означает, что если пакеты изменяют состояние сервера с помощью операторов SET или USE, например, или используют операторы управления транзакциями TSQL (BEGIN TRAN, COMMIT, ROLLBACK), и вы, и сервер можете запутаться. о том, каковы ваши истинные намерения ".
Мне еще предстоит опробовать дизайн с поддержкой MARS, но я очень близок к тому, чтобы сделать это в моем текущем проекте. У нас есть небольшая проблема с конкурирующими (а иногда и зависимыми) операциями запросов (например, с отложенной загрузкой данных конфигурации из той же базы данных, которую выполняет активный набор записей).
Дополнительная информация на сайте MSDN (2) здесь.
[(1) http://blogs.msdn.com/sqlnativeclient/archive/2006/09/27/774290.aspx ]
[(2)http://msdn.microsoft.com/en-us/library/ms131686.aspx ]
источник
в зависимости от чего? реальных минусов нет.
они не поддерживают точки сохранения транзакций. но я не считаю это недостатком.
источник