Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
DB2 Express-C против - MS SQL Server 2000 -???
|
|||
|---|---|---|---|
|
#18+
Victor MetelitsaПро FOR я пока нашёл бумагу здесь: http://www.cs.ubc.ca/local/reading/proceedings/cascon96/pdf/fuh.pdf Нет, это не то, это какая-то научая работа середины 90-х в которой предлагалось реализовать компиляция процедурного кода в план исполнения SQL кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2006, 21:25 |
|
||
|
DB2 Express-C против - MS SQL Server 2000 -???
|
|||
|---|---|---|---|
|
#18+
Victor Metelitsa... но вообще я против хранимых процедур на DB4; считаю, что её SQL достаточно богат, чтобы во многих случаях обходиться вообще без процедурного языка. За 10 лет я написал всего около десятка SP. Теперь возможности SQL ещё усилились, благодаря SELECT FROM UPDATE/INSERT/DELETE. Видать задачи перед нами разные стояли. К примеру, я на PL/SQL генерирую другие хранимые процедуры (на PL/SQL же), которые и выполняют действия указанные пользователем при определении workflow (уж и не знаю, как это слово по-русски). Эти процедуры пишут в плоские файлы помимо всего прочего. На "чистом" SQL это ну никак не реализовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2006, 21:30 |
|
||
|
DB2 Express-C против - MS SQL Server 2000 -???
|
|||
|---|---|---|---|
|
#18+
Но ведь я сказал, что имел в виду не эту бумагу. Я видел нечто похожее либо в статье на developerworks, либо в DB2 magazine, либо в одной из IBM-овских PDF-ок про Stinger, описанное как уже реализованное. Но не могу пока найти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2006, 21:30 |
|
||
|
DB2 Express-C против - MS SQL Server 2000 -???
|
|||
|---|---|---|---|
|
#18+
Victor MetelitsaНо ведь я сказал, что имел в виду не эту бумагу. Я видел нечто похожее либо в статье на developerworks, либо в DB2 magazine, либо в одной из IBM-овских PDF-ок про Stinger, описанное как уже реализованное. Но не могу пока найти. Понятно, я думаю, что основную идею я уловил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2006, 21:34 |
|
||
|
DB2 Express-C против - MS SQL Server 2000 -???
|
|||
|---|---|---|---|
|
#18+
здесь опять замечательно проявляются особенности стратегии IBM о Oracle - Oracle все в одном, все задачи мы решим внутрях базы - IBM дает набор специализированных инструментов для решения задач, где база тоже всего лишь инструмент. И для организации и работы с workflow есть несколько специализированных продуктов, которые само собой используют и базу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2006, 09:36 |
|
||
|
DB2 Express-C против - MS SQL Server 2000 -???
|
|||
|---|---|---|---|
|
#18+
Anton Demidov Victor MetelitsaНо ведь я сказал, что имел в виду не эту бумагу. Я видел нечто похожее либо в статье на developerworks, либо в DB2 magazine, либо в одной из IBM-овских PDF-ок про Stinger, описанное как уже реализованное. Но не могу пока найти. Понятно, я думаю, что основную идею я уловил. Найти пока не удаётся, хотя полагаю, что мне это не приснилось. Надо, наверное, подойти к вопросу по-другому: посмотреть планы и сравнить фактическую производительность. Не вижу необходимости, удобства и пользы в формировании файлов в SP. Скажем, ночную рассылку чего-либо отлично осуществит REXX-скрипт, пускаемый по расписанию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2006, 16:30 |
|
||
|
DB2 Express-C против - MS SQL Server 2000 -???
|
|||
|---|---|---|---|
|
#18+
Спасибо ggv что точно подметил разницу в стратегиях. У оракла действительно всё-в-одном. В том числе и планировщик заданий (точнее их уже два в 10g). Пока работает база - работает планировщик. ИМХО надёжнее. Я думаю, что немалую долю сыграл тот факт, что у IBM уже были свои языки программирования и до недавнего времени они не видели необходимости создавать ещё один. Опять же, мы должны были покупать эти компиляторы за дополнительные деньги. А у орала всё шло в базой в комлекте. И средства разработки на PL/SQL и куча расширений (стандартных пакетов) и средства администрирования (Enterprise Manager 10g со средствами анализа проблем и ср-вами их прогнозирования). ggv- IBM дает набор специализированных инструментов для решения задач, где база тоже всего лишь инструмент. И для организации и работы с workflow есть несколько специализированных продуктов, которые само собой используют и базу. У меня продукт, специально "заточенный" для наших нужд. "Универсальные" решения мы пробовали - медленно, хотя и работает. На самом деле у нас два продукта - один мой под Оракл (с глубокой оптимизацией), другой написан на Коболе для решений от IBM. Он ведет свою история ещё с IBM System/36 Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2006, 20:36 |
|
||
|
DB2 Express-C против - MS SQL Server 2000 -???
|
|||
|---|---|---|---|
|
#18+
ну универсальные решения ... всегда проигрывают специалищированным в чем то. У меня на предыдущей работе тоже было решение исключительно на продуктах IBM и opensource. Так когда компания продалась, то переделывали систему под оракл ровно 12 месяцев нехилый штат спецов, причем вышло с потерей качества (мы ее быстрее сделали вдвое меньшим составом) Есть и другие reference, довольно старые, тоже не из российского бизнеса, когда компания мигрирует систему с IBM (mainfarame) на оракл solaris, и вместо 6 как-то так получается 18 админов, и много других "непоняток", и затрат, и обратная миграция как результат. Это было во времена большой популярности unix. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2006, 23:20 |
|
||
|
DB2 Express-C против - MS SQL Server 2000 -???
|
|||
|---|---|---|---|
|
#18+
К сожалению, далеко не всегда технические решения принимаются компетентными людьми. Да и новый штат программистов у вас тогда небось набирали с улицы во время пика интернет бума. У нас до сих пор такие "спецы" работают, хоть их и увольняют периодически. Страшное зрелище их код. Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2006, 00:08 |
|
||
|
DB2 Express-C против - MS SQL Server 2000 -???
|
|||
|---|---|---|---|
|
#18+
Да нет, просто нашу компанию купила другая, более крупная, но стратегически ориентированная на оракла. Никто не нанимал дополнительных разработчиков. Просто приняли стратегическое решение - уйти от софта IBM, работать на софте Oracle и Cisco. Если бы согласились на разумный компромис, и заменили только базу - проблем бы столько небыло. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2006, 11:26 |
|
||
|
DB2 Express-C против - MS SQL Server 2000 -???
|
|||
|---|---|---|---|
|
#18+
ggv У меня на предыдущей работе тоже было решение исключительно на продуктах IBM и opensource. Так когда компания продалась, то переделывали систему под оракл ровно 12 месяцев нехилый штат спецов, причем вышло с потерей качества (мы ее быстрее сделали вдвое меньшим составом) да таких историй навалом, правда я восновном обратные слышал, когда ораклоиды пытались в свои системы подержку блокировочников добавить. обычно было проще нахрен все выкинуть и пепроэктировать заново, у вас ребята небойсь первые 6 месяцов охеревали зачем так извращатся, чтоб получить консистентный отчет и искали подвох. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2006, 11:38 |
|
||
|
DB2 Express-C против - MS SQL Server 2000 -???
|
|||
|---|---|---|---|
|
#18+
Yo - нет, уважаемый, пальцем в ж. С отчетами проблем никаких небыло. Да и не может. быть Вы пукнули? Надеюсь, конструктивно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2006, 11:56 |
|
||
|
DB2 Express-C против - MS SQL Server 2000 -???
|
|||
|---|---|---|---|
|
#18+
Год назад, когда я работал еще с Sybase (Ак как известно Sybase и MSSQL - типа родственники), так вот там существовало такое понятие как "расщепление хранимой процедуры". Что это такое поясняю на пальцах. Кода ХП вызывается то ей указываются параметры. Чтобы построить эффективный план запроса оптимизатор должен знать параменты каждого запроса в ХП. А хранимка как известно состоит изк кучи запросов. Поэтому оптимизатор "расщепляет" ХП на запросы чтобы сформировать для каждого правильны план исзодя из данных параметров. Но, насколько я знаю те, кто пишет на T-SQL, частенько в ХП используют запросы которые используют временные таблицы созданные внутри процедуры, а также вычисляют параметры других запросов также динамически. Т.е. получается что в процесса построения плана запроса для ХП (до начала ее выполнения) оптимизатор не может правильно оценить мощность временной табицы, и значения динамических параметров запроса. Следовательно он не может построить эффективный план. (Я предкасно помню что на T-SQL некоторые ХП - это несколько страниц кода - увы это подавляющий стиль работы на T-SQL). Т.е. по идее чтобы написать хороший код на T-SQL следует делать 1 запрос на 1 ХП. Поэтому существуют системы в которых тысячи и десятки тысяч ХП. Честно говоря мне подобный стиль работы напоминает мусорную свалку. Назначение многих ХП просто забывается. А отказаться от использования ХП - это вообще очень-очень плохо - проверка синтаксива и компиляция во внутренний код всякий раз - это требует ресурсов. Если посмотреть под такм же углом на DB2 - то после того как ХП откомпилирована - у нее уже есть план запроса. т.е. по сравнению с MSSQL где вы не увидите плана до тех пор пока не запустите процедуру в DB2 плпн уже есть - до выполнения. И он всегда один и тот же. (можно кстати, причем легко сделать так, чтобы менялся как и в MS, но я не сильно горю желанием использовать такую возможность). Т.е. добившись однажды нужного плана - вы можете отдыхать. Работа - сделана. А если кто-то будет утверждать, что в MS SQL можно добиться стабильности плана выполнения хинтами - то не верьте. Рано или поздно все равно нарветесь на проблемы. Хух... устал писАть... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2006, 12:42 |
|
||
|
DB2 Express-C против - MS SQL Server 2000 -???
|
|||
|---|---|---|---|
|
#18+
2gardenman что то вы все перемешали. конечно зуб не дам вдруг у db2 как-то по другому, но сильно сумневаюсь. у хп понятия плана нет в принципе, там нечего планаировать, там байт код который исполняет процессор, понятие плана есть у SQL запросов и действительно у временных таблиц например в оракле нет статистики на которую бы мог оперется оптимизатор, это может привести к тому, что cost based оптимизатор без статистики приймет неверное решение. на сколько мне известно в db2 тоже cost based optimizer который принимает решения во время исполнения на основе собраной статистики, а не плана который был актуальным в начале века. другое дело что у оракла и наверника у db2 есть механизмы закрепления плана, которые помогут в ситуации с временной таблицой, но это чуть другая история. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2006, 12:56 |
|
||
|
DB2 Express-C против - MS SQL Server 2000 -???
|
|||
|---|---|---|---|
|
#18+
2 Yo!! Дело ведь не только во временных таблицах, но и в динамически формируемых параметрах запросов. Типа: Код: plaintext 1. 2. 3. 4. 5. 6. 7. вот в этом примере параметр @c1 - динамически вычисляемый, и следовательно план будет построен неоптимально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2006, 13:10 |
|
||
|
DB2 Express-C против - MS SQL Server 2000 -???
|
|||
|---|---|---|---|
|
#18+
2gardenman в данном примере будет только оптимальный план (что бы там нибыло - поиск по индексу). но соглашусь что можно придумать пример где плану нужно знать каким будет @c1, но не понимаю причем тут хп, а если такой запрос прийдет напрямую от клиента то что изменится, а главное не понимаю, что db2 изобрела что-то фундоментально новое ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2006, 13:20 |
|
||
|
DB2 Express-C против - MS SQL Server 2000 -???
|
|||
|---|---|---|---|
|
#18+
Yo.!!... понятие плана есть у SQL запросов и действительно у временных таблиц например в оракле нет статистики на которую бы мог оперется оптимизатор, это может привести к тому, что cost based оптимизатор без статистики приймет неверное решение. на сколько мне известно в db2 тоже cost based optimizer который принимает решения во время исполнения на основе собраной статистики, а не плана который был актуальным в начале века. другое дело что у оракла и наверника у db2 есть механизмы закрепления плана, которые помогут в ситуации с временной таблицой, но это чуть другая история. Читаем документацию про bind peeking (гугл поможет). И у Оракла и у DB2 эта фича есть. Первый смотрит в значение bind variable только первый раз, вторая - постоянно и перестраивает план запроса, если надо (верно для AS/400 5R3). Есть способы запретить это делать, но не рекомендуется. Далее, для временных таблиц Оракла можно и иногда нужно указывать статистику. Либо хинтом (cardinality) в лоб, либо используя sampling. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2006, 22:55 |
|
||
|
DB2 Express-C против - MS SQL Server 2000 -???
|
|||
|---|---|---|---|
|
#18+
Anton Demidov Читаем документацию про bind peeking (гугл поможет). И у Оракла и у DB2 эта фича есть. Первый смотрит в значение bind variable только первый раз, вторая - постоянно и перестраивает план запроса, если надо (верно для AS/400 5R3). Есть способы запретить это делать, но не рекомендуется. Далее, для временных таблиц Оракла можно и иногда нужно указывать статистику. Либо хинтом (cardinality) в лоб, либо используя sampling. в оракле bind peeking имхо просто смотрит на переменую и подсовывает статистику оптимизатору, чтоб тому было чуток легче. gardenman же нам тут про какие-то планы ХП рассказывает, которые строятся во время компиляции (!?) ХП. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2006, 23:18 |
|
||
|
DB2 Express-C против - MS SQL Server 2000 -???
|
|||
|---|---|---|---|
|
#18+
Правильно он говорит. Во время компиляции ХП в ДБ2 строятся планы исполнения для всего SQL, что используется внутри. Другое дело, что в ДБ2 они потом почти не используются - перед исполнением оптимизатор перепроверяет валидность плана. То есть ты мог скомпилировать хранимку на пустой девелоперской базе, перенести скомпилированный модуль в продакшн и потом удивлятся, что планы уже другие (как и должно быть). У Оракла давно (в 7-й версии?) при компиляции PL/SQL кода план исполнения SQL фиксировался. Сейчас уже нет. Если ХП у Оракла внешняя - то там SQL априори динамический. Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2006, 00:14 |
|
||
|
DB2 Express-C против - MS SQL Server 2000 -???
|
|||
|---|---|---|---|
|
#18+
2 Anton Планы в DB2 строятся в момент связывания (операция BIND) в конкретной БД. И остаются постоянными пока кто-нить не грохнет какую-нить зависимость - типа почикают индекс, ну и естественно пакет станет невалидным и следующий раз при вызове пакета будет произведена попытка пересвязать пакет заново. Ну и в зависимости от результата - либо построится новый план либо облом. Но план построится - и будет постоянным. И наплевать ему меняется ли статистика или нет. Т.е. вызвав db2expln.exe и посмотрев план - вы точно знаете что в пакете именно тот план, который вы видите. А в других базах это далеко не так. Оракл не исключение. Совсем не факт если вы даже выдите что запрос сейчас исполняется так как вам надо когда вы его тестируете, то легко может наступить помент когда это будет неверно. Выгоды на самом деле в статическом SQL просто огромны, особенно в случае OLTP.ИМХО. Нелепо всякий раз пересматривать план простейшего запроса из 2-3 джойнов. Мое мнение таково - статический SQL - это полезная фича. И единственная СУБД у кого это действительно есть - это ДБ2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2006, 09:20 |
|
||
|
DB2 Express-C против - MS SQL Server 2000 -???
|
|||
|---|---|---|---|
|
#18+
Для того, чтобы каждый раз не пересматривать планы запросов, а держать в временном и постоянном кэше наиболее лучшие, но актуальные, существуют эвристические анализаторы запросов, которые работают в паре с оптимизаторами запросов и как раз отвечают за то, чтобы находить и хранить наиболее лучшие планы запросов, постоянно отслеживая, что эти планы запросов остаются наиболее эффективными на текущий момент времени. Это гораздо лучше всякого статического SQL, потому что к примеру, после массовой вставки в БД миллионов записей эвристический анализатор тут же заставит оптимизатор заново составить планы запросов и снова отобрав лучшие далее уже будет продолжать работу по ним. IMHO не бывает чистых OLTP задач - у меня в клиентских приложениях пользователь мышкой может такое условие поиска или фильтра информации составить, что при выполнении запроса через динамический SQL в нем будет ого го сотен строк (вплоть до обхвата всех таблиц БД) и чем тут статический SQL помочь может даже не представляю. Ну а для серии мелких запросов OLTP я уже говорил выше про эвристический анализатор - то же подобие статического SQL, тока автоматически контролирующегося и перестраивающегося самим сервером без какого либо вмешательства извне, в т.ч. без изменения мета-структуры, а при большом изменении к примеру статистики или резкому проседанию выполнению запросов, что вполне возможно из-за тех жеизменения доступных ресурсов сервера, что тоже кстати приведет к перестроению планов запросов (те же HASH JOIN при отсутствии нужных ресурсов придется уводить на INDEX JOIN или TABLE SCAN, то есть вообще план запросов будет другой). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2006, 09:53 |
|
||
|
DB2 Express-C против - MS SQL Server 2000 -???
|
|||
|---|---|---|---|
|
#18+
опять же, static sql (наряду с синтаксисом sql, позволяющим в одном запросе сделать то, что в других базах делается рядом запросов) одна из причин низкого использования SP в db2 пакет db2, появившийся на заре rdbms, как раз и есть "прообраз" SP. То есть он позволяет достичь почти всех преимуществ SP, кроме снижения сетевого траффика. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2006, 09:56 |
|
||
|
DB2 Express-C против - MS SQL Server 2000 -???
|
|||
|---|---|---|---|
|
#18+
этот "эвристический анализатор" называется у IBM - LEO Learning Optimizer. Почитайте, интересная вещь. Создается полным ходом. Но статический SQL никуда не денется - если у вас под него нет задач, то у других они есть. И OLTP задача никуда не денется - пусть даже и как часть системы. Тысячи типовых транзакций в секунду проводить все равно надо будет всегда, безо всяких массовых обновлений данных. Вот под эти задачи и создавался static SQL, под них же он и продолжает использоваться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2006, 10:00 |
|
||
|
DB2 Express-C против - MS SQL Server 2000 -???
|
|||
|---|---|---|---|
|
#18+
ууу как все запущено. это ж прошлый век, основное преимущество cost based оптимизатора, то что он способен реагировать на изменения в бд. наполнение таблиц происходит неравномерно, селективность индексов со временем меняется, как заметил Anton даже значения bind переменных могут влиять на план, любой современный оптимизатор всегда это учитывает. а у db2 получается что-то типа оракла 80x c rule based оптимизатором, хотя я уже практически уверен что gardenman тут, что-то путает. авторВыгоды на самом деле в статическом SQL просто огромны, особенно в случае OLTP.ИМХО. Нелепо всякий раз пересматривать план простейшего запроса из 2-3 джойнов. современные субд так делали в 80х, теперь никто так не делает, особенно в OLPT где база меняется стремительно. а парсить и пересматривать план каждый раз необязательно, план естесвенно кешируется в любой современной субд. да и еще раз вопрос, какое отношение имеет ХП к этой байте, допустим в ХП передается тот параметер @c1, с каким планом скомпилится ХП если на каждое значение @c1 нужен свой план ? о чем это gardenman ? gardenman Т.е. по идее чтобы написать хороший код на T-SQL следует делать 1 запрос на 1 ХП. Поэтому существуют системы в которых тысячи и десятки тысяч ХП. Честно говоря мне подобный стиль работы напоминает мусорную свалку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2006, 10:14 |
|
||
|
DB2 Express-C против - MS SQL Server 2000 -???
|
|||
|---|---|---|---|
|
#18+
2 Yo!! содержание таблиц, из мошность, отношение мощностей таблиц учавствующих в запросе действительно меняется постепенно. Но план запроса постепенно меняться не может. Он всегда ведь пересматривается полностью. Интересна ситуация когда запрос SELCT * FROM ... WHERE A1 LIKE="А%" в одном случае будет сканировать по диапазону индекса, а в друго выберет сканирование таблицы. Юзер надеется что в выборке все будет упорядочено по алфавиту. А результат в зависимости от параметра - разный то по алфавиту то вперемешку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2006, 11:57 |
|
||
|
|

start [/forum/topic.php?fid=35&msg=33602100&tid=1553554]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
27ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 166ms |
| total: | 258ms |

| 0 / 0 |
