Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 4 [5] 6 7 8   вперед  Ctrl      все
 Re: DB2 Express-C против - MS SQL Server 2000 -???  [new]
Anton Demidov
Member

Откуда: Atlanta, GA
Сообщений: 1187
Victor Metelitsa
Про FOR я пока нашёл бумагу здесь: http://www.cs.ubc.ca/local/reading/proceedings/cascon96/pdf/fuh.pdf

Нет, это не то, это какая-то научая работа середины 90-х в которой предлагалось реализовать компиляция процедурного кода в план исполнения SQL кода.
13 мар 06, 21:25    [2444060]     Ответить | Цитировать Сообщить модератору
 Re: DB2 Express-C против - MS SQL Server 2000 -???  [new]
Anton Demidov
Member

Откуда: Atlanta, GA
Сообщений: 1187
Victor Metelitsa
... но вообще я против хранимых процедур на DB4; считаю, что её SQL достаточно богат, чтобы во многих случаях обходиться вообще без процедурного языка. За 10 лет я написал всего около десятка SP. Теперь возможности SQL ещё усилились, благодаря SELECT FROM UPDATE/INSERT/DELETE.

Видать задачи перед нами разные стояли.
К примеру, я на PL/SQL генерирую другие хранимые процедуры (на PL/SQL же), которые и выполняют действия указанные пользователем при определении workflow (уж и не знаю, как это слово по-русски). Эти процедуры пишут в плоские файлы помимо всего прочего. На "чистом" SQL это ну никак не реализовать.
13 мар 06, 21:30    [2444063]     Ответить | Цитировать Сообщить модератору
 Re: DB2 Express-C против - MS SQL Server 2000 -???  [new]
Victor Metelitsa
Member

Откуда: Тюмень
Сообщений: 2559
Но ведь я сказал, что имел в виду не эту бумагу. Я видел нечто похожее либо в статье на developerworks, либо в DB2 magazine, либо в одной из IBM-овских PDF-ок про Stinger, описанное как уже реализованное. Но не могу пока найти.
13 мар 06, 21:30    [2444066]     Ответить | Цитировать Сообщить модератору
 Re: DB2 Express-C против - MS SQL Server 2000 -???  [new]
Anton Demidov
Member

Откуда: Atlanta, GA
Сообщений: 1187
Victor Metelitsa
Но ведь я сказал, что имел в виду не эту бумагу. Я видел нечто похожее либо в статье на developerworks, либо в DB2 magazine, либо в одной из IBM-овских PDF-ок про Stinger, описанное как уже реализованное. Но не могу пока найти.

Понятно, я думаю, что основную идею я уловил.
13 мар 06, 21:34    [2444072]     Ответить | Цитировать Сообщить модератору
 Re: DB2 Express-C против - MS SQL Server 2000 -???  [new]
ggv
Member

Откуда:
Сообщений: 1810
здесь опять замечательно проявляются особенности стратегии IBM о Oracle
- Oracle все в одном, все задачи мы решим внутрях базы
- IBM дает набор специализированных инструментов для решения задач, где база тоже всего лишь инструмент. И для организации и работы с workflow есть несколько специализированных продуктов, которые само собой используют и базу.
14 мар 06, 09:36    [2444798]     Ответить | Цитировать Сообщить модератору
 Re: DB2 Express-C против - MS SQL Server 2000 -???  [new]
Victor Metelitsa
Member

Откуда: Тюмень
Сообщений: 2559
Anton Demidov
Victor Metelitsa
Но ведь я сказал, что имел в виду не эту бумагу. Я видел нечто похожее либо в статье на developerworks, либо в DB2 magazine, либо в одной из IBM-овских PDF-ок про Stinger, описанное как уже реализованное. Но не могу пока найти.

Понятно, я думаю, что основную идею я уловил.


Найти пока не удаётся, хотя полагаю, что мне это не приснилось. Надо, наверное, подойти к вопросу по-другому: посмотреть планы и сравнить фактическую производительность.

Не вижу необходимости, удобства и пользы в формировании файлов в SP. Скажем, ночную рассылку чего-либо отлично осуществит REXX-скрипт, пускаемый по расписанию.
14 мар 06, 16:30    [2447137]     Ответить | Цитировать Сообщить модератору
 Re: DB2 Express-C против - MS SQL Server 2000 -???  [new]
Anton Demidov
Member

