AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Администрирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 20.08.2009, 15:44   #1  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от egorych Посмотреть сообщение
1. Нет. На сервер уходит обычный "текстовый" SQL запрос, а не дебильная конструкция вида sp_createcursor(...), sp_fetchcursor ну и т.д.
И оракл компилит каждый раз этот текстовый запрос, бедняжка...
Может стоит почитать почему сделано так "дебильно"? Про кэширование, про оптимизацию и прочий дебилизм...

Цитата:
Сообщение от egorych Посмотреть сообщение
2. Да, это не ODBC - это стандартный Oracle Client API, самый низкоуровневый (а значит с меньшими накладными расходами) метод доступа. Кстати MS тоже такое имеет, и причем начиная с 2005 работает по своему протоколу, ну очень шустрому! ТОлько вот использовать его видимо религия не позволяет!
__________________
полезное на axForum, github, vk, coub.
Старый 20.08.2009, 15:53   #2  
egorych is offline
egorych
Участник
Самостоятельные клиенты AX
Oracle
 
761 / 154 (7) ++++++
Регистрация: 09.11.2006
Адрес: Краснодарский край
Цитата:
Сообщение от mazzy Посмотреть сообщение
И оракл компилит каждый раз этот текстовый запрос, бедняжка...
Может стоит почитать почему сделано так "дебильно"? Про кэширование, про оптимизацию и прочий дебилизм...
С какого перепуга он компилить будет? Вполне нормально используется кэш запросов и планов!
Покажите, где почитать, может просветление на меня сойдет ;-) Только вряд-ли там будет написано - "дети, используйте курсоры на сервере и будет вам щасте"
Попробуйте на любом форуме по MSSQL показать трассировку запросов и послушайте, что вам скажут на счет разработчиков.
Старый 20.08.2009, 16:04   #3  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от egorych Посмотреть сообщение
С какого перепуга он компилить будет? Вполне нормально используется кэш запросов и планов!
Покажите, где почитать, может просветление на меня сойдет ;-)

начните отсюда http://axapta.mazzy.ru/lib/literals_vs_placeholders/
далее http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx
далее везде http://social.msdn.microsoft.com/Sea...execution&ac=8

Цитата:
Сообщение от egorych Посмотреть сообщение
Попробуйте на любом форуме по MSSQL показать трассировку запросов и послушайте, что вам скажут на счет разработчиков.
здесь? http://sql.ru/forum/actualthread.asp...d=650982&pg=10
вы случайно не Volochkova?
__________________
полезное на axForum, github, vk, coub.
За это сообщение автора поблагодарили: alex55 (1).
Старый 20.08.2009, 17:53   #4  
egorych is offline
egorych
Участник
Самостоятельные клиенты AX
Oracle
 
761 / 154 (7) ++++++
Регистрация: 09.11.2006
Адрес: Краснодарский край
Цитата:
Сообщение от mazzy Посмотреть сообщение

начните отсюда...
Не вижу связи с Prepared execution. Все это прекрасно работает и без использования серверных курсоров, через то-же ADO

Цитата:
Сообщение от mazzy Посмотреть сообщение
здесь? http://sql.ru/forum/actualthread.asp...d=650982&pg=10
вы случайно не Volochkova?
Не, это не я!
Цитата:
Сообщение от ena_ax Посмотреть сообщение
Я спрашивал скорее про администрирование, а не про разработку.
Настройте ночной reindex - в инете полно примеров скриптов.

