Показать сообщение отдельно
Старый 21.08.2009, 12:27   #17  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,913 / 5736 (197) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Цитата:
Сообщение от egorych Посмотреть сообщение
Еще одна неприятная особенность курсоров в MS заключается в его архитектуре, как блокировочника. Т.е. если вы посылаете на сервер обычный запрос, то после прочтения результатов блокировки исчезают. Если-же вы открываете курсор, то блокировки работаю несколько иначе и задерживаются надолго!
Блокировки при использовании навигационного доступа вызваны не зловредностью системы, а тем что пользователи, в большинстве случаев, обижаются, когда они попросили у сервера выборку, побегали по ней, а в момент попытки редактирования система им выдала сообщение о том что сосед эту запись удалил. Кстати - в SQL 2005 появилась поддержка режима Read Commited Snapshot Isolation, который как раз позволяет отключить блокировку при чтении. Хотя и ценой недовольства пользователей, у которых из под носа удалили запись.
Насколько я понимаю, у вас на проекте была такая ситуация: Была высокая утилизация процессоров сервера БД. Вы сделали предположение что все это вызвано использованием курсоров. В принципе, предположение имеет право на существование. Курсоры и правду дополнительную нагрузку создают (правда, обычно, терпимую). Я, кстати, недавно сам видел как при попытке запуска WMS, смешное количество пользователей создает удивительно большую нагрузку на процессор сервера БД. Возможно - WMS и вправду, скажем, создает множество мелких запросов, что в сочетании с курсорами приводит к непропорциональной нагрузке на процессор сервера БД. Вы заменили MS SQL на Oracle. Нагрузка упала. Был сделан вывод что это из за отсутствия курсоров.
НО: Во первых это только теория. Возможно MS SQL работал медленнее из за каких-то других факторов, которые теперь, пост фактум уже не идентифицировать.
Во вторых - даже если в вашем конкретном случае выигрыш был достигнут из за отказа от использования курсоров, не факт что такой же выигрыш будет достигнут в других случаях, на других версиях Аксапты и другом наборе модулей.
В третьих - курсоры не абсолютное зло. Это просто способ предоставить пользователю больше удобств, ценой дополнительной нагрузки на сервер.
Короче говоря - не надо на курсоры в Аксапте ругаться. Они там не от дурости или ленности разработчиков используются, а просто потому что любые альтернативы с точки зрения пользователей могут еще неудобнее оказаться.

Последний раз редактировалось fed; 21.08.2009 в 12:38. Причина: орфография :)