![]() |
#1 |
Участник
|
курсоры... и вообще MS SQL vs Oracle
********* Выделено отсюда Регламентные процедуры. Кто использует и какие? ********
Цитата:
Сообщение от mazzy
![]() Читайте what's news
![]() В этом плане полный абзац... С Ораклом работает не через курсоры, а "человечьим" языком SQL! И даже (о боже!!!) без участия ODBC! |
|
![]() |
#2 |
Участник
|
Цитата:
OCI: да... это не ODBC ![]() |
|
![]() |
#3 |
Участник
|
1. Нет. На сервер уходит обычный "текстовый" SQL запрос, а не дебильная конструкция вида sp_createcursor(...), sp_fetchcursor ну и т.д.
2. Да, это не ODBC - это стандартный Oracle Client API, самый низкоуровневый (а значит с меньшими накладными расходами) метод доступа. Кстати MS тоже такое имеет, и причем начиная с 2005 работает по своему протоколу, ну очень шустрому! ТОлько вот использовать его видимо религия не позволяет! |
|
![]() |
#4 |
Участник
|
Цитата:
Может стоит почитать почему сделано так "дебильно"? Про кэширование, про оптимизацию и прочий дебилизм... ![]() Цитата:
Сообщение от egorych
![]() 2. Да, это не ODBC - это стандартный Oracle Client API, самый низкоуровневый (а значит с меньшими накладными расходами) метод доступа. Кстати MS тоже такое имеет, и причем начиная с 2005 работает по своему протоколу, ну очень шустрому! ТОлько вот использовать его видимо религия не позволяет!
![]() |
|
![]() |
#5 |
Участник
|
Цитата:
Покажите, где почитать, может просветление на меня сойдет ;-) Только вряд-ли там будет написано - "дети, используйте курсоры на сервере и будет вам щасте" Попробуйте на любом форуме по MSSQL показать трассировку запросов и послушайте, что вам скажут на счет разработчиков. |
|
![]() |
#6 |
Участник
|
Цитата:
![]() начните отсюда 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 Цитата:
вы случайно не Volochkova? |
|
|
За это сообщение автора поблагодарили: alex55 (1). |
![]() |
#7 |
Участник
|
Не вижу связи с Prepared execution. Все это прекрасно работает и без использования серверных курсоров, через то-же ADO
Цитата:
Сообщение от mazzy
![]() здесь? http://sql.ru/forum/actualthread.asp...d=650982&pg=10
вы случайно не Volochkova? ![]() Настройте ночной reindex - в инете полно примеров скриптов. Последний раз редактировалось egorych; 20.08.2009 в 17:55. |
|
|
За это сообщение автора поблагодарили: ena_ax (1). |
![]() |
#8 |
Moderator
|
Цитата:
Во вторых - далеко не всегда ODBC означает медленный доступ. Просто во первых часть СУБД (не буду пальцем показывать на чужие логотипы группы ![]() А в SQL Server ODBC-драйвер конечно не идеальный и от перехода на Native Client в версии 2009 Аксапта выиграла, но выигрыш был не очень существенным. То есть - если с секундомером замерять - то явно выше погрешности измерения, но с другой стороны - не настолько большой чтобы пользователям в глаза бросаться. |
|
![]() |
#9 |
Участник
|
![]()
Тут возможно меня неправильно понимают в некоторых вопросах!!!
![]() Попытаюсь объяснить свою позицию. Я отнюдь не против MSSQL, тем более я с ним довно-давно работаю (и сейчас тоже). Мне он очень нравится! С Ораклом я относительно недавно - год где-то. Поэтому я могу сравнить как они работают применительно к Аксапте. Извините, но я опять повторю - работа с MS через курсор есть АФИГЕННОЕ ЗЛО! Т.е. я считаю, что то, как разработчики работают ( ;-) ) с MS в ядре - есть в корне неверно, что ведет к большим накладным расходам и т.д. и т.п. причем режим snapshot в корне эту ситуацию не спасает! Один пример - у нас стоит для БД 4 проц. сервер, ну в общем весьма неплохой. На MS была загрузка ~50-60 % - уже думали менять. После перехода на Оракл нагрузка стала 25-40% (средняя есс-но)! Это о чем-то говорит? ИМХО очень красноречиво! Посему я считаю, что для Аксапты лучший выбор - Оракл! Решаются многие проблемы и производительности и другие. Причем, поскольку Аксапта не использует ни в MS ни в Оракл хранимки, триггеры и т.д. то администрирование Оракла сводится почти к нулю! Често! И глюки, (коих много, судя по форумам) ну никак не влияют на работу! Имеется ввиду версия 10G R2 и выше есс-но, с 9 придется шаманить что-то но не много! В общем как-то вот так в кратце! |
|
![]() |
#10 |
Moderator
|
Цитата:
Тут надо сделать некоторую интерлюдию, заметив что во времена проталкивания на рынок клиент-серверной архитектуры, отцы-основатели рассказывали что в светлом комму^H^H^H^H^H клиент-серверном будущем, с системой будут работать исключительно сферические пользователи в вакууме, которые перед каждым открытием, ну например, формы номенклатурного справочника, будут весело и радостно указывать номенклатурную группу, фильтр по коду и названию номенклатуры, в общем прилагать все усилия для того чтобы выборка не превышала пары экранов. А любые предположения о том чтобы побровситься по таблице будут вызывать у этих пользователей гневное отторжение, и они будут устраивать демонстрации у местного представительства провинившегося вендора, крича "Курсоры - геть !" и размахивая транспарантами с надписью "FORWARD_ONLY". Естественно, при столкновении с реальной жизнью всем вендорам пришлось рано или поздно обзавестись навигационным доступом (у оракла он, кстати, только в версии 9 появился). Естественно - у всех СУБД навигационный доступ обходиться дороже чем ненавигационный, но иначе пользователей не удовлетворить. В принципе, я могу согласиться с тем, что для небольших таблиц (скажем - настроек профилей разноски) можно было бы не использовать курсоры, а просто вытаскивать таблицы в кэш напрямую. Но поскольку таблицы эти и так небольшие, большого накладяка от курсорного доступа к ним нету. В общем - могу предположить, что в будущих версиях аксапты, для таблиц с fullTable cache сделают выборку без курсора (поскольку курсор там и вправду смысла не имеет). С другой стороны - есть сильнейшее подозрение что заметного выигрыша это не даст... Теперь немножко о том, что было бы если бы аксапта ПОЛНОСТЬЮ отказалась бы от использования курсоров. Я когда-то занимался развертыванием версий 2.5 и 3.0 на Оракле. Поскольку и та и другая версия должны были поддерживать Оракл 8ой версии, scrollable курсоры, появившиеся в версии 9i в них не использовались (Кстати - не знаю, используются ли они в более поздних версиях Аксапты, сам на оракле не внедрял, а спросить не у кого ![]() Ну и наконец - где-то в документации Оракла, английским по белому сказано что при использовании scrollable cursor, сервер БД сохраняет результаты выборки в области памяти, а если выборка большая, то во временной таблице. Что в общем, мало отличается от поведения серверных курсоров SQL Server. Так что избавиться от курсоров, на самом деле, можно но только 1. Для случая маленьких таблиц и нормальных пользователей. 2. Для случая любых таблиц и сферических пользователей в вакууме. ![]() P.S. Просьба модераторам дискуссию по поводу курсоров и вообще MS SQL vs Oracle вынести в новый топик. |
|
|
За это сообщение автора поблагодарили: mazzy (2), zemlyn (2), Logger (6), gl00mie (3), _scorp_ (4). |
![]() |
#11 |
Moderator
|
Цитата:
Сообщение от egorych
![]() Тут возможно меня неправильно понимают в некоторых вопросах!!!
![]() Попытаюсь объяснить свою позицию. Я отнюдь не против MSSQL, тем более я с ним довно-давно работаю (и сейчас тоже). Мне он очень нравится! С Ораклом я относительно недавно - год где-то. Поэтому я могу сравнить как они работают применительно к Аксапте. Извините, но я опять повторю - работа с MS через курсор есть АФИГЕННОЕ ЗЛО! ![]() |
|
![]() |
#12 |
MCITP
|
![]()
пока не используются, насколько я знаю...
__________________
Zhirenkov Vitaly |
|
![]() |
#13 |
MCITP
|
![]()
__________________
Zhirenkov Vitaly |
|
![]() |
#14 |
Участник
|
Еще одна неприятная особенность курсоров в MS заключается в его архитектуре, как блокировочника. Т.е. если вы посылаете на сервер обычный запрос, то после прочтения результатов блокировки исчезают. Если-же вы открываете курсор, то блокировки работаю несколько иначе и задерживаются надолго! В большинстве случаев это самое поведение и вызывает гнев админов на курсоры, в том числе и мой ;-) Не проходило и дня без того, чтобы кого-то "зарубить", а то и АОС перестартовать. А разноска журналов прибытия вообще вызывала приступы бешенства.
Возможно в 4 и 5 как-то это все разрулили, но пока мы 5 сильно не терзали. Если так, то слава аксапте! Насчет накладных расходов - ну все-таки разница в нагрузке на проц. в 30-40 % между MS и Ораклом думаю говорит не в пользу курсоров ;-) |
|
![]() |
#15 |
Участник
|
После введения ОСС как-то блокировок и не заметно почти.. Так что переходите на след. версию.
|
|
![]() |
#16 |
Участник
|
|
|
![]() |
#17 |
Moderator
|
Цитата:
Сообщение от egorych
![]() Еще одна неприятная особенность курсоров в MS заключается в его архитектуре, как блокировочника. Т.е. если вы посылаете на сервер обычный запрос, то после прочтения результатов блокировки исчезают. Если-же вы открываете курсор, то блокировки работаю несколько иначе и задерживаются надолго!
![]() Насколько я понимаю, у вас на проекте была такая ситуация: Была высокая утилизация процессоров сервера БД. Вы сделали предположение что все это вызвано использованием курсоров. В принципе, предположение имеет право на существование. Курсоры и правду дополнительную нагрузку создают (правда, обычно, терпимую). Я, кстати, недавно сам видел как при попытке запуска WMS, смешное количество пользователей создает удивительно большую нагрузку на процессор сервера БД. Возможно - WMS и вправду, скажем, создает множество мелких запросов, что в сочетании с курсорами приводит к непропорциональной нагрузке на процессор сервера БД. Вы заменили MS SQL на Oracle. Нагрузка упала. Был сделан вывод что это из за отсутствия курсоров. НО: Во первых это только теория. Возможно MS SQL работал медленнее из за каких-то других факторов, которые теперь, пост фактум уже не идентифицировать. Во вторых - даже если в вашем конкретном случае выигрыш был достигнут из за отказа от использования курсоров, не факт что такой же выигрыш будет достигнут в других случаях, на других версиях Аксапты и другом наборе модулей. В третьих - курсоры не абсолютное зло. Это просто способ предоставить пользователю больше удобств, ценой дополнительной нагрузки на сервер. Короче говоря - не надо на курсоры в Аксапте ругаться. Они там не от дурости или ленности разработчиков используются, а просто потому что любые альтернативы с точки зрения пользователей могут еще неудобнее оказаться. Последний раз редактировалось fed; 21.08.2009 в 12:38. Причина: орфография :) |
|
![]() |
#18 |
Участник
|
Цитата:
Цитата:
Цитата:
Сообщение от egorych
![]() Я отнюдь не против MSSQL, тем более я с ним довно-давно работаю (и сейчас тоже). Мне он очень нравится! С Ораклом я относительно недавно - год где-то. Поэтому я могу сравнить как они работают применительно к Аксапте.
я считаю, что для Аксапты лучший выбор - Оракл! Решаются многие проблемы и производительности и другие. Причем, поскольку Аксапта не использует ни в MS ни в Оракл хранимки, триггеры и т.д. то администрирование Оракла сводится почти к нулю! Често! И глюки, (коих много, судя по форумам) ну никак не влияют на работу! Имеется ввиду версия 10G R2 и выше есс-но, с 9 придется шаманить что-то но не много! На счет того, что администрирование сводится к нулю - это вы какие-то сказки тут рассказываете. Может, в ваших конкретных условиях администрированием никто и не занимается, и оно все само как-то при этом умудряется работать, но в общем случае Оракл более требователен к квалификации DBA. У меня перед глазами пример того, как "полтора" (один выделенный и один, занимающийся еще другими вопросами) DBA постоянно что-нить подкручивают в Оракле, пришпиливают аутлайны, приделывают какие-то индексы, которых не видно в AOT'е, периодически апгрейдят сервера (Оракл работает в кластере) и хранилище данных... Не знаю, как бы база жила на Ms SQL, но, во всяком случае, ни о каком сведении администрирования к нулю даже речи не идет. Последний раз редактировалось gl00mie; 21.08.2009 в 12:50. Причина: пунктуация |
|
|
За это сообщение автора поблагодарили: mazzy (2), fed (1). |
![]() |
#19 |
Участник
|
Цитата:
Насчет администрирования - занимаюсь конкретно я (ну + всякое еще ;-) ), но честное слово - перед переходом сделал нужные настройки, с тех пор поменял помница кол-во процессов и все. Ну слежу за запросами - появляются проблемные - допиливаю. Ну нет других проблем! Чесно! Возможно это наше частное решение, но, думаю на большинство обычных внедрений оно похоже! Да, где базы террабайтные там работы больше и следить нужно больше. Дорастем увидим! |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
![]() |
#20 |
Участник
|
Цитата:
Сообщение от gl00mie
![]() На счет того, что администрирование сводится к нулю - это вы какие-то сказки тут рассказываете. Может, в ваших конкретных условиях администрированием никто и не занимается, и оно все само как-то при этом умудряется работать, но в общем случае Оракл более требователен к квалификации DBA. У меня перед глазами пример того, как "полтора" (один выделенный и один, занимающийся еще другими вопросами) DBA постоянно что-нить подкручивают в Оракле, пришпиливают аутлайны, приделывают какие-то индексы, которых не видно в AOT'е, периодически апгрейдят сервера (Оракл работает в кластере) и хранилище данных... Не знаю, как бы база жила на Ms SQL, но, во всяком случае, ни о каком сведении администрирования к нулю даже речи не идет.
В нашем случае никто ничего "постоянно" не "подкручивает". Более того, DBA по ораклу в штате организации сейчас нет совсем - используем аутсорсинг - администрирование Оракла. Нет никаких индексов, не видимых в АОТ, это и не к чему - средства АОТ позволяют прекрасно управлять необходимыми индексами без "влезания" в сам Оракл. Последний раз "тюнинг" с Ораклом проводили год назад, когда собственно говоря, и разворачивали базу на новой версии Оракла. Тогда же и сделали настройку всех параметров производительности БД, бэкапов, автоматической периодической реиндексации и пересчета статистики. С тех пор Оракла практически никто не касался - просто нет необходимости. Все прекрасно работает. (Размер базы более 100gb, кол-во активных пользователей окало 100) Главное что хочется отметить - то что "Оракл требует постоянной работы по его поддержке и тюнинга" - миф. Ттем у кого 1,5 DBA трудятся над администрированием Оракла рекомендую отдать эту работу на аутсорсинг какой нибудь компании с грамотным DBA по Ораклу. Думаю, что они это сделают и лучше, качественнее и быстрее. Кроме того, можно существенно сэкономить на расходах по обслуживанию системы. (Представил сколько в месяц "стоит" квалифицированный DBA Оракла * 1,5) |
|
|
За это сообщение автора поблагодарили: aidsua (1). |
Теги |
oracle, курсор, производительность, sql server |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|