Откуда: Atlanta, GA
Сообщений: 1187
Спасибо ggv что точно подметил разницу в стратегиях. У оракла действительно всё-в-одном. В том числе и планировщик заданий (точнее их уже два в 10g). Пока работает база - работает планировщик. ИМХО надёжнее.

Я думаю, что немалую долю сыграл тот факт, что у IBM уже были свои языки программирования и до недавнего времени они не видели необходимости создавать ещё один. Опять же, мы должны были покупать эти компиляторы за дополнительные деньги. А у орала всё шло в базой в комлекте. И средства разработки на PL/SQL и куча расширений (стандартных пакетов) и средства администрирования (Enterprise Manager 10g со средствами анализа проблем и ср-вами их прогнозирования).
ggv
- IBM дает набор специализированных инструментов для решения задач, где база тоже всего лишь инструмент. И для организации и работы с workflow есть несколько специализированных продуктов, которые само собой используют и базу.

У меня продукт, специально "заточенный" для наших нужд. "Универсальные" решения мы пробовали - медленно, хотя и работает.
На самом деле у нас два продукта - один мой под Оракл (с глубокой оптимизацией), другой написан на Коболе для решений от IBM. Он ведет свою история ещё с IBM System/36

--
Антон
Per rectum ad astrum
14 мар 06, 20:36    [2448230]     Ответить | Цитировать Сообщить модератору
 Re: DB2 Express-C против - MS SQL Server 2000 -???  [new]
ggv
Member

Откуда:
Сообщений: 1810
ну универсальные решения ... всегда проигрывают специалищированным в чем то.
У меня на предыдущей работе тоже было решение исключительно на продуктах IBM и opensource.
Так когда компания продалась, то переделывали систему под оракл ровно 12 месяцев нехилый штат спецов, причем вышло с потерей качества (мы ее быстрее сделали вдвое меньшим составом)
Есть и другие reference, довольно старые, тоже не из российского бизнеса, когда компания мигрирует систему с IBM (mainfarame) на оракл solaris, и вместо 6 как-то так получается 18 админов, и много других "непоняток", и затрат, и обратная миграция как результат. Это было во времена большой популярности unix.
14 мар 06, 23:20    [2448622]     Ответить | Цитировать Сообщить модератору
 Re: DB2 Express-C против - MS SQL Server 2000 -???  [new]
Anton Demidov
Member

Откуда: Atlanta, GA
Сообщений: 1187
К сожалению, далеко не всегда технические решения принимаются компетентными людьми. Да и новый штат программистов у вас тогда небось набирали с улицы во время пика интернет бума. У нас до сих пор такие "спецы" работают, хоть их и увольняют периодически. Страшное зрелище их код.

--
Антон
Per rectum ad astrum
15 мар 06, 00:08    [2448686]     Ответить | Цитировать Сообщить модератору
 Re: DB2 Express-C против - MS SQL Server 2000 -???  [new]
ggv
Member

Откуда:
Сообщений: 1810
Да нет, просто нашу компанию купила другая, более крупная, но стратегически ориентированная на оракла.
Никто не нанимал дополнительных разработчиков.
Просто приняли стратегическое решение - уйти от софта IBM, работать на софте Oracle и Cisco. Если бы согласились на разумный компромис, и заменили только базу - проблем бы столько небыло.
15 мар 06, 11:26    [2449796]     Ответить | Цитировать Сообщить модератору
 Re: DB2 Express-C против - MS SQL Server 2000 -???  [new]
Yo.!!
Guest
ggv

У меня на предыдущей работе тоже было решение исключительно на продуктах IBM и opensource.
Так когда компания продалась, то переделывали систему под оракл ровно 12 месяцев нехилый штат спецов, причем вышло с потерей качества (мы ее быстрее сделали вдвое меньшим составом)

да таких историй навалом, правда я восновном обратные слышал, когда ораклоиды пытались в свои системы подержку блокировочников добавить. обычно было проще нахрен все выкинуть и пепроэктировать заново, у вас ребята небойсь первые 6 месяцов охеревали зачем так извращатся, чтоб получить консистентный отчет и искали подвох.
15 мар 06, 11:38    [2449893]     Ответить | Цитировать Сообщить модератору
 Re: DB2 Express-C против - MS SQL Server 2000 -???  [new]
ggv
Member

Откуда:
Сообщений: 1810
Yo - нет, уважаемый, пальцем в ж.
С отчетами проблем никаких небыло. Да и не может. быть
Вы пукнули?
Надеюсь, конструктивно.
15 мар 06, 11:56    [2450075]     Ответить | Цитировать Сообщить модератору
 Re: DB2 Express-C против - MS SQL Server 2000 -???  [new]
