Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
NickName в функции (с низким уровнем изоляции)
|
|||
|---|---|---|---|
|
#18+
medoed , спасибо, Увы сервера не в одном домене, если можно по подробнее где можно прочитать о 3-х звенной архитектуре? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2013, 17:37 |
|
||
|
NickName в функции (с низким уровнем изоляции)
|
|||
|---|---|---|---|
|
#18+
можно же к примеру написать на делфи или на яве програмку которая будет автоматом с сервера или серверов на ДБ2 по ип-адресам собирать инфу с таблиц - запросами, и закидывать на веб сервер в мsql базу каждую ночь. на чем легче будет написать делфи или ява? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2013, 17:48 |
|
||
|
NickName в функции (с низким уровнем изоляции)
|
|||
|---|---|---|---|
|
#18+
кто может помочь написать? заранее спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2013, 17:51 |
|
||
|
NickName в функции (с низким уровнем изоляции)
|
|||
|---|---|---|---|
|
#18+
>> CAWASPB >>Присоединюсь к Виктору. >>Вы разбираетесь с плохим архитектурным решением и накручиваете сверху невесть что. Результат будет заведомо плохим. Этой системе 5-ть лет, то что она подтормаживает – это факт, мне как раз и поставлена задача по её оптимизации, малыми силами и в сжатые сроки. Результаты уже есть)) >>Различные базы в DB2 by design независимы. У них свои выделенные блоки памяти, свои агенты (работающие в данный >>момент с конкретной базой), свой scope >>транзакций . Агент не может взять и полезть в "соседнюю" базу за данными, >>весь обмен идёт по DRDA протоколу. >>Это >>а) идеологически правильно (за что лично я люблю DB2, и из этого самым >>неожиданным образом вдруг вырастают всякие >>вкусные вещи) >>б) позволяет изолированно управлять разными базами. При нормальном написании кода никаких проблем не возникает в MSSQL и Sybase, если базы лежат на одном сервере, даже при параллельных расчетах. Зато не надо гемороиться с MQT и NickName… >>Из рассказываемого Вами следует то, что всё это должно быть одной базой. >>Ну так слейте всё вместе, в чём проблема? На уровне БД более чем достаточно механизмов разделения ресурсов, которые позволят отделять решение одних задач от других. >>Если вы всё же не хотите, или есть веские причины этого не делать, то ПОЧЕМУ НУЖНО ОТКАЗЫВАТЬСЯ ОТ РОДНОГО >>МЕХАНИЗМА, специально предназначенного для инкрементального продуцирования изменений из базы в базу??? Так устроена архитектура, считается что ночные паралельные расчеты лучше пустить по разным базам и агентам соответственно, мне пока это не ставилось в задачу менять существующую архитектуру. Лично я считаю, что MQT на большие таблицы для любой СУБД зло! >>Репликации нуждаются в дополнительном maintenance? >>А кто обещал, что будет легко?! :) >>У вас нет бэкапа для админа (это, вообще, админская работа, настраивать, мониторить и поддерживать репликации; мониторинг >>состояния репликаций отлично >>автоматизируется) на продуктиве на время болезней/отпусков??? :O Ну... срочно >>растите у >>себя ещё одного админа или совместителя. Мне непонятно, как можно жить >>з такого бэкапа. >>и ищите, кому можно отдать эту задачу на откуп (типа >>rl=http://www.triton.co.uk/]Triton). Хороший вопрос, кстати, >>созрел ли у нас народ я подобных услуг (или, может, уже есть кто, такие услуги представляющий?). Повторюсь при такой же архитектуре для MSSQL или Sybase не надо было бы никаких разных баз и репликации тем более. Вторая причина – не хочется загружать админов, пусть делают и накатывают при необходимости бэкапы. Пока что тесты показывают в сторону NickName, возможно мы обойдемся ими без репликации и в DB2. >>По претензиям (ограничениям): >> 1) Триггеры нельзя disable/enable. >>Да, неудобно. Но, возможно, свой смысл в этом есть. >>Триггеры в DB2 "inlined" (с 9.7 для некоторых случаев можно сделать "compiled"), что означает, что тело триггера выполняется не как код в PVM (Procedure Virtual Machine), >>а встраивается непосредственно в запросы (и уже после компилируется и >>оптимизируются как единое целое). >>"Выключение" триггера сразу инвалидирует пакеты и планы запросов в кеше, с ним >>связанные, т.е. может иметь достаточно большой impact. >>При удалении, к примеру, view - это очевидно. "Выключении" триггера - не очень. >>С другой стороны, если мы хотя бы чуть-чуть "в теме", дело, вроде, нехитрое: >> Код: sql 1. 2. >>(но надо ещё помнить про то, кто owner триггера, тут могут быть дыры в безопасности, >>как и с механизмом включения/выключения). Ключевая фраза здесь - Да, неудобно. Все остальное домыслы! В MSSQL,Oracle,Sybase – есть отключение триггеров, если мы считаем DB2 – современной базой, то и в ней должно быть – остальное лирика! > 3) Уровень изоляции ставится на блок, вместо того, чтобы применяться к каждой сущности. >Не могу прокомментировать, пропустил часть обсуждения. >Что именно Вам нужно (кроме как избавиться от блокировок на конкретном statement'е)? Я хочу чтобы DB2 умело вот так (как в MSSQL или Syabase) Код: plsql 1. 2. 3. 4. > 4) Нет нормального монитора блокировок (аналог функции sp_lock), как на MSSQL или >Не хватает мощности > MON_GET_LOCKS table function , > MON_LOCKWAITS administrative view , > MON_GET_APPL_LOCKWAIT table function , > LOCKS_HELD administrative view , > LOCKWAITS administrative view , их deprecated snapshot monitoring >версий, > locking event monitor'ов , диагностики в diagpath, > db2pd ... -locks ... -wlocks ... ??? > sp_showplan (план текущего выполнения процесса), как в Sybase. >Картина примерно такая же как с блокировками. Я хочу простое визуальное отображение блокировок, самых тяжелых и долгих запросов из стандартизированной среды IBM (IBM MON), а не юзать 15 разных скриптов и программ , пусть даже и полезных. Хорошо если сделают так как это сделано в Management Studio от Майкрософта, там все это встроено, пусть тупо скопируют – и народ к ним потянется)) > 5) Нет нормального профайлера (родного от IBM), который бы логину или по имени машины - показывал полный лог, до > мельчайшей команды в realtime >Вы хотите сказать, что не нашли "on-line" визуализатора? >Вообще говоря >а) есть такие вещи как tracing (CLI/ODBC, JDBC), statement monitoring, event monitoring >для activities и т.п. >б) если мы говорим о взрослой серьёзной системе, то сотни/тысячи запросов, >выплёвываемые в realtime вряд ли вам нужны. Я пользовался СТАНДАРТНЫМ РОДНЫМ PROFILER от MSSQL, в стандартной поставке по умолчанию. С помощью него я могу любую сессию отловить, что она делает. ООООЧЕНЬ удобно именно порой в realtime и ничему это не мешает!!! Дайте мне такую же простую, понятную и родную визуальную утилиту от IBM, чтобы можно было просматривать сессию, по любым параметрам, в том числе и по Application Name. Нету – значит НЕУДОБНО НИ РАЗУ! > 6) При массовой вставке в IDENTITY поле, функция IDENTITY_VAL_LOCAL() - >функция возвращает NULL, > scope_identity() - в MSSQL так себя не ведёт. >Ну, identity - это вообще отдельная песня. Я не уверен, что это хорошо, что IBM пошла >на поводу у пользователей и ввела эту сущность в DB2. Разве что для облегчения >миграций. Нет это нужно для разноплановости, простоты и элегантности разработки, для ”акклиматизации” разработчиков SYBASE и MSSQL. >Identity плохо вписываются (точнее - никак) в транзакционные механизмы, служат >источником многих проблем в долго живущих системах ("А-а-а-ааа!!! У нас диапазон >идентификаторов заканчивается!!!!!"), создают ОГРОМНЫЕ проблемы при слиянии >информационных систем (например, нескольких баз, разделённых по регионам, в одну) и >т.п. >GENERATE_UNIQUE() - вот идеологически правильный путь. Бывает, что базы сливать не нужно, тогда Identity удобно и мало места занимает. Да и при сливе заново Identity сгенерить через дополнительное поле таблицы, не судьба? В MSSQL тоже есть NEWID() и что? Хочешь через Identity поле нумеруй , хочешь через uniqueidentyfier (NEWID()) >В данном же случае (scope_identity() после массовой вставки) - вопрос, нахре... >зачем он нужен??? Последний вставленный идентификатор. > 7) В табличной функции DB2 (RETURN TABLE ) нельзя объявить табличную >переменную, > заполнить её и вернуть declare @t table и вернуть без всякого SET (только в процедуре). >Это опять же определяется декларативной/функциональной природой, присущей inlined >compound statement'ам, а не императивной/процедурной, присущей compiled блокам. >Только в этом случае ф-я может быть предметом для оптимизации в рамках более >общего выражения. Когда используемое выражение стоит во FROM это очень >важно. >Наложенное ограничение может быть несколько искусственно, но оно не даёт скатиться в полный трэш при разработке: > чаще разработчики почему-то не умеют мыслить функционально и оперировать set'ами, проще понаделать временных таблиц, >самостоятельно их заполнить, итеративно >перебирая строки, потом уже итеративно проходить по этим временным таблицам и >т.д. это мало того, что требует массовых и одновременно весьма дорогостоящих операций типа fetch (чаще - из случайных мест >таблицы, т.е. prefetch не работает), так ещё и >однозначно определяет план выполнения, который далеко не всегда оптимальный >(или >далеко не всегда будет оптимальный). >Другой важный момент, для "compiled" табличных функций статистика была бы сильно >урезана. Для external можно указать >только предплолагаемую cardinality. Если можно >было бы указать какую другую, то стояла бы большая проблема поддержки её >актуальности. >Для inlined табличных ф-ий статистика вычислима (хотя, зависит, конечно, от того, что >мы внутри накрутим). Честно говоря не понял о чем тут вовсе… Мне нужно было просто для определенных сущностей внутри функции, анализировать уровень изоляции ну и динамический вопрос переварить. Для меня это плохо (нельзя для отдельных сущностей уровень изоляции менять), я считаю это недостатком DB2 – весь эпос написанный в пункте 7-ом , возможно я пойму-переварю позже)). >>PS Хотелось бы ко всему этому порекомендовать с осторожностью относиться ко всяким tips & tricks, встречаемым в сети. >>Они далеко не всегда разумны, подчас давно потеряли свою актуальность, иногда представляют какие-то новые фичи, которые не всегда проверены временем. Учту на будущее… Спасибо! P.S. Еще один недостаток встретил, по сравнению с MSSQL и Sybase – процедурой нельзя вернуть select в DB2 . В том же Oracle можно вернуть sys_refcursor, беглым взглядом я такого в DB2 не нашёл! Имхо на Российском, да и на мировом рынке для РСУБД DB2 будет вытесняться(возможно и к сожалению) всё больше и больше (Oracle and MSSQL)... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2013, 18:03 |
|
||
|
NickName в функции (с низким уровнем изоляции)
|
|||
|---|---|---|---|
|
#18+
shaman902можно же к примеру написать на делфи или на яве програмку которая будет автоматом с сервера или серверов на ДБ2 по ип-адресам собирать инфу с таблиц - запросами, и закидывать на веб сервер в мsql базу каждую ночь. на чем легче будет написать делфи или ява? Есть разныемварианты синхронизпции, попробую перечеслить: 1. Через Linked Server Mssql, я в разных доменах не пробовал, но возможно прокатит по Ip подсоединиться, это можно попробовать, там все через визуальный конструктор делается, минут 10 потратьте, попробуйте. 2. Через репликацию, но это не очень просто имхо, реплицировать чужеродный сервер, я так понимаю вы не админ. 3. Через файлы, грузите из DB2в xml файл данные, потом импортите в mssql в нужные таблицы из xml. Формат файла ограничивает Ваша фантазия. 4. Через клиентскую часть (delphi или java) тут без разницы. Запихива для одного конекшинаете все в dataset и извлекая в msqql из того же дата set. 5. Есть красивое решение через ssis, типа визуальный загрузчик mssql, я в свое время на DTS красивые вещи ваял. Плюс в том, что все интуитивно понятно и просто! Я бы выбрал наверное 5 вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2013, 20:56 |
|
||
|
NickName в функции (с низким уровнем изоляции)
|
|||
|---|---|---|---|
|
#18+
medoedЯ хочу чтобы DB2 умело вот так (как в MSSQL или Syabase) а) select * from table1 (nolock) , table2(nolock) where table1.id = table2.id б) select * from table1, table2(nolock) where table1.id = table2.id в) select * from table1 (nolock) , table2 where table1.id = table2.id А не только так : select * from table1 , table2 where table1.id = table2.id with ur;В db2 можно указывать изоляцию на уровне subselect типа такого: Код: sql 1. 2. 3. 4. Получается немного длиннее mssql, но смысл будет тот же. medoedПока что тесты показывают в сторону NickName, возможно мы обойдемся ими без репликации и в DB2.Я правильно понимаю, что вы сравниваете, скажем, nickname N1 и MQT M1 с описанием типа (select * from N1). И при каких-то обстоятельствах одни и те же запросы, но использующие N1 вместо M1 работают быстрее? Если да, то на всякий случай спрошу - вы создаёте на M1 такие же индексы, как в удалённой базе на таблицу, на которую ссылается nickname? Если ответ на все эти вопроса - да, то это явный нонсенс - я не могу в это поверить... Где-то вы ещё спрашивали про то, что для каждой удалённой таблицы надо обязательно заводить nickname - неудобно. IBM здесь пошла навстречу пожеланиям, но в следующей версии - 10.1. Federated three-part names ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2013, 09:51 |
|
||
|
NickName в функции (с низким уровнем изоляции)
|
|||
|---|---|---|---|
|
#18+
Я хочу чтобы DB2 умело вот так (как в MSSQL или Syabase) а) select * from table1 (nolock) , table2(nolock) where table1.id = table2.id б) select * from table1, table2(nolock) where table1.id = table2.id в) select * from table1 (nolock) , table2 where table1.id = table2.id А не только так : select * from table1 , table2 where table1.id = table2.id with ur;В db2 можно указывать изоляцию на уровне subselect типа такого: Код: sql 1. 2. 3. 4. Получается немного длиннее mssql, но смысл будет тот же. [/quot] Марк, я забыл уточнить - такие возможности в MSSQl можно применять в рамках любых функций и процедур для отдельных сущностей выборочно! Как с этим в DB2? Я правильно понимаю, что вы сравниваете, скажем, nickname N1 и MQT M1 с описанием типа (select * from N1). И при каких-то обстоятельствах одни и те же запросы, но использующие N1 вместо M1 работают быстрее? Если да, то на всякий случай спрошу - вы создаёте на M1 такие же индексы, как в удалённой базе на таблицу, на которую ссылается nickname? Если ответ на все эти вопроса - да, то это явный нонсенс - я не могу в это поверить... Вы неправильно меня поняли... Тесты показывают, что можно обойтись без репликации - в сторону NickName, я это имел в виду. Но NickName не сильно проигрывают MQT по скорости, но нет 5-ти минутных проблем при обновлении MQT. Ну да работает на 20% NickName медленнее, зато нет 5-ти минутных дедлоков. Мы потерпим 20% проигрышь... Где-то вы ещё спрашивали про то, что для каждой удалённой таблицы надо обязательно заводить nickname - неудобно. IBM здесь пошла навстречу пожеланиям, но в следующей версии - 10.1. Federated three-part names За это спасибо, хоть к чему то IBM прислушивается, может они сделают WITH UR для функций, для тех сущностей к которым уровень изоляции допустим для версии 10.1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2013, 10:53 |
|
||
|
NickName в функции (с низким уровнем изоляции)
|
|||
|---|---|---|---|
|
#18+
medoedМарк, я забыл уточнить - такие возможности в MSSQl можно применять в рамках любых функций и процедур для отдельных сущностей выборочно! Как с этим в DB2? Если дело не касается nickname'ов, то можно Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2013, 11:22 |
|
||
|
NickName в функции (с низким уровнем изоляции)
|
|||
|---|---|---|---|
|
#18+
medoed , Большое спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2013, 11:31 |
|
||
|
NickName в функции (с низким уровнем изоляции)
|
|||
|---|---|---|---|
|
#18+
Mark BarinsteinmedoedМарк, я забыл уточнить - такие возможности в MSSQl можно применять в рамках любых функций и процедур для отдельных сущностей выборочно! Как с этим в DB2? Если дело не касается nickname'ов, то можно Код: 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. Мне как раз надо для NickName. Вот что за хрень - в доке от IBM про это нет ничего, про понижение уровня изоляции с NickName в функции. Ну да ладно - я прошу просто сделать логично - для всех сущностей в функции измените уровень изоляции, как я хочу, не можете для NickName - для них не меняйте. В итоге хрен - я не могу использовать всю функцию, если в ней есть with ur и NickName! Обидно и не логично!!! ИМХО... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2013, 11:33 |
|
||
|
|

start [/forum/topic.php?fid=43&msg=38182636&tid=1601505]: |
0ms |
get settings: |
12ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
58ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 310ms |
| total: | 452ms |

| 0 / 0 |