Последний раз редактировалось egorych; 20.08.2009 в 17:55.
За это сообщение автора поблагодарили: ena_ax (1).
Старый 21.08.2009, 10:17   #5  
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 Посмотреть сообщение
Только вряд-ли там будет написано - "дети, используйте курсоры на сервере и будет вам щасте"
Попробуйте на любом форуме по MSSQL показать трассировку запросов и послушайте, что вам скажут на счет разработчиков.
Когда-то давно, когда я только начинал Аксаптой заниматься, SQLные админы фыркали, мол "Эта ваша аксапта курсорами пользуется". У меня, надо сказать, это фырканье вызывало некоторое недоумение и вот почему: Моим первым SQL-базой данных был Informix, после этого я с Oracle работал и достаточно мало с MS SQL. А в Informix, курсор был просто некой внутренней переменной (на самом деле структурой сишной), которая в прикладной программе использовалась для доступа к результатам выборки. Ну то есть - кроме как через курсор до результатов выборки никак не добраться. При этом где-то в документации говорилось, что мол скорее всего под курсор будет создана временная таблица на сервере, но если запрос простенький (типа select * from table where indexField=константа) или курсор не навигационный (fast forward), то сервер постарается временную таблицу не создавать. И я сначала просто не понимал о чем эти сиквельные админы говорят. Потом выяснилось что в MS SQL есть, грубо говоря, два метода доступа к данным. В первом из них (без использования курсоров) на сервер просто отправляется запрос, и потом клиент должен прочитать выборку сверху-вниз (естественно можно прервать процесс и не читать выборку до конца). Во втором из них (как раз с курсорами) - сервер создает временную таблицу, в которую результаты запроса и складываются. В этом случае - возможно применение навигационных операций к результатам запроса, ценой большей нагрузки на сервер.
Тут надо сделать некоторую интерлюдию, заметив что во времена проталкивания на рынок клиент-серверной архитектуры, отцы-основатели рассказывали что в светлом комму^H^H^H^H^H клиент-серверном будущем, с системой будут работать исключительно сферические пользователи в вакууме, которые перед каждым открытием, ну например, формы номенклатурного справочника, будут весело и радостно указывать номенклатурную группу, фильтр по коду и названию номенклатуры, в общем прилагать все усилия для того чтобы выборка не превышала пары экранов. А любые предположения о том чтобы побровситься по таблице будут вызывать у этих пользователей гневное отторжение, и они будут устраивать демонстрации у местного представительства провинившегося вендора, крича "Курсоры - геть !" и размахивая транспарантами с надписью "FORWARD_ONLY".
Естественно, при столкновении с реальной жизнью всем вендорам пришлось рано или поздно обзавестись навигационным доступом (у оракла он, кстати, только в версии 9 появился). Естественно - у всех СУБД навигационный доступ обходиться дороже чем ненавигационный, но иначе пользователей не удовлетворить.
В принципе, я могу согласиться с тем, что для небольших таблиц (скажем - настроек профилей разноски) можно было бы не использовать курсоры, а просто вытаскивать таблицы в кэш напрямую. Но поскольку таблицы эти и так небольшие, большого накладяка от курсорного доступа к ним нету. В общем - могу предположить, что в будущих версиях аксапты, для таблиц с fullTable cache сделают выборку без курсора (поскольку курсор там и вправду смысла не имеет). С другой стороны - есть сильнейшее подозрение что заметного выигрыша это не даст...

Теперь немножко о том, что было бы если бы аксапта ПОЛНОСТЬЮ отказалась бы от использования курсоров. Я когда-то занимался развертыванием версий 2.5 и 3.0 на Оракле. Поскольку и та и другая версия должны были поддерживать Оракл 8ой версии, scrollable курсоры, появившиеся в версии 9i в них не использовались (Кстати - не знаю, используются ли они в более поздних версиях Аксапты, сам на оракле не внедрял, а спросить не у кого ). Последствия применения чистого ненавигационного доступа в этих версиях аксапты на оракле можно было простейшим экспериментом. Надо было открыть какую-нить достаточно большую таблицу (ну скажем inventTable), нажать на кнопку PgDn и подержать достаточно долго, чтобы система отлистала страничек 30-40. Далее надо было нажать кнопочку PgUp и попытаться отскроллиться назад на начало таблицы. При этом возникал любопытный эффект: Странички на 3-4-5 назад можно было отскроллиться быстро, после чего система впадала в спячку секунд на 10, снова быстро скроллила 3-4-5 страничек назад и тд. Происходило при этом следующее: Система доставала из буфера несколько страничек, потом буфер кончался. Ну а поскольку оракл в те времена не поддерживал навигационного доступа, аксапта просто переоткрывала запрос с ноля и фетчила те 25 страниц, которые отделяли ее от нужной записи таблицы. Хотя, конечно, пользователи на этот эффект натыкались не очень часто, но время от времени, случались жалобы на тему того что система вдруг заткнулась на 10-15 секунд.
Ну и наконец - где-то в документации Оракла, английским по белому сказано что при использовании scrollable cursor, сервер БД сохраняет результаты выборки в области памяти, а если выборка большая, то во временной таблице. Что в общем, мало отличается от поведения серверных курсоров SQL Server.

Так что избавиться от курсоров, на самом деле, можно но только
1. Для случая маленьких таблиц и нормальных пользователей.
2. Для случая любых таблиц и сферических пользователей в вакууме.

P.S. Просьба модераторам дискуссию по поводу курсоров и вообще MS SQL vs Oracle вынести в новый топик.
За это сообщение автора поблагодарили: mazzy (2), zemlyn (2), Logger (6), gl00mie (3), _scorp_ (4).
Теги
oracle, курсор, производительность, sql server

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Нужен совет: Oracle или MS SQL vshor DAX: База знаний и проекты 51 17.03.2010 16:58
msdynamicsax: DAX 2009 and MS SQL 2008 Blog bot DAX Blogs 0 09.08.2008 14:05
Соответствие типов X++ и MS SQL/Oracle Morpheus DAX: Программирование 25 08.04.2008 14:25
Data migration AX 3.0 SP3 Oracle 9.1 -> AX 4.0 SP2 SQL 2005 dacom DAX: Администрирование 12 30.11.2007 11:25
переход существующего приложения c MS SQL на ORACLE velk DAX: Администрирование 22 27.07.2006 10:30
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 15:45.