gardenman
Member

Откуда: С-Петербург
Сообщений: 2347
Год назад, когда я работал еще с Sybase (Ак как известно Sybase и MSSQL - типа родственники), так вот там существовало такое понятие как "расщепление хранимой процедуры". Что это такое поясняю на пальцах. Кода ХП вызывается то ей указываются параметры. Чтобы построить эффективный план запроса оптимизатор должен знать параменты каждого запроса в ХП. А хранимка как известно состоит изк кучи запросов. Поэтому оптимизатор "расщепляет" ХП на запросы чтобы сформировать для каждого правильны план исзодя из данных параметров. Но, насколько я знаю те, кто пишет на T-SQL, частенько в ХП используют запросы которые используют временные таблицы созданные внутри процедуры, а также вычисляют параметры других запросов также динамически. Т.е. получается что в процесса построения плана запроса для ХП (до начала ее выполнения) оптимизатор не может правильно оценить мощность временной табицы, и значения динамических параметров запроса. Следовательно он не может построить эффективный план. (Я предкасно помню что на T-SQL некоторые ХП - это несколько страниц кода - увы это подавляющий стиль работы на T-SQL). Т.е. по идее чтобы написать хороший код на T-SQL следует делать 1 запрос на 1 ХП. Поэтому существуют системы в которых тысячи и десятки тысяч ХП. Честно говоря мне подобный стиль работы напоминает мусорную свалку. Назначение многих ХП просто забывается. А отказаться от использования ХП - это вообще очень-очень плохо - проверка синтаксива и компиляция во внутренний код всякий раз - это требует ресурсов.

Если посмотреть под такм же углом на DB2 - то после того как ХП откомпилирована - у нее уже есть план запроса. т.е. по сравнению с MSSQL где вы не увидите плана до тех пор пока не запустите процедуру в DB2 плпн уже есть - до выполнения. И он всегда один и тот же. (можно кстати, причем легко сделать так, чтобы менялся как и в MS, но я не сильно горю желанием использовать такую возможность). Т.е. добившись однажды нужного плана - вы можете отдыхать. Работа - сделана. А если кто-то будет утверждать, что в MS SQL можно добиться стабильности плана выполнения хинтами - то не верьте. Рано или поздно все равно нарветесь на проблемы.

Хух... устал писАть...
15 мар 06, 12:42    [2450421]     Ответить | Цитировать Сообщить модератору
 Re: DB2 Express-C против - MS SQL Server 2000 -???  [new]
Yo.!!
Guest
2gardenman

что то вы все перемешали. конечно зуб не дам вдруг у db2 как-то по другому, но сильно сумневаюсь. у хп понятия плана нет в принципе, там нечего планаировать, там байт код который исполняет процессор, понятие плана есть у SQL запросов и действительно у временных таблиц например в оракле нет статистики на которую бы мог оперется оптимизатор, это может привести к тому, что cost based оптимизатор без статистики приймет неверное решение. на сколько мне известно в db2 тоже cost based optimizer который принимает решения во время исполнения на основе собраной статистики, а не плана который был актуальным в начале века.
другое дело что у оракла и наверника у db2 есть механизмы закрепления плана, которые помогут в ситуации с временной таблицой, но это чуть другая история.
15 мар 06, 12:56    [2450508]     Ответить | Цитировать Сообщить модератору
 Re: DB2 Express-C против - MS SQL Server 2000 -???  [new]
gardenman
Member

Откуда: С-Петербург
Сообщений: 2347
2 Yo!!
Дело ведь не только во временных таблицах, но и в динамически формируемых параметрах запросов. Типа:
create procedure p1() 
begin
   declare @c1 int;
   select od into c1 from ...
   select ... from where var=@c1
   ...
end

вот в этом примере параметр @c1 - динамически вычисляемый, и следовательно план будет построен неоптимально.
15 мар 06, 13:10    [2450594]     Ответить | Цитировать Сообщить модератору
 Re: DB2 Express-C против - MS SQL Server 2000 -???  [new]
Yo.!!
Guest
2gardenman

в данном примере будет только оптимальный план (что бы там нибыло - поиск по индексу). но соглашусь что можно придумать пример где плану нужно знать каким будет @c1, но не понимаю причем тут хп, а если такой запрос прийдет напрямую от клиента то что изменится, а главное не понимаю, что db2 изобрела что-то фундоментально новое ?
15 мар 06, 13:20    [2450658]     Ответить | Цитировать Сообщить модератору
 Re: DB2 Express-C против - MS SQL Server 2000 -???  [new]
Anton Demidov
Member

Откуда: Atlanta, GA
Сообщений: 1187
Yo.!!
...
понятие плана есть у SQL запросов и действительно у временных таблиц например в оракле нет статистики на которую бы мог оперется оптимизатор, это может привести к тому, что cost based оптимизатор без статистики приймет неверное решение. на сколько мне известно в db2 тоже cost based optimizer который принимает решения во время исполнения на основе собраной статистики, а не плана который был актуальным в начале века.
другое дело что у оракла и наверника у db2 есть механизмы закрепления плана, которые помогут в ситуации с временной таблицой, но это чуть другая история.

Читаем документацию про bind peeking (гугл поможет). И у Оракла и у DB2 эта фича есть. Первый смотрит в значение bind variable только первый раз, вторая - постоянно и перестраивает план запроса, если надо (верно для AS/400 5R3). Есть способы запретить это делать, но не рекомендуется.

Далее, для временных таблиц Оракла можно и иногда нужно указывать статистику. Либо хинтом (cardinality) в лоб, либо используя sampling.
15 мар 06, 22:55    [2453351]     Ответить | Цитировать Сообщить модератору
 Re: DB2 Express-C против - MS SQL Server 2000 -???  [new]
Yo.!!
Guest
Anton Demidov

Читаем документацию про bind peeking (гугл поможет). И у Оракла и у DB2 эта фича есть. Первый смотрит в значение bind variable только первый раз, вторая - постоянно и перестраивает план запроса, если надо (верно для AS/400 5R3). Есть способы запретить это делать, но не рекомендуется.

Далее, для временных таблиц Оракла можно и иногда нужно указывать статистику. Либо хинтом (cardinality) в лоб, либо используя sampling.


в оракле bind peeking имхо просто смотрит на переменую и подсовывает статистику оптимизатору, чтоб тому было чуток легче. gardenman же нам тут про какие-то планы ХП рассказывает, которые строятся во время компиляции (!?) ХП.
15 мар 06, 23:18    [2453385]     Ответить | Цитировать Сообщить модератору
 Re: DB2 Express-C против - MS SQL Server 2000 -???  [new]
Anton Demidov
Member

Откуда: Atlanta, GA
Сообщений: 1187
Правильно он говорит. Во время компиляции ХП в ДБ2 строятся планы исполнения для всего SQL, что используется внутри. Другое дело, что в ДБ2 они потом почти не используются - перед исполнением оптимизатор перепроверяет валидность плана. То есть ты мог скомпилировать хранимку на пустой девелоперской базе, перенести скомпилированный модуль в продакшн и потом удивлятся, что планы уже другие (как и должно быть).
У Оракла давно (в 7-й версии?) при компиляции PL/SQL кода план исполнения SQL фиксировался. Сейчас уже нет. Если ХП у Оракла внешняя - то там SQL априори динамический.

--
Антон
Per rectum ad astrum
16 мар 06, 00:14    [2453441]     Ответить | Цитировать Сообщить модератору
 Re: DB2 Express-C против - MS SQL Server 2000 -???  [new]
gardenman
Member

Откуда: С-Петербург
Сообщений: 2347
2 Anton
Планы в DB2 строятся в момент связывания (операция BIND) в конкретной БД. И остаются постоянными пока кто-нить не грохнет какую-нить зависимость - типа почикают индекс, ну и естественно пакет станет невалидным и следующий раз при вызове пакета будет произведена попытка пересвязать пакет заново. Ну и в зависимости от результата - либо построится новый план либо облом.
Но план построится - и будет постоянным. И наплевать ему меняется ли статистика или нет. Т.е. вызвав db2expln.exe и посмотрев план - вы точно знаете что в пакете именно тот план, который вы видите. А в других базах это далеко не так. Оракл не исключение. Совсем не факт если вы даже выдите что запрос сейчас исполняется так как вам надо когда вы его тестируете, то легко может наступить помент когда это будет неверно.
Выгоды на самом деле в статическом SQL просто огромны, особенно в случае OLTP.ИМХО. Нелепо всякий раз пересматривать план простейшего запроса из 2-3 джойнов.
Мое мнение таково - статический SQL - это полезная фича. И единственная СУБД у кого это действительно есть - это ДБ2.
16 мар 06, 09:20    [2453979]     Ответить | Цитировать Сообщить модератору
 Re: DB2 Express-C против - MS SQL Server 2000 -???  [new]
