|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
Приветствую! В компании сейчас идет попытка заменить в Проектах и перейти с БД Oracle (11) на DB2. Интересует мнение тех, кто работал с этими двумя БД... на что требуется обратить внимание, а так же различные показатели и "подводные" камни, сравнение этих БД (администрирование, производительность, требования в аппаратной части и тд) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2013, 18:08 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
Этот вопрос задавай тому, кто на этом переходе настаивает. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2013, 18:28 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
KidПриветствую! В компании сейчас идет попытка заменить в Проектах и перейти с БД Oracle (11) на DB2. Интересует мнение тех, кто работал с этими двумя БД... на что требуется обратить внимание, а так же различные показатели и "подводные" камни, сравнение этих БД (администрирование, производительность, требования в аппаратной части и тд) обратить внимание следует на того, чья эта инициатива. у этих субд совершенно противоположные идиологии - оракл версионник, дб2 блокировочник. вам не миграция, а полный редизайн понадобиться. администрирование, производительность, требования в аппаратной части дело десятое. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2013, 10:51 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
Yo.!обратить внимание следует на того, чья эта инициатива. Это да. Но мощь и бесплатность DB2 Express-C может быть сильным аргументом, перевешивающим прочие. у этих субд совершенно противоположные идиологии - оракл версионник, дб2 блокировочник. вам не миграция, а полный редизайн понадобиться. администрирование, производительность, требования в аппаратной части дело десятое. А это не вполне. IBM-еры довольно много постарались для совместимости. Вплоть до того, что пустая строка может трактоваться, как NULL, а многие раньше блокирующие вещи теперь не блокируют. Нынешняя DB2 по совместимости... ну... примерно на уровне 9-го Oracle. Вот вам поддерживаемый PL/SQL: http://pic.dhe.ibm.com/infocenter/db2luw/v10r5/topic/com.ibm.db2.luw.apdv.plsql.doc/doc/c0053607.html и ещё про compatibility: http://pic.dhe.ibm.com/infocenter/db2luw/v10r5/topic/com.ibm.db2.luw.apdv.porting.doc/com.ibm.db2.luw.apdv.porting.doc-gentopic1.html ; где-то в глубинах есть список стандартных пакетов типа DBMS_JOB и DBMS_OUTPUT, увы, он невелик. Не зная, что за проекты вы делаете и на каком уровне используете Oracle, я не могу сказать, на что странное и неприятное для вас вы наткнётесь. Юзера хранятся не в базе или файле, используются те, что в ОС. Инструмент администрирования - IBM DataStudio, не в комплекте, а отдельно, чудовищного размера, но до EMC как до луны пешком. С другой стороны, в отличие от, Index Adviser доступен во всех редакциях... ... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2013, 12:07 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
Victor Metelitsaмощь и бесплатность DB2 Express-C может быть сильным аргументом, перевешивающим прочие. PostgreSQL тоже бесплатен, зато гораздо более совместим с Оракулом. Я бы даже сказал, что в нём всё делают лишь бы быть похожими на Оракул. Вплоть до копирования его багов. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2013, 12:18 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
Чем же он более похож? Насколько я знаю, там даже пакетов до сих пор нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2013, 12:36 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
Victor MetelitsaЭто да. Но мощь и бесплатность DB2 Express-C может быть сильным аргументом, перевешивающим прочие. мощь на двух ядрах менее 20% современного процессора ... Victor MetelitsaА это не вполне. IBM-еры довольно много постарались для совместимости. Вплоть до того, что пустая строка может трактоваться, как NULL, не смешите, отличие в синтаксисе самая малая из проблем. проблема в том что маскировка синтаксиса не делает дб2 ближе к версионным субд. Victor Metelitsaа многие раньше блокирующие вещи теперь не блокируют. Нынешняя DB2 по совместимости... ну... примерно на уровне 9-го Oracle. одна и та же конструкция в оракле получит консистентные данные на момент старта запроса/транзакции, а в дб2 неконсистентную кашу или дедлог в лучшем случае. skip_locked, last_committed и подобные ему хинты не решают проблему, а являются костылями, с моей точки зрения намекающими какой изврат придется использовать эмулируя версионный механизм на блокировочнике ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2013, 12:49 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
Yo.!Victor MetelitsaЭто да. Но мощь и бесплатность DB2 Express-C может быть сильным аргументом, перевешивающим прочие. мощь на двух ядрах менее 20% современного процессора ... Зависит от задачи. Victor MetelitsaА это не вполне. IBM-еры довольно много постарались для совместимости. Вплоть до того, что пустая строка может трактоваться, как NULL, не смешите, отличие в синтаксисе самая малая из проблем. проблема в том что маскировка синтаксиса не делает дб2 ближе к версионным субд. Зависит от задачи. Victor Metelitsaа многие раньше блокирующие вещи теперь не блокируют. Нынешняя DB2 по совместимости... ну... примерно на уровне 9-го Oracle. одна и та же конструкция в оракле получит консистентные данные на момент старта запроса/транзакции, а в дб2 неконсистентную кашу или дедлог в лучшем случае. skip_locked, last_committed и подобные ему хинты не решают проблему, а являются костылями, с моей точки зрения намекающими какой изврат придется использовать эмулируя версионный механизм на блокировочнике Зависит от задачи. Есть много случаев, когда этот пресловутый "версионный механизм" - бессмысленное лишнее отягощение, гири на ногах. Да, и вы не задумывались над тем, что если транзакционные логи содержат не только redo, но и undo, их можно использовать для того, чтобы посмотреть предыдущую версию? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2013, 12:58 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
http://www.ibm.com/developerworks/data/library/techarticle/dm-0907oracleappsondb2/index.html - DB2 10: Run Oracle applications on DB2 10 for Linux, UNIX, and Windows ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2013, 13:10 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
Victor MetelitsaЕсть много случаев, когда этот пресловутый "версионный механизм" - бессмысленное лишнее отягощение, гири на ногах. ерунда. тест TPC-C нарисовали точно под блокировочник, мелкие, не пересекающиеся транзакции, где преимущество неблокируемого чтения оракла не нужно. тем не менее оракл, с писаниной в undo+redo на идентичном железе впереди. Victor MetelitsaДа, и вы не задумывались над тем, что если транзакционные логи содержат не только redo, но и undo, их можно использовать для того, чтобы посмотреть предыдущую версию? для этого нужно иметь двунаправленный лог, т.е. заставить дб2 писать заметно больше в транзакшен лог, а это дополнительное i/o. не имеет смысла. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2013, 13:11 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
По поводу DB2 Express-C. Где там у нас бесплатный сыр обычно встречается? Раньше (может и сейчас) IBM вообще доплачивал компаниям за то, чтобы они софт по DB2 переписывали. Т.е. даже даром DB2 никому не нужен - приходится доплачивать. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2013, 13:13 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
Yo.!Victor MetelitsaЕсть много случаев, когда этот пресловутый "версионный механизм" - бессмысленное лишнее отягощение, гири на ногах. ерунда. тест TPC-C нарисовали точно под блокировочник, мелкие, не пересекающиеся транзакции, где преимущество неблокируемого чтения оракла не нужно. тем не менее оракл, с писаниной в undo+redo на идентичном железе впереди. Где? Victor MetelitsaДа, и вы не задумывались над тем, что если транзакционные логи содержат не только redo, но и undo, их можно использовать для того, чтобы посмотреть предыдущую версию? для этого нужно иметь двунаправленный лог, т.е. заставить дб2 писать заметно больше в транзакшен лог, а это дополнительное i/o. не имеет смысла. 1) Пишет и всегда писала undo. (Иначе быть не может. Заметим, Oracle пишет redo для undo tablespace, но у DB2 его нет). 2) Объёмы меньше. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2013, 13:19 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
Alexander RyndinПо поводу DB2 Express-C. Где там у нас бесплатный сыр обычно встречается? Раньше (может и сейчас) IBM вообще доплачивал компаниям за то, чтобы они софт по DB2 переписывали. Т.е. даже даром DB2 никому не нужен - приходится доплачивать. Дешёвая демагогия. Oracle тоже раздаёт бесплатную версию, почему, спрашивается? а разработчикам не только IBM приплачивает (если IBM приплачивает) - есть примеры и в других областях, и вообще никого не должно удивлять, что чтобы (попытаться) что-то заработать, сперва приходится вложиться. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2013, 13:24 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
Victor Metelitsa1) Пишет и всегда писала undo. (Иначе быть не может. Заметим, Oracle пишет redo для undo tablespace, но у DB2 его нет). не сочиняйте. для анду дб2 читает лог в обратном порядке, пока не встретит метку транзакции, дальше читает вперед, собирая данные для UNDO. tpc-c на идентичном железе http://www.tpc.org/tpcc/results/tpcc_result_detail.asp?id=105080802 http://www.tpc.org/tpcc/results/tpcc_result_detail.asp?id=105101702 казалось бы без писанины в undo db2 должен был бы иметь громадное преимущество на таких транзакциях, но на деле ... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2013, 13:36 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
Victor MetelitsaAlexander RyndinПо поводу DB2 Express-C. Где там у нас бесплатный сыр обычно встречается? Раньше (может и сейчас) IBM вообще доплачивал компаниям за то, чтобы они софт по DB2 переписывали. Т.е. даже даром DB2 никому не нужен - приходится доплачивать. Дешёвая демагогия. Oracle тоже раздаёт бесплатную версию, почему, спрашивается?Да-да. Oracle тоже раздает бесплатный сыр ;) Любая компания рассчитывает этим привлечь к коммерческой версии. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2013, 13:49 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
Yo.!мощь на двух ядрах менее 20% современного процессора ... Ну, вообще-то, уже на 4х (с 10.5). И в заметном количестве сценариев ограничение скорее в объеме памяти, а не в процессорах. А вот HADR за 2K$ в год - это гораздо более заметный плюс. Сколько там стоит минимальная система на Oracle с Data Guard? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2013, 01:52 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
На проекте, где я сейчас работаю у нас 72-х нодный кластер на DB2. И я скажу так, различия весьма и весьма существеные, что бы там не говорил гражданин Метелица. Из плюсов DB2 по сравнению с Ораклом, ну даже не знаю, по функциональности DB2 явно уступает последнему, по простоте обслуживания тоже особых плюсов не заметил - обе СУБД одинаково сложно поддерживать на мой взгляд, но я DB2 толком и не администрировал, скорее как разарботчик выступал, так что к последнему замечанию стоит относится критически. Сразу скажу, если привыкли к Ораклу, то при переходе на DB2 ломка будет серьезная, она все же другая, и архитектурно, и идеологически. К плюсам можно отнести настоящее MPP, но круг приложений, где это нужно весьма ограничен - обычно это DWH. К тому же там реализация такая дурацкая, что я бы вообще никому не рекомендовал в наше время начинать любой DWH проект на DB2. Еще партиционирование настолько примитивное, что даже матом ругаться нет сил. Собственно покупка IBM'ом Netezza тому лишнее подтверждение. Так что в сухом остатке из плюсов DB2, пожалуй только цена. С другой стороны, для 90% приложений даже функционала DB2 хватит выше крыши, т.е. если не хотите переплачивать за то, что не используете - то вполне себе аргумент. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2013, 04:57 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
Безусловный плюс DB2 - строгое следование канонам реляционной теории. Из этого получается множество вкусностей типа стоимостного оптимизатора и просто таки заточенности под крайне редкое пользование хинтами. Честный статический SQL. Натурально таки интегрированные друг с другом (в том числе с точки зрения общей оптимизации и построения плана выполнения) SQL и XQuery (с честно интегрированным в РСУБД XML хранилищем содержащим распарсеный XML в виде нод и т.п.) Сейчас вот поколоночное хранение интегрировали со своими вкусностями для аналитики (бегают флагами размахивают, что у них прям прорыв и т.п.) То же горизонтальное партиционирование. 2 Apex, а что с ним не так??? Интересно. И ещё раз, в Oracle его попросту нет, так что в контексте темы это просто таки жирный плюс DB2. При этом технология более чем зрелая. На моей памяти (>15 лет) ей вовсю (в том числе в мире VLDB) пользуютя "и не жужжат" ;) "Догоним и перегоним Oracle", устроенное IBM'ом в последнее время - сомнительное мероприятие, от которого IBM'у никуда, правда, не деться. В Oracle отличные маркетологи, они уже захватили ого-го сколько (этакий Windows в мире СУБД ;)) Например, до определённого времени IBM держался и строго ограничивал всякую процедурную писанину внешними ф-ми/процедурами (что с моей точки зрения правильно). Море сомнительного качества кода лабается на бейсикоподобных PL/SQL и SQL PL, это черезвычайно сомнительный способ работы с data set'ами (это даже не хинты, это план доступа, прописываемый в алгоритме как правило плохо сформатированного кода). Сломались. То же про всякие identity и т.п. Го... плохо-кодеру удобно, а идеологически крайне криво и чревато дальнейшими проблемами. С другой стороны, и полезные вещи у Оракла и прочих перенимают. Подчас о-о-оочень медленно. Говорить же, что Oracle - прям вот свет в окне как минимум некорректно. Всяких несуразностей хватает. Пример - смешно сказать, не умеет для заданного tablespace'а свой bufferpool задать :O Т.е. средств "запинить" определённую таблицу(ы) целиком в памяти просто нет (или я ошибаюсь?) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2013, 14:50 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
CawaSPbГоворить же, что Oracle - прям вот свет в окне как минимум некорректно. Всяких несуразностей хватает. Пример - смешно сказать, не умеет для заданного tablespace'а свой bufferpool задать :O Т.е. средств "запинить" определённую таблицу(ы) целиком в памяти просто нет (или я ошибаюсь?) чего проще то ? alter table .. cache вообще буферпул почти для любого объекта в схеме можно задать в storage_clause db2 до сих пор динозавр, повторяет то что прошел оракл 15-20 лет назад. 15-20 лет назад у оракла тоже был статический SQL который внедрялся в известные языки, типа C, но если на смену этому порно в оракле достаточно быстро пришел 4GL язык, то в db2 sqlpl до сих слишком куцый и глючной, что бы пользователи массового на него пересели. основная фича встроенного в субд языка интеграция с данными. если я снес таблицу, у меня процедуры обращающиеся к этой таблице должны пометиться как invalid и должен быть запрет на запуск заведомо не валидного кода. в db2 до сих пор даже этого базиса нет, понятно что пользователи не понимают какой смысл им переносить. ну и второй большой косяк - отсутствие версионности, в 21 веке, где даже mysql выдает консистентный набор на момент старта запроса биться будет проблематично. изврат в виде хинтов аля skip_locked, last_committed девелоперы в своей массе не оценят, когда есть выбор ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2013, 15:28 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
Alexander Ryndin, Yo.!, По storage_clause - спасиб! Yo.!db2 до сих пор динозавр, повторяет то что прошел оракл 15-20 лет назад. 15-20 лет назад у оракла тоже был статический SQL который внедрялся в известные языки, типа C, но если на смену этому порно в оракле достаточно быстро пришел 4GL язык, Это потому что у Оракла никогда не было нормального статического SQL с нормальным менеджментом пакетов (bind, rebind и т.п.). А этот 4GL язык - один фиг бейсик для работы с датасетами толком не предназначенный. Да он стал популярен, но строго потому, что писать на нём идут люди недалеко ушедшие от VB. Yo.!если я снес таблицу, у меня процедуры обращающиеся к этой таблице должны пометиться как invalid и должен быть запрет на запуск заведомо не валидного кода. в db2 до сих пор даже этого базиса нетЧего???? И инвалидируются процедуры/ф-ии/вьюхи/..., и ревалидируются потом по факту обращения (как и пакеты rebind'ятся). Можем запросить возможность создавать невалидные объекты (параметр на уровне базы). Yo.!ну и второй большой косяк - отсутствие версионности, в 21 векеЭто, конечно, большая глупость. Версионность хороша только для оптимистических блокировок, где либо имеем хороший шанс в конце транзакции получить отлуп, либо неконсистентные данные. В определённой ситуации такие отлупы будут нарастать снежным комом, пока всем не поплохеет. В то же время полноценный optimistic locking в DB2 никто использовать не запрещает. DB2_EVALUNCOMMITTED, DB2_SKIPINSERTED, DB2_SKIPDELETED - это несколько "про другое", хотя тоже связано с блокировками и взаимодействием транзакций. Немного маркетинг-буллшита - ftp://ftp.software.ibm.com/software/data/db2/9/labchats/20110331-slides.pdf :) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2013, 18:35 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
ApexК тому же там реализация такая дурацкая, что я бы вообще никому не рекомендовал в наше время начинать любой DWH проект на DB2. Еще партиционирование настолько примитивное, что даже матом ругаться нет сил.Здравствуйте. Всегда хотел пообщаться с человеком, сидящем на таком крупном хранилище. Если не затруднит, расскажите, что вам не нравится в дурацкой реализации, и чего не хватает в партиционировании для вашего проекта. Можно в личку, можно здесь... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2013, 19:27 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
CawaSPbЭто потому что у Оракла никогда не было нормального статического SQL с нормальным менеджментом пакетов (bind, rebind и т.п.). А этот 4GL язык - один фиг бейсик для работы с датасетами толком не предназначенный. Да он стал популярен, но строго потому, что писать на нём идут люди недалеко ушедшие от VB. мериться отмершими в мире оракла прекомпиляторами не готов, а вот по 4GL запросто. нука напишите мне аналог на любом вашем языке Код: plsql 1.
или выдайте права на процедуры связанные с фин подсистемой (с пакаджем) CawaSPbЧего???? И инвалидируются процедуры/ф-ии/вьюхи/..., и ревалидируются потом по факту обращения (как и пакеты rebind'ятся). предлагаете на каждый чих реавалидировать сотни мб кода всего проекта ? CawaSPbЭто, конечно, большая глупость. Версионность хороша только для оптимистических блокировок, где либо имеем хороший шанс в конце транзакции получить отлуп, либо неконсистентные данные. В определённой ситуации такие отлупы будут нарастать снежным комом, пока всем не поплохеет. В то же время полноценный optimistic locking в DB2 никто использовать не запрещает. DB2_EVALUNCOMMITTED, DB2_SKIPINSERTED, DB2_SKIPDELETED - это несколько "про другое", хотя тоже связано с блокировками и взаимодействием транзакций. Немного маркетинг-буллшита - ftp://ftp.software.ibm.com/software/data/db2/9/labchats/20110331-slides.pdf :) жить захочешь, не так раскорячишься. повторю, те сотни хинтов, что призваны хоть как-то компенсировать отсутствие нормальной версионности в db2 не дает базовой вещи - консистентного набора на момент старта запроса/транзакции. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2013, 21:34 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
Yo.!Victor Metelitsa1) Пишет и всегда писала undo. (Иначе быть не может. Заметим, Oracle пишет redo для undo tablespace, но у DB2 его нет). не сочиняйте. для анду дб2 читает лог в обратном порядке, пока не встретит метку транзакции, дальше читает вперед, собирая данные для UNDO. Не сочиняю. Undo tablespace у DB2 нет. В старые времена при попытке посмотреть на изменённую запись происходила блокировка (если не использовать уровень изоляции UR), теперь может заглянуть в лог ( http://www.ibm.com/developerworks/data/library/techarticle/dm-0907oracleappsondb2/index.html ). tpc-c на идентичном железе http://www.tpc.org/tpcc/results/tpcc_result_detail.asp?id=105080802 http://www.tpc.org/tpcc/results/tpcc_result_detail.asp?id=105101702 казалось бы без писанины в undo db2 должен был бы иметь громадное преимущество на таких транзакциях, но на деле ... Тем не менее, чтение Льюсового Oracle Core производит сильное впечатление. C поры "IBM DB2 UDB 8.2" ситуация могла сильно поменяться. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2013, 11:33 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
DPH3Yo.!мощь на двух ядрах менее 20% современного процессора ... Ну, вообще-то, уже на 4х (с 10.5). И в заметном количестве сценариев ограничение скорее в объеме памяти, а не в процессорах. А вот HADR за 2K$ в год - это гораздо более заметный плюс. Сколько там стоит минимальная система на Oracle с Data Guard? А Index Advisor'у (доступному даже на DB2 Express-C) примерно соотвествует SQL Access Advisor, что из Tuning Pack, недоступного на Oracle SE/SE1/Express, а на EE за нехилые бабки. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2013, 11:36 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
ApexНа проекте, где я сейчас работаю у нас 72-х нодный кластер на DB2. И я скажу так, различия весьма и весьма существеные, что бы там не говорил гражданин Метелица. А что он такого говорил? Возможно, у вас сложилось неверное впечатление. Я полагаю, что перевестись с Oracle на DB2 будет легче, чем на другую СУБД, потому что IBM-еры постарались перенести PL/SQL и кучу других вещей - но это совсем не значит, что будет легко. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2013, 11:42 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
Yo.!ну и второй большой косяк - отсутствие версионности, в 21 веке, где даже mysql выдает консистентный набор на момент старта запроса биться будет проблематично. изврат в виде хинтов аля skip_locked, last_committed девелоперы в своей массе не оценят, когда есть выбор Сферическим девелоперам в вакууме при решении задач о сферических конях в вакууме невозможно обойтись без ораклиной консистентности, ага. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2013, 11:53 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
Yo.!db2 до сих пор динозавр, повторяет то что прошел оракл 15-20 лет назад. 15-20 лет назад у оракла тоже был статический SQL который внедрялся в известные языки, типа C, но если на смену этому порно в оракле достаточно быстро пришел 4GL язык Кстати, по мне, (в сравнении с "4GL") статический SQL в DB2 как был великолепен в DB2 2.1 for OS/2, так и сейчас великолепен (разве что, могли бы добавить поддержку большего количества типов данных). Всякого рода PL/SQL-и нужны были для попытки переманивания с Oracle, но не сами по себе. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2013, 12:02 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
Yo.!мериться отмершими в мире оракла прекомпиляторами не готов, а вот по 4GL запросто. нука напишите мне аналог на любом вашем языке Код: plsql 1.
http://tkyte.blogspot.ru/2006/10/slow-by-slow.html Вот то, чем вы и сотни тысяч таких же, как вы, занимаетесь. Clipper умер, а клипперисты живее всех живых. предлагаете на каждый чих реавалидировать сотни мб кода всего проекта ? В нынешних версиях DB2 Oracle-подобное поведение. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2013, 12:09 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
Victor MetelitsaНе сочиняю. Undo tablespace у DB2 нет. В старые времена при попытке посмотреть на изменённую запись происходила блокировка (если не использовать уровень изоляции UR), теперь может заглянуть в лог ( http://www.ibm.com/developerworks/data/library/techarticle/dm-0907oracleappsondb2/index.html ). ну и где там двунаправленный лог ? я рад за db2, что он научился вместо грязного блока выдавать last committed. я понимаю, что это огромный шаг для db2, но к консистентному набору выдаваемому версионными субд этот костыль db2 не приближает. никому не нинтересен последняя закомиченная версия, всех интересует та, что была в момент старта запроса/транзакции. Victor Metelitsa C поры "IBM DB2 UDB 8.2" ситуация могла сильно поменяться. это не важно, важно, что есть пример, где хорошо видно, что оракл на одинаковом железе может писать в undo+redo быстрее чем db2 или mssql в один transaction log. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2013, 12:18 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
Victor Metelitsa http://tkyte.blogspot.ru/2006/10/slow-by-slow.html Вот то, чем вы и сотни тысяч таких же, как вы, занимаетесь. Clipper умер, а клипперисты живее всех живых. анекдот- Сивка Бурка вещая каурка, встань передо мной как лист перед травой. - Иван, вы бы поконкретнее выражались как вставать, а то у нас у лошадей короткий ассоциативный ряд. интересно, это у вас под влиянием db2 декларация процедуры ассоцируется с клипером ? Victor MetelitsaВ нынешних версиях DB2 Oracle-подобное поведение. это вам мерещется, ничего похожего на зависимости в db2 нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2013, 12:30 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
Yo.!ничего похожего на зависимости в db2 нет. А зачем они нужны, если всё равно не используются? Какая принципиальная разница между последовательностями "изменение объекта - инвалидация зависимых - попытка использования зависимого объекта - попытка компиляции - ошибка пользователю" и "изменение объекта - попытка использования зависимого объекта - ошибка - попытка компиляции - ошибка пользователю"? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2013, 12:40 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
Yo.!нука напишите мне аналог на любом вашем языке Код: plsql 1.
нуканаписал: Код: sql 1.
В режиме совместимоси с Ораклом - вообще без изменений. Yo.!или выдайте права на процедуры связанные с фин подсистемой (с пакаджем)Не уверен, что понял, что вы хотите. В db2 права на процедуры выдаются так же как и в Оракле - грантом на выполнение процедуры, а не на пакет. На пакет выдаются гранты, если вы написали программу на C, JAVA, например, с использованием статического SQL. Можно выдавать грант на выполнение модуля (пакета по-вашему), что даёт право на выполнение любой опубликованной процедуры. Вопрос: чего здесь не хватает по сравнению с Ораклом? Yo.!... если я снес таблицу, у меня процедуры обращающиеся к этой таблице должны пометиться как invalid и должен быть запрет на запуск заведомо не валидного кода. в db2 до сих пор даже этого базиса нет. ... это вам мерещется, ничего похожего на зависимости в db2 нет.Мне тоже что-то мерещится. Давайте на примере. В системном каталоге есть несколько представлений с именем DEP в конце. Вот их список CONSTDEP DATATYPEDEP FUNCDEP INDEXDEP INDEXEXTENSIONDEP PACKAGEDEP ROUTINEDEP TABDEP TABDETACHEDDEP TRIGDEP VARIABLEDEP VIEWDEP XSROBJECTDEP Во всех представлениях есть поля для описания объектов от которых есть зависимость: BTYPE, BSCHEMA, BNAME При DDL эти таблицы ведутся автоматически, и я могу проверить любые зависимости. Вот пример Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2013, 14:44 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
Yo.!db2 до сих пор динозавр, повторяет то что прошел оракл 15-20 лет назад. 15-20 лет назад у оракла тоже был статический SQL который внедрялся в известные языки, типа C, но если на смену этому порно в оракле достаточно быстро пришел 4GL язык, то в db2 sqlpl до сих слишком куцый и глючной.Вы путаете SQL статический (db2: static), которого у Оракла никогда не было, и "встраиваемый" (db2: embedded). Про куцый и глючный: ОБС-news или на примере можете? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2013, 14:54 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
Mark Barinsteinнуканаписал: Код: sql 1.
В режиме совместимоси с Ораклом - вообще без изменений. блин, если уж встреваете в спор, ну проследите нить разговора: CawaSPbЭто потому что у Оракла никогда не было нормального статического SQL с нормальным менеджментом пакетов (bind, rebind и т.п.). А этот 4GL язык - один фиг бейсик для работы с датасетами толком не предназначенный. Да он стал популярен, но строго потому, что писать на нём идут люди недалеко ушедшие от VB. к чему тут пример на SQLPL, покажите аналог этой процедуры на прекомпиляторе + static SQL ! та же фигня с грантами. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2013, 16:46 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
Mark BarinsteinВы путаете SQL статический (db2: static), которого у Оракла никогда не было, и "встраиваемый" (db2: embedded). и там и там прекомпилятор, разница лишь в деталях. на мой взгляд статик SQL ублюдочен в своей концепции. план запроса должен меняться вместе с ростом и изменениями объектов субд, а не зашиваться вместе с процедурой. запрос в любых условиях должен исполняться с оптимальным планом, а не с тем, что был когда-то оптимальным. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2013, 16:55 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
Yo.!к чему тут пример на SQLPL, покажите аналог этой процедуры на прекомпиляторе + static SQL ! та же фигня с грантами.А какой смысл показывать, как на мотоцикле пару мешков картошки возить? Это на машине удобнее делать, примерно такой же, как и ваша. Yo.!и там и там прекомпилятор, разница лишь в деталях. на мой взгляд статик SQL ублюдочен в своей концепции. план запроса должен меняться вместе с ростом и изменениями объектов субд, а не зашиваться вместе с процедурой. запрос в любых условиях должен исполняться с оптимальным планом, а не с тем, что был когда-то оптимальным.Никому не интересно как мы код компилируем - с пре-, пост- или вместо-компилятором. Главное отличие в результате. Попробуйте расширить своё сознание (только без веществ, пожалуйста :), чтобы понять эту концепцию. Идея там примерно в следующем: Часто вы знаете, что план запроса не будет меняться с изменением статистики. Такие запросы характерны для OLTP систем - они простые, но их много. Для того, чтобы выполнить динамический запрос вы должны сделать: - распарсить запрос, проверить, есть ли он в кэше запросов - проверить права на каждую таблицу запроса - построить план и сохранить его в кеше запросов Понятно, что все шаги вы не делаете постоянно, если не закрываете стейтмент сразу после использования. Но накладные расходы есть, и они могут стать довольно значительными, особенно если запросов действительно много. В случае статических запросов вы только провеояете права на выполнение пакета, который управляет всеми запросами программы. У IBM есть даже такой продукт, как pureQuery , который может превращать динамические запросы вашей программы в статические без перепрограммирования. Говорят, что на некоторых нагрузках можно получить только из этого довольно неплохие результаты . В общем, это инструмент для своих нужд, его не надо пытаться использовать для решения всех задач. Если вы не хотите, то можете его не использовать. Но в Оракле этого просто нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2013, 20:15 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
Mark BarinsteinА какой смысл показывать, как на мотоцикле пару мешков картошки возить? Это на машине удобнее делать, примерно такой же, как и ваша. прекомпилер это не мотоцикл - это динозовр, на большинстве задач давно вымерший по объективным причинам. Mark BarinsteinЧасто вы знаете, что план запроса не будет меняться с изменением статистики. очнитесь, на дворе 21 век, cost based оптимизаторы. да наши предки грелись у костров, охотились на мамонтов и использовали прекомпиллеры, но сейчас то оптимизатор может посмотреть в буферный кеш и изменить план уже исходя из этого. прекомпиллер физически не может построить оптимальный план не имея даже базовой информации, какая часть таблицы в буферном кеше. опять же план может сильно зависеть от переменных, я не понимаю как прекомпилятор мог бы построить оптимальный план на каждый вариант. на все варианты не зашьешь ... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2013, 20:46 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
Yo.!прекомпиллер физически не может построить оптимальный план не имея даже базовой информации, какая часть таблицы в буферном кеше. опять же план может сильно зависеть от переменных, я не понимаю как прекомпилятор мог бы построить оптимальный план на каждый вариант. на все варианты не зашьешь ...Вы, похоже, так и не поняли, о чём я написал. Для построения плана запроса типа: Код: sql 1.
не надо знать ни статистики, ни значения параметра, ни то, какая там часть таблицы в кэше сидит. Какие тут могут быть варианты? Вариант плана здесь всегда будет один, и он же будет оптимальным. А главная идея в том, чтобы для такого запроса (которых, повторюсь, может быть очень много) убрать накладные расходы, которые в сумме вообще могут превысить расходы на выполнение этого запроса. А для 21-го века у DB2 есть тоже хитрый оптимизатор и т.п. P.S.: 1. Всё ли понятно теперь про зависимости в db2? Они все-таки есть, или их по-прежнему нет для вас? 2. Про куцый и глючный DB2 SQL/PL (или PL/SQL) будут примеры? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2013, 21:16 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
Mark Barinsteinselect ... from mytable where pk=:par [/src]не надо знать ни статистики, ни значения параметра, ни то, какая там часть таблицы в кэше сидит. Какие тут могут быть варианты? Вариант плана здесь всегда будет один, и он же будет оптимальным. если колонка pk не уникальна, даже на столь примитивном запросе будет полно вариантов. Mark BarinsteinА главная идея в том, чтобы для такого запроса (которых, повторюсь, может быть очень много) убрать накладные расходы, которые в сумме вообще могут превысить расходы на выполнение этого запроса. для прошлого века это может и была нормальной идеей, но в 21 веке, когда даже сортировка одного и того же объема с утра может иметь одну стоимость, а к вечеру уже другую из-за перераспределения структур памяти субд это не работает никак. Mark BarinsteinА для 21-го века у DB2 есть тоже хитрый оптимизатор и т.п. поэтому db2 и бросила все силы на копирование фич oracle, а не выносит мозг протухшими прекомпиляторами. Mark Barinstein1. Всё ли понятно теперь про зависимости в db2? Они все-таки есть, или их по-прежнему нет для вас? 2. Про куцый и глючный DB2 SQL/PL (или PL/SQL) будут примеры? 1. далеко не все, такие зависимости и в мсскл есть, а может db2 отследить если изменилась колонка с варчар на инт ? 2. попозжей будут ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2013, 21:33 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
Yo.!поэтому db2 и бросила все силы на копирование фич oracle, а не выносит мозг протухшими прекомпиляторами.Вы зациклились на прекомпиляторах. Считайте, что его нет в db2. В SQL процедуре статический код появляется без всяких прекомпиляторов, например. Yo.!Mark Barinstein1. Всё ли понятно теперь про зависимости в db2? Они все-таки есть, или их по-прежнему нет для вас? 1. далеко не все, такие зависимости и в мсскл есть, а может db2 отследить если изменилась колонка с варчар на инт ? Каких зависимостей не хватает? И при чём здесь MSSQL? Что значит "отслеживать"? Инвалидировать зависящие от объекты? Пример Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36.
Т.е. оно переводит таблицу в read-only режим после изменения типа до тех пор, пока я не сделаю реорганизацию таблицы. Процедура типа этой не инвалидируется. Код: sql 1. 2. 3. 4. 5.
Это нормально или нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2013, 22:13 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
Yo.!выносит мозг протухшими прекомпиляторамиСпасибо, поржал. И про вынос мозга очень к месту. Yo.!, любезный, "прекомпилятор" - это совсем не то, что Вы думаете :) Прекомпилятор - это тулза, запускаемая до компиляции/интерпретации, а не вместо :) И никакие исполняемые коды (планы исполнения для SQL) прекомпилятор генерить не может в принципе. Его задача - только подготовить исходный текст. В DB2 "прекомпилятором" можно назвать те фазы, которые запрос объединяют в один длинный текст, inline подставляя view и специально обученные UDF (нет такого в Oracle), парсят его, переформулируют (sql rewriting - есть ли он в Oracle?), объединяют группу запросов в пакет, проверяют права. Т.е. делают всю работу, для которой статистика и прочие cost based совсем не нужна. Получется полуфабрикат - пакет по-DB2'шному. Собственно "компиляция", при которой строятся планы выполнения, грубо говоря называется bind/rebind. И уже она может происходить в момент вызова, в момент первого обращения или постоянно при необходимости (как в интерпретаторах, но без подготовительных фаз "прекомпилятора") - как укажешь. И что лучше - интерпретатор, работающий только одним способом, или компиляция с возможностью выбора ее времени с экономией времени на предобработку? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2013, 23:07 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
Mark BarinsteinВы зациклились на прекомпиляторах. Считайте, что его нет в db2. В SQL процедуре статический код появляется без всяких прекомпиляторов, например. в SQLPL процедуре ? забавно, а там то такое на кой ? в оракле если уж так хочется зафиксировать план - есть отдельные инструменты, которые зафиксировать могут не только SQL из процедур но и то, что приходит от клиента или генерится на лету. Mark BarinsteinЧто значит "отслеживать"? Инвалидировать зависящие от объекты? да, инвалидировать код, заведомо не выполнимый. Mark BarinsteinЭто нормально или нет? на мой взгляд нет. po у вас объявлено как варчар, а таблица вернет инт, значит ваша процедура превратилась в инвалидную. зы. так на счет того, что оптимальность плана может измениться не только из-за изменений статистики я убедил ? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2013, 23:11 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
Yo.!po у вас объявлено как варчар, а таблица вернет инт, значит ваша процедура превратилась в инвалидную. А что, implicit cast числа в строку кто-то предал анафеме?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2013, 23:15 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
CawaSPb2 Apex, а что с ним не так??? Интересно. И ещё раз, в Oracle его попросту нет, так что в контексте темы это просто таки жирный плюс DB2. При этом технология более чем зрелая. На моей памяти (>15 лет) ей вовсю (в том числе в мире VLDB) пользуютя "и не жужжат" ;) Согласен, по сравнению с Ораклом - все прекрасно, тут у меня претензий никаких. На счет не жужжат - я бы так не сказал. Тут вот какое дело, как и Оракл РАК, так и DB2 DPF (ранее PE) они, что называется, кластерны не от природы, обе СУБД уходят корнями в некластерные СУБД для OLTP. Отсюда лишние сложности в администрировании: надо создавать какие-то партинш группы, партишн тейблспейсы, думать о том, в каком тейблспейсе у тебя таблица - в партиционированном или нет? и пр. Т.е. прозрачность для приложений вроде есть, а вот для администрирования как-то не очень. Теперь что касается функционала, в DB2 варехаузный ИМХО слабоват: набор аналитических функций куций по сравнению с тем же Ораклом, партиционирование только двухуровневое (хотелось бы еще минимум одного), truncate конкретной партиции просто так не сделаешь - надо сначала detach сделать, переливка данных из таблицы в таблицу а-ля INSERT /*+APPEND*/ INTO - это вообще песня, где простая операция превращаетя в серию каких-то приседаний и подпрыгиваний с курсорами и вызовами консольной утилиты LOAD через процедуру ADMIN_CMD. CTAS опять же ущербный... В общем, я конечно понимаю, что по сравнению с мировой революцией - это все мелочи и дело привычки, но сложно все как-то, не удобно и работать с DB2 в будущем у меня никакого желания нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2013, 05:33 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
Yo.!Mark BarinsteinЧто значит "отслеживать"? Инвалидировать зависящие от объекты?да, инвалидировать код, заведомо не выполнимый. Mark BarinsteinЭто нормально или нет?на мой взгляд нет. po у вас объявлено как варчар, а таблица вернет инт, значит ваша процедура превратилась в инвалидную.Нет, процедура как работала, так и работает. Там будет делаться неявное преобразование типов. Еще есть претензии/вопросы к зависимостям в db2? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2013, 09:27 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
Yo.!зы. так на счет того, что оптимальность плана может измениться не только из-за изменений статистики я убедил ?Вы даже не начали. Если это продолжение: Yo.!select ... from mytable where pk=:par если колонка pk не уникальна, даже на столь примитивном запросе будет полно вариантов.то давайте обсудим. Дано: "большая" таблица, поля в предикате проиндексированы, запрос возвращяет несколько записей (ну, не больше 20-30). Кардинальность индекса высокая. В общем, довольно часто встречающийся вариант в OLTP системе. Расскажите про "полно вариантов", кроме обычного IXSCAN-FETCH. Мы каждый обсудим и решим, много ли от перебора всех возможных вариантов мы выиграем. И много ли потеряем, если для такого случая оптимизатор при каждом из огромного потока таких запросов будет проявлять интеллект и решать, а надо ли поменять план. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2013, 09:42 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
Apexпартиционирование только двухуровневое (хотелось бы еще минимум одного), truncate конкретной партиции просто так не сделаешь - надо сначала detach сделать, переливка данных из таблицы в таблицу а-ля INSERT /*+APPEND*/ INTO - это вообще песня, где простая операция превращаетя в серию каких-то приседаний и подпрыгиваний с курсорами и вызовами консольной утилиты LOAD через процедуру ADMIN_CMD. CTAS опять же ущербный... - партиционирование Вы можете использовать MDC для "субпартиционирования" (возможно указать несколько полей в ORGANIZE) типа такого: Код: sql 1. 2. 3. 4.
Вы не используете такой вариант? Если нет, то почему? - INSERT /*+APPEND*/ INTO Будет работать и в DB2 с той разницей, что в DB2 нет APPEND хинта, и чтобы добиться такого же поведения, надо выставить это свойство на уровне таблицы. LOAD from CURSOR же - это весьма скоростная альтернатива, позволяющая заметно быстрее, без жуналирования, вставлять в таблицу большие объёмы данных на основе другого запроса. Типа sql loader'а в режиме direct path, только входные данные - результат запроса. Не уверен, что в Оракле есть такая возможность, поэтому трудно сравнивать. - CTAS В DB2 есть процедура ADMIN_MOVE_TABLE, которая похожие вещи делает, если я правильно понял аббревиатуру CTAS. К ней надо привыкнуть, конечно, но с ней проблемы или неудобства какие-то? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2013, 10:11 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
Mark BarinsteinНет, процедура как работала, так и работает. Там будет делаться неявное преобразование типов. Еще есть претензии/вопросы к зависимостям в db2? да, про неявную сглупил, но вы поняли в чем мой вопрос. в обратной ситуации - переменная инт, а в таблице на чар сменили Mark Barinsteinто давайте обсудим. Дано: "большая" таблица, поля в предикате проиндексированы, запрос возвращяет несколько записей (ну, не больше 20-30). Кардинальность индекса высокая. В общем, довольно часто встречающийся вариант в OLTP системе. по вашему олтп это лишь вытягивания по индексу ? я например столь примитивные запросы в реальных системах не встречал. если хотите совсем конкретики давайте возьмем TPC-E - реальная задача, реальные запросы. там, например, такого примитива нет. но даже на таком примитивном запросе если по значению 'shit' возвращается 99.9% записей, то вместо индекса эффективней фулскан применить. т.е. уже не один вариант. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2013, 12:36 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
Yo.!да, про неявную сглупил, но вы поняли в чем мой вопрос. в обратной ситуации - переменная инт, а в таблице на чар сменилиНет, я не понял разницы. DB2 мне не запрещает на Код: sql 1.
пытаться делать арифметические операции над v. Т.е. я могу в процедуре делать v + 1, например, и процедура создастся. То же самое будет, если я поменяю int на varchar в таблице, т.е. процедура использующая арифметику не будет инвалидироваться. Она в рантайме будет отваливаться, если неявное преобразование varchar -> int не пройдёт. А как это в Оракле происходит? Создастся ли на таблице выше процедура, где есть обращение v + 1 к полю? Будет ли процедура инвалидироваться при изменении varchar -> int? Yo.!по вашему олтп это лишь вытягивания по индексу ? я например столь примитивные запросы в реальных системах не встречал. если хотите совсем конкретики давайте возьмем TPC-E - реальная задача, реальные запросы. там, например, такого примитива нет. но даже на таком примитивном запросе если по значению 'shit' возвращается 99.9% записей, то вместо индекса эффективней фулскан применить. т.е. уже не один вариант.Да, по-моему OLTP - это преимущественно вытягивание по индексу. Я не говорю, что все, но значительная часть запросов - да. Давайте смотреть TPC-E, если хотите. Можете показать, где там будут фуллсканы встречаться, неравномерное распределение данных и т.п. Я уверен, что и там мы с вами найдем запросы, для которых не надо знать статистику и всё остальное, а можно будет только по существующим индексам сказать, какой будет оптимальный план запроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2013, 15:53 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
Mark Barinstein- партиционирование Вы можете использовать MDC для "субпартиционирования" (возможно указать несколько полей в ORGANIZE) типа такого: Код: sql 1. 2. 3. 4.
Вы не используете такой вариант? Если нет, то почему? Гм... Про MDC я в курсе, причем давно, но вот используется он у нас и правда редко. Интересно почему. Спасибо, Марк, несмотря на всю очевидность решения, оно мне почему-то в голову не пришло, посыпаю голову пеплом. Хотя если подумать, такой способ тоже не лишен недостатков, это все же не полноценные партиции, их нельзя дропнуть или сделать truncate, например, ровно как и нельзя за секунду сделать attach, как с партициями. Но с другой стороны это почти тоже самое, что и партиции в Терадате (их концепция партиционирования очень похожа на MDC), если вставлять и удалять данные будет так же быстро, то detach\attach и не нужен. Mark Barinstein- INSERT /*+APPEND*/ INTO Будет работать и в DB2 с той разницей, что в DB2 нет APPEND хинта, и чтобы добиться такого же поведения, надо выставить это свойство на уровне таблицы. LOAD from CURSOR же - это весьма скоростная альтернатива, позволяющая заметно быстрее, без жуналирования, вставлять в таблицу большие объёмы данных на основе другого запроса. Типа sql loader'а в режиме direct path, только входные данные - результат запроса. Не уверен, что в Оракле есть такая возможность, поэтому трудно сравнивать. Свойство на уровне таблицы - это alter, а на него не всегда дают права, особенно редко это позволяют делать в хранимках. На самом деле Оракловый INSERT /*+APPEND*/ INTO есть ничто иное как direct path операция (ну ясное дело, что если триггеров нет), выполняемая в определенных случаях без генерации журналов отката\наката. Mark Barinstein- CTAS В DB2 есть процедура ADMIN_MOVE_TABLE, которая похожие вещи делает, если я правильно понял аббревиатуру CTAS. К ней надо привыкнуть, конечно, но с ней проблемы или неудобства какие-то? Не совсем, ADMIN_MOVE_TABLE все же для перемещения таблиц налету. Я же имел в виду Create Table As Select, т.е. гораздо более простую операцию, которая только в DB2 почему-то не умеет заполнять таблицу данными из запроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2013, 00:06 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
ApexХотя если подумать, такой способ тоже не лишен недостатков, это все же не полноценные партиции, их нельзя дропнуть или сделать truncate, например, ровно как и нельзя за секунду сделать attach, как с партициями. Но с другой стороны это почти тоже самое, что и партиции в Терадате (их концепция партиционирования очень похожа на MDC), если вставлять и удалять данные будет так же быстро, то detach\attach и не нужен.Да, скорость удаления, скорее всего, не будет такая же, как при detach. При вставке данных выигрыша вы не получите. Оно, всё же, для оптимизации ввода-вывода с помощью автоматической кластеризации предназначено. Но и удаление при определённых условиях будет идти эффективнее обычного delete. См. Rollout deletion . ApexMark Barinstein- CTAS В DB2 есть процедура ADMIN_MOVE_TABLE, которая похожие вещи делает, если я правильно понял аббревиатуру CTAS. К ней надо привыкнуть, конечно, но с ней проблемы или неудобства какие-то?Не совсем, ADMIN_MOVE_TABLE все же для перемещения таблиц налету. Я же имел в виду Create Table As Select, т.е. гораздо более простую операцию, которая только в DB2 почему-то не умеет заполнять таблицу данными из запроса.Скорее всего это сделано для того, чтобы разделить DDL и DML - в DB2, в отличие от Oracle (насколько я знаю), DDL - под транзакционным контролем, и если всю операцию сделать в одной транзакции, то на некоторые системные таблицы могут длительное время висеть строчные блокировки, что иногда нежелательно. Но с другой стороны, всё "неудобство" заключается в том, что вы делаете 2 команды вместо 1 с тем же select_statement : Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2013, 09:28 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
Mark BarinsteinА как это в Оракле происходит? Создастся ли на таблице выше процедура, где есть обращение v + 1 к полю? Будет ли процедура инвалидироваться при изменении varchar -> int? в оракл 11.2 то же самое, что в дб2 произошло. вроде раньше такого не было, я ожидал, что инвалидирует процедуру. я поищу постарше оракл. Да, по-моему OLTP - это преимущественно вытягивание по индексу. Я не говорю, что все, но значительная часть запросов - да. Давайте смотреть TPC-E, если хотите. [/quot] давайте смотреть TPC-E, вот запрос из BrokerVolume.sql Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2013, 18:39 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
Блин, всё пропустил :) Небольшие ремарки. Yo.!Mark Barinsteinто давайте обсудим. Дано: "большая" таблица, поля в предикате проиндексированы, запрос возвращяет несколько записей (ну, не больше 20-30). Кардинальность индекса высокая. В общем, довольно часто встречающийся вариант в OLTP системе. по вашему олтп это лишь вытягивания по индексу ? я например столь примитивные запросы в реальных системах не встречал. если хотите совсем конкретики давайте возьмем TPC-E - реальная задача, реальные запросы. там, например, такого примитива нет. но даже на таком примитивном запросе если по значению 'shit' возвращается 99.9% записей, то вместо индекса эффективней фулскан применить. т.е. уже не один вариант. На самом деле это даже неважно. Дело в том, что в DB2 это управляемо (REOPT опция команд BIND / REBIND ), а в Oracle выбора просто нет ;) Лёгкость, с которой IBM добавило эту фичу (довольно давно, когда точно - не скажу) - следствие стройности и глубокой продуманности архитектуры системы. Так во всём. Именно за это я люблю DB2. Она не делается методом "заплаток" (ничего не могу сказать в этом отношении про Оракл). Второй момент - IBM просто фантастически упорно старается придерживаться стандартов. И это хорошо. Мой поинт в том, что боже упаси считать "Oracle - suxx, DB2 - rulezzz!" Оракл тоже более чем зрелая, зарекомендовавшая себя и подтвердившая свой статус широким использованием система. Но говорить "DB2 - старьё, застрявшее где-то в прошлом веке" - или некомпетентность, или откровенное сознательное враньё. Примером тому "старая добрая" DPF, натурально таки интегрированный в RDBMS полноценный XML движок (pureXML), pureScale, многообещающий BLU Acceleration ( http://it.toolbox.com/blogs/db2luw/ibm-db2-105-with-blu-acceleration-vs-oracle-exadata-57369 ), ну и самое главное - отличный мощный развиваемый SQL. Можно долго спорить по каждой из этих фич, где лучше или хуже что реализовано, приводить примеры, ссылаться на benchmarketing и т.п. Всё это иррелевантно без привязки к конкретному проекту (серии проектов). Самый большой и очень серьёзный минус DB2 - количество спецов по ней в России. Но если у компании они/внешний сервис есть или компания готова наращивать компетенции, DB2 будет отличным выбором (как и Оракл). ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2013, 15:14 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
Yo.!в оракл 11.2 то же самое, что в дб2 произошло. вроде раньше такого не было, я ожидал, что инвалидирует процедуру. я поищу постарше оракл.Т.е. оракл чем новее, тем хуже становится? :) Тоже даёт в ногу себе выстрелить, если очень хочется? Yo.!давайте смотреть TPC-E, вот запрос из BrokerVolume.sqlЧто вы хотите этим примером показать? Если то, что в OLTP системах, как в этом тесте, иногда кому-то охота BI запросы погонять, то да, я вам верю. Для этого запроса, скорее всего, нет смысла использовать статический sql - он не для этого. Запрос этот выполняется не часть. Хотя и для этого запроса, когда накопится достаточное кол-во данных и что-то серьёзно не будет меняться, то можно перестроить план в последний раз по текущей статистике и больше этим не заниматься. Но там же ниже чуть ли не все запросы - очень хорошие кандидаты для статики. Начал собирать их, но потом бросил - их слишком много Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2013, 16:38 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
CawaSPbНа самом деле это даже неважно. Дело в том, что в DB2 это управляемо (REOPT опция команд BIND / REBIND ), а в Oracle выбора просто нет ;) а зачем в 21 веке такой выбор ? это имело смысл разве, что в 80х, сейчас потратить несколько микросекунд на постройку примитивного плана на порядок, если не два быстрее выходит, чем лезть на хдд. CawaSPbЛёгкость, с которой IBM добавило эту фичу (довольно давно, когда точно - не скажу) - следствие стройности и глубокой продуманности архитектуры системы. Так во всём. Именно за это я люблю DB2. Она не делается методом "заплаток" (ничего не могу сказать в этом отношении про Оракл). вы предвзяты. именно из-за косяков архитектуры ибм пришлось налепить столько заплаток в стиле skip_locked, last_commited, отдельные костыли под оптимистичную стратегию. CawaSPbПримером тому "старая добрая" DPF, натурально таки интегрированный в RDBMS полноценный XML движок (pureXML), pureScale, многообещающий BLU Acceleration ( http://it.toolbox.com/blogs/db2luw/ibm-db2-105-with-blu-acceleration-vs-oracle-exadata-57369 ), ну и самое главное - отличный мощный развиваемый SQL. а теперь взгляните на реальность/ много в мире реальных OLTP систем на DPF или pureScale ? а на BLU Acceleration ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2013, 17:33 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
Mark BarinsteinТ.е. оракл чем новее, тем хуже становится? :) Тоже даёт в ногу себе выстрелить, если очень хочется? пока не понял, наверно отслеживаются только SQL типы, например в INSERT INTO сразу инвалидируются, а вот при конвертации из SQL в PL/SQL ... надо почитать. Mark BarinsteinЧто вы хотите этим примером показать? я хочу сказать, что в типичном OLTP простетньких запросов - мизер и подавляющая часть достаточно сложные. но суть не в кол-ве, а в том, что даже несколько часто используемых запросто превратят систему в большого тормоза. в любой современной субд запросы кешируются, если план ушел из кеша на примитивный план построится за пару микросекунд, т.е. хранить на хдд примитивные планы смысла нет никакого, они гораздо быстрее построятся, чем ибм их прочтет с хдд. с более сложными смысла еще меньше, т.к. оптимальность их плана меняется с течением жизни системы. Mark Barinstein Хотя и для этого запроса, когда накопится достаточное кол-во данных и что-то серьёзно не будет меняться, то можно перестроить план в последний раз по текущей статистике и больше этим не заниматься. а потом на бирже появиться торговый робот, один сгенерит 20% транзакций и ваш план ... Mark Barinstein Начал собирать их, но потом бросил - их слишком много половина из них не так проста, как вам кажется ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2013, 20:28 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
Yo.!Mark BarinsteinТ.е. оракл чем новее, тем хуже становится? :) Тоже даёт в ногу себе выстрелить, если очень хочется? пока не понял, наверно отслеживаются только SQL типы, например в INSERT INTO сразу инвалидируются, а вот при конвертации из SQL в PL/SQL ... надо почитать.Т.е. вы не зная, как оно там в оракле, и уж точно не зная, как оно в db2, начали обвинять db2 в отсутствии нормального ведения зависимостей? Ну что же, если вы не только блестящий теоретик, то сделайте, пожалуйста, тесты у себя, а потом мы поговорим, у кого там тру ведение зависимостей. Yo.!я хочу сказать, что в типичном OLTP простетньких запросов - мизер и подавляющая часть достаточно сложные. но суть не в кол-ве, а в том, что даже несколько часто используемых запросто превратят систему в большого тормоза. в любой современной субд запросы кешируются, если план ушел из кеша на примитивный план построится за пару микросекунд, т.е. хранить на хдд примитивные планы смысла нет никакого, они гораздо быстрее построятся, чем ибм их прочтет с хдд. с более сложными смысла еще меньше, т.к. оптимальность их плана меняется с течением жизни системы. Я уже говорил, что скорость построения плана это не единственные накладные расходы. С микросекундами у вас ошибка примерно на 3 (!!!) порядка. Они за миллисекунды строятся, даже самые простые. Ну да ладно, как говорится, имеющий уши да услышит... Похоже, что мы действительно понимаем с вами под OLTP разные вещи. Вот ваш TPC-E. Там как раз подавляющая часть - простые запросы. Если считаете, что нет - давайте, показывайте свою половину "непростых" запросов и разные варианты планов. Yo.! а потом на бирже появиться торговый робот, один сгенерит 20% транзакций и ваш план ...Кто придёт? Робот? Со своим SQL Developer'ом и ad-hoc запросами? Как этот робот повлияет на мои планы запросов? Кто это в свою OLTP систему пускает каких-то роботов с возможностью генерировать неизвестно что? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2013, 17:23 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
Mark BarinsteinТ.е. вы не зная, как оно там в оракле, и уж точно не зная, как оно в db2, начали обвинять db2 в отсутствии нормального ведения зависимостей? Ну что же, если вы не только блестящий теоретик, то сделайте, пожалуйста, тесты у себя, а потом мы поговорим, у кого там тру ведение зависимостей. ну извини, даже лидер индустрии еще не довел отслеживание зависимостей до совершенства. Mark BarinsteinЯ уже говорил, что скорость построения плана это не единственные накладные расходы. С микросекундами у вас ошибка примерно на 3 (!!!) порядка. Они за миллисекунды строятся, даже самые простые. Ну да ладно, как говорится, имеющий уши да услышит... вы из 80х что-ли пишете ? за милисекунды я результат на уже клиенте имею Mark BarinsteinКто придёт? Робот? Со своим SQL Developer'ом и ad-hoc запросами? Как этот робот повлияет на мои планы запросов? вы современные предприятия совсем видели ? в TPC-E описаны транзакции, которые обрабатывает типичное агентство, у агентства могут быть клиенты люди-брокеры, а могут быть торговые автоматы, которые эти транзакции дергают через веб сервисы, например. один такой автомат может надергать больше транзакций, чем все остальные клиенты агентства вместе взятые. Mark BarinsteinПохоже, что мы действительно понимаем с вами под OLTP разные вещи. Вот ваш TPC-E. Там как раз подавляющая часть - простые запросы. Если считаете, что нет - давайте, показывайте свою половину "непростых" запросов и разные варианты планов. -- BrokerVolumeFrame1 is responsible retrieving -- the total volume that could be potentially -- generated by each qualifying broker. -- MarketWatchFrame1 is responsible for retrieving -- the current price of each symbol on the list -- and computing the average percentage of change -- in price over the list. -- Trade Lookup Frame 1 is responsible for retrieving -- information about the specified maximum of 20 trade IDs. -- Trade Update Frame 1 is responsible for retrieving -- information about the specified max of 20 trade IDs. -- It also may modify up to max_updates rows of TRADE. -- CustomerPositionFrame2 is responsible for retrieving -- the 10-30 most recent trade events for the specified account -- CustomerPositionFrame2 is responsible for retrieving -- the 10-30 most recent trade events for the specified account во всем перечисленном вполне завернутые запросы, с джоинами на несколько таблиц, сортировками, топ 20 и т.п. в общем очень далеко от вашего представления "OLTP - это преимущественно вытягивание по индексу" ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2013, 16:44 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
Yo.!ну извини, даже лидер индустрии еще не довел отслеживание зависимостей до совершенства.Ну извиняю. Т.е. я правильно, понял, что вы берёте назад свои голословные обвинения DB2 в том, что по сравнению с лидером индустрии "ничего похожего на зависимости в db2 нет"? Если да, то давайте перейдём к следующему вашему утверждению: "в db2 sqlpl до сих слишком куцый и глючной". Раз вы решили поучаствовать в топике, где автор писал про "мнение тех, кто работал с этими двумя БД", у вас должны быть примеры об этом. Мы дождёмся их? Yo.!вы из 80х что-ли пишете ? за милисекунды я результат на уже клиенте имеюНет, я пишу из настоящего. А вот разработчики Оракла, по-вашему, всё ещё в 80-х находятся, судя по тому, что в Using Application Tracing Tools в выводе tkprof "parse time" в десятках миллисекунд измеряется: вывод tkprof из доки Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Да и Statistics Descriptions говорит о том, что parse time elapsed - Total elapsed time for parsing, in 10s of milliseconds. Т.е. у пользователя Оракла нет шансов в большинстве случаев получить это время для OLTP запросов, т.к. там нули будут? Можете погуглить цифры, которые у реальных пользователей получаются, если доступа к живой системе нет. У меня сейчас нет доступа к Ораклу. Но я, например, довольно часто вижу в DB2 примерно одинаковые времена компиляции и выполнения простых запросов, и это время выражается в десятках или единицах милисекунд. Не знаю, конечно, может лидер индустрии действительно обгоняет не лидеров на порядки в этом... Yo.!вы современные предприятия совсем видели ? в TPC-E описаны транзакции, которые обрабатывает типичное агентство, у агентства могут быть клиенты люди-брокеры, а могут быть торговые автоматы, которые эти транзакции дергают через веб сервисы, например. один такой автомат может надергать больше транзакций, чем все остальные клиенты агентства вместе взятые.Да какая разница, автомат или человек дергает транзакции? Главное то, что никто не позволит автомату дёргать неизвестно как сгенерированный код. Он из этих веб-сервисов только заранее прописанные там запросы может надёргать, и не важно, в каком количестве или комбинации. Или что, в современных предприятиях, которые вы видели, для автоматов создаются веб-сервисы типа "дайте мне любой текст запросов, я его выполню для вас"? Мне с трудом в это верится. Это самоубийство. По запросам могу отвечать последовательно. -- MarketWatchFrame1 В 5% случаев для этой транзакции выполняется запрос, по которому действительно нужна статистика (по индустрии и с диапазоном в 5000 компаний). В остальных 95% случаев там простейшие запросы, которые вполне подходят для статического sql. MarketWatchFrame1 Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2013, 13:44 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
Mark BarinsteinНу извиняю. Т.е. я правильно, понял, что вы берёте назад свои голословные обвинения DB2 в том, что по сравнению с лидером индустрии "ничего похожего на зависимости в db2 нет"? не правильно. вот как это получилось у дб2 ? http://dbaspot.com/ibm-db2/91190-syscat-routines-valid-column.html вообще, если на proc2 SYSCAT.ROUTINES.VALID показывает N или X, что будет показываться на proc1, которая имеет вызов proc2 ? Mark BarinsteinРаз вы решили поучаствовать в топике, где автор писал про "мнение тех, кто работал с этими двумя БД", у вас должны быть примеры об этом. Мы дождёмся их? обязательно Mark BarinsteinНет, я пишу из настоящего. А вот разработчики Оракла, по-вашему, всё ещё в 80-х находятся, судя по тому, что в Да и Statistics Descriptions говорит о том, что parse time elapsed - Total elapsed time for parsing, in 10s of milliseconds. это какой-то троллинг ? эти цифры в 80х и были получены, вот они еще в доке от восьмерки: http://docs.oracle.com/cd/A87860_01/doc/server.817/a76992/ch14_str.htm Mark BarinsteinМожете погуглить цифры, которые у реальных пользователей получаются, если доступа к живой системе нет. зачем гуглить, у меня оракл есть, беру реальный запрос из вьюшки, с нетривиальным планом Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41.
не вижу милисикунд даже на сервере 2006 года. Mark BarinsteinУ меня сейчас нет доступа к Ораклу. Но я, например, довольно часто вижу в DB2 примерно одинаковые времена компиляции и выполнения простых запросов, и это время выражается в десятках или единицах милисекунд. Не знаю, конечно, может лидер индустрии действительно обгоняет не лидеров на порядки в этом... похоже мы получили ответ, почему у дб2 так держится за прекомпиляцию Mark BarinsteinДа какая разница, автомат или человек дергает транзакции? Главное то, что никто не позволит автомату дёргать неизвестно как сгенерированный код. блин, ну я же русским языком разъяснил, цитата - "торговые автоматы, которые эти транзакции дергают". что за сгенеренный код ? суть в кол-ве записей, автомат за секунду может миллионы транзакций надергать, брокер-человек за жизнь столько может и не поспеть. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9.
не факт. 10 брокеров людей имеют 100 WATCH_ITEM, один брокер-автомат 100500 WATCH_ITEMs, для брокера-автомата дешевле фулскан. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2013, 01:31 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
Yo.!не правильно. вот как это получилось у дб2 ? http://dbaspot.com/ibm-db2/91190-syscat-routines-valid-column.html вообще, если на proc2 SYSCAT.ROUTINES.VALID показывает N или X, что будет показываться на proc1, которая имеет вызов proc2 ?Вы бы ещё про db2 v2.1 где-нибудь что-нибудь нашли. Вероятно в то время, когда SQL процедуры неявно c-компилятором преобразовывались в нативный код и на этой 8.1.5 версии были такие странности, хотя и тогда по состоянию пакета можно было понять, что процедура не выполнится. Сейчас катрина поменялась, пример это демонстрирует. После удаления таблицы: - Процедура test_dep1, обращающаяся к таблице, имеет статус N, её пакет - статус X. - Вызывающая эту test_dep1 процедура test_dep2 имеет статус Y, её пакет - N. Пример Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34.
Ещё вопросы есть? Будем слова свои назад брать? Yo.!зачем гуглить, у меня оракл есть, беру реальный запрос из вьюшки, с нетривиальным планом Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
похоже мы получили ответ, почему у дб2 так держится за прекомпиляцию Похоже, что мы получили то, что вы не очень-то разбираетесь в том, сколько времени и на что Оракл тратит. Код: plaintext 1. 2.
Вы посмотрели не в ту колонку. Никому не интересно, сколько там времени именно CPU тратит на построение плана. Главное - сколько времени в сумме у системы ушло на это. В вашем случае это 70 миллисекунд. 15% времени выполнения. Разница между этими 2-мя показателями это "the total waiting time for parse resources". Вот в эту разницу у вас всё время и ушло. Yo.!не факт. 10 брокеров людей имеют 100 WATCH_ITEM, один брокер-автомат 100500 WATCH_ITEMs, для брокера-автомата дешевле фулскан.А вы не отклоняйтесь от условий конкретного теста, раз сами его предложили рассмотреть. Нету тут такого распределения данных. Наверное, создатели этого теста посчитали, что вариант с сошедшими с ума роботами не очень показателен. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2013, 12:58 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
Mark BarinsteinYo.!зачем гуглить, у меня оракл есть, беру реальный запрос из вьюшки, с нетривиальным планом Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
похоже мы получили ответ, почему у дб2 так держится за прекомпиляцию Похоже, что мы получили то, что вы не очень-то разбираетесь в том, сколько времени и на что Оракл тратит. Код: plaintext 1. 2.
Вы посмотрели не в ту колонку. Никому не интересно, сколько там времени именно CPU тратит на построение плана. Главное - сколько времени в сумме у системы ушло на это. В вашем случае это 70 миллисекунд. 15% времени выполнения. Разница между этими 2-мя показателями это "the total waiting time for parse resources". Вот в эту разницу у вас всё время и ушло. Ну это потому что был hard parse. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2013, 02:14 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
Mark BarinsteinВы бы ещё про db2 v2.1 где-нибудь что-нибудь нашли. Вероятно в то время, когда SQL процедуры неявно c-компилятором преобразовывались в нативный код и на этой 8.1.5 версии были такие странности, хотя и тогда по состоянию пакета можно было понять, что процедура не выполнится. Сейчас катрина поменялась, пример это демонстрирует. После удаления таблицы: - Процедура test_dep1, обращающаяся к таблице, имеет статус N, её пакет - статус X. - Вызывающая эту test_dep1 процедура test_dep2 имеет статус Y, её пакет - N. ... Ещё вопросы есть? Будем слова свои назад брать? нашел то с чем сталкивался, к сожалению, что-то свежее на zOS не часто встретишь. если test_dep2 имеет статус Y я верно понимаю, что test_dep3 вызывающая test_dep2 будет иметь везде Y ? Mark BarinsteinПохоже, что мы получили то, что вы не очень-то разбираетесь в том, сколько времени и на что Оракл тратит. я не ту табличку выложил. это единственный запрос какой (с десятком NESTED LOOPS) начинает хоть какие-то цифры показывать и для этого мне пришлось поискать раритетную технику. все, что проще оракл даже измерить не может. я не представляю какой тормозной должен быть оптимизатор, что бы на современном железе по настоящему примитивный запрос. если дб2 за миллисекунды строит простые запросы, сколько же занимает постройка плана с десятком NESTED LOOPS !?? на моем i7 я не смог увидеть миллисекунды. Mark BarinsteinА вы не отклоняйтесь от условий конкретного теста, раз сами его предложили рассмотреть. Нету тут такого распределения данных. Наверное, создатели этого теста посчитали, что вариант с сошедшими с ума роботами не очень показателен. я вам хотел показать, что такое OLTP задача. в принципе. повторюсь, запросы даже в синтетическом tpc-e не так просты, как вам кажется, а в реальных системах они на порядок сложнее и распределение данных на порядок забавней. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2013, 15:39 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
ApexНу это потому что был hard parse. так мы про хард и рассуждаем, тысячи планов построятся в пределах секунды, лазить за каждым из них на хдд, явно архаизм. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2013, 15:43 |
|
Oracle vs DB2
|
|||
---|---|---|---|
#18+
Yo.!нашел то с чем сталкивался, к сожалению, что-то свежее на zOS не часто встретишь. если test_dep2 имеет статус Y я верно понимаю, что test_dep3 вызывающая test_dep2 будет иметь везде Y ? Так здесь, вроде, речь не про DB2 for zOS идёт, а про DB2 for LUW. Да, поведение DB2 отличается здесь от поведения Оракла: если: - test_dep1 обращается к таблице - test_dep2 вызывает test_dep1 и таблицу удаляют, то test_dep2 (и все, которые её вызывают) не инвалидируется. Сделано это, скорее всего, намеренно, т.к. здесь мне достаточно создать таблицу и ревалидировать test_dep1, которая непосредственно на неё ссылается. И не пытаться ревалидировать другие поцедуры, т.к. ревалидировать там нечего. С практической точки зрения я всегда могу по таблице зависимостей определить, какие именно процедуры не будут выполняться: вот так Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
и ревалидировать то, что мне нужно (либо все, либо все в схеме, либо по отдельности) специальной процедурой. Yo.!я не ту табличку выложил. это единственный запрос какой (с десятком NESTED LOOPS) начинает хоть какие-то цифры показывать и для этого мне пришлось поискать раритетную технику. все, что проще оракл даже измерить не может. я не представляю какой тормозной должен быть оптимизатор, что бы на современном железе по настоящему примитивный запрос. если дб2 за миллисекунды строит простые запросы, сколько же занимает постройка плана с десятком NESTED LOOPS !?? на моем i7 я не смог увидеть миллисекунды.Ну да, имея чувствительность в десятки миллисекунд, тяжело на современном железе поймать такие запросы. Но дело даже не в скорости построения одного плана, а в соотношении времени выполнения и потраченного времени на накладные расходы. Я ведь не просто просил вас погуглить по, например "oracle high parse time". Можно получить такие , или такие результаты. Запросы там очень быстро выполняются, только если parse time такое убрать, то запросов бы гораздо больше в единицу времени можно было бы выполнить. Yo.!я вам хотел показать, что такое OLTP задача. в принципе. повторюсь, запросы даже в синтетическом tpc-e не так просты, как вам кажется, а в реальных системах они на порядок сложнее и распределение данных на порядок забавней.Спасибо, что пытаетесь открыть мне глаза! Только я и сам принимал участие в разработке таких систем, и сейчас довольно часто приходится смотреть на то, что разные компании пишут. И могу сказать, повторяясь, что да, не все OLTP запросы простые, есть и забавные распределения данных. Но простых запросов много в таких системах. Но мы, действительно, слишком много времени этим статическим запросам уделили. Это как рассматривать смысл использования мотоцикла, если есть легковая машина: где-то пригодится, где-то нет. Я к вам почему прицепился: вы в очередной раз, не имея никакого опыта работы с предметом обсуждения (DB2 for LUW), начали её обвинять в серьезных грехах. Мы продолжим дальше обсуждение "отсутствующих зависимостей" и "куцего и глючного" языка? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2013, 19:23 |
|
|
start [/forum/topic.php?all=1&fid=35&tid=1552422]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
32ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
85ms |
get tp. blocked users: |
1ms |
others: | 241ms |
total: | 402ms |
0 / 0 |