ASCRUS
Member

Откуда: МО Электросталь
Сообщений: 5994
Для того, чтобы каждый раз не пересматривать планы запросов, а держать в временном и постоянном кэше наиболее лучшие, но актуальные, существуют эвристические анализаторы запросов, которые работают в паре с оптимизаторами запросов и как раз отвечают за то, чтобы находить и хранить наиболее лучшие планы запросов, постоянно отслеживая, что эти планы запросов остаются наиболее эффективными на текущий момент времени. Это гораздо лучше всякого статического SQL, потому что к примеру, после массовой вставки в БД миллионов записей эвристический анализатор тут же заставит оптимизатор заново составить планы запросов и снова отобрав лучшие далее уже будет продолжать работу по ним.

IMHO не бывает чистых OLTP задач - у меня в клиентских приложениях пользователь мышкой может такое условие поиска или фильтра информации составить, что при выполнении запроса через динамический SQL в нем будет ого го сотен строк (вплоть до обхвата всех таблиц БД) и чем тут статический SQL помочь может даже не представляю. Ну а для серии мелких запросов OLTP я уже говорил выше про эвристический анализатор - то же подобие статического SQL, тока автоматически контролирующегося и перестраивающегося самим сервером без какого либо вмешательства извне, в т.ч. без изменения мета-структуры, а при большом изменении к примеру статистики или резкому проседанию выполнению запросов, что вполне возможно из-за тех жеизменения доступных ресурсов сервера, что тоже кстати приведет к перестроению планов запросов (те же HASH JOIN при отсутствии нужных ресурсов придется уводить на INDEX JOIN или TABLE SCAN, то есть вообще план запросов будет другой).
16 мар 06, 09:53    [2454120]     Ответить | Цитировать Сообщить модератору
 Re: DB2 Express-C против - MS SQL Server 2000 -???  [new]
ggv
Member

Откуда:
Сообщений: 1810
опять же, static sql (наряду с синтаксисом sql, позволяющим в одном запросе сделать то, что в других базах делается рядом запросов) одна из причин низкого использования SP в db2
пакет db2, появившийся на заре rdbms, как раз и есть "прообраз" SP.
То есть он позволяет достичь почти всех преимуществ SP, кроме снижения сетевого траффика.
16 мар 06, 09:56    [2454133]     Ответить | Цитировать Сообщить модератору
 Re: DB2 Express-C против - MS SQL Server 2000 -???  [new]
ggv
Member

Откуда:
Сообщений: 1810
этот "эвристический анализатор" называется у IBM - LEO Learning Optimizer.
Почитайте, интересная вещь.
Создается полным ходом.
Но статический SQL никуда не денется - если у вас под него нет задач, то у других они есть. И OLTP задача никуда не денется - пусть даже и как часть системы.
Тысячи типовых транзакций в секунду проводить все равно надо будет всегда, безо всяких массовых обновлений данных. Вот под эти задачи и создавался static SQL, под них же он и продолжает использоваться.
16 мар 06, 10:00    [2454147]     Ответить | Цитировать Сообщить модератору
 Re: DB2 Express-C против - MS SQL Server 2000 -???  [new]
Yo.!!
Guest
ууу как все запущено. это ж прошлый век, основное преимущество 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 мар 06, 10:14    [2454230]     Ответить | Цитировать Сообщить модератору
 Re: DB2 Express-C против - MS SQL Server 2000 -???  [new]
gardenman
Member

Откуда: С-Петербург
Сообщений: 2347
2 Yo!!
содержание таблиц, из мошность, отношение мощностей таблиц учавствующих в запросе действительно меняется постепенно. Но план запроса постепенно меняться не может. Он всегда ведь пересматривается полностью. Интересна ситуация когда запрос SELCT * FROM ... WHERE A1 LIKE="А%" в одном случае будет сканировать по диапазону индекса, а в друго выберет сканирование таблицы. Юзер надеется что в выборке все будет упорядочено по алфавиту. А результат в зависимости от параметра - разный то по алфавиту то вперемешку.
16 мар 06, 11:57    [2454936]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 4 [5] 6 7 8   вперед  Ctrl      все
Все форумы / Сравнение СУБД Ответить