Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
|---|---|---|---|
|
#18+
irbis_alДобрый день.. Подскажите а что я ещё должен знать для вот такой ситуации ,которая меня напрягла. У меня не вся таблица товаров залилась в DB2 и я решил удалить. Код: plsql 1. В таблице 20640 записей...совсем немного. И субъективно заметил ,что db2 (у меня db2 express-c d в режиме compatible=ORA) удаляет уж очень долго. Провёл эксперимент в бесплатном оракле xe(поставленному по дефолту без натроечного тюнига) удаляет моментально 0.200 sec. В db2 express-c тоже поставленной по дефолту(я пока вообще не знаю как её тюнить) более 3х минут . Что мне тут надо подкрутить? Возможно поможет эта информация...если в таблице нет constraint(или индексов). Т.е просто таблица без всяких индексов и ограничений. то в db2 удаляется мгновенно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2015, 16:18 |
|
||
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
|---|---|---|---|
|
#18+
Я бы, скорее, ожидал, что db2 должна быть быстрее - при прочих равных, ибо нет манипуляций с undo tbs. На скорость удаления должны ещё влиять настройки транзакционных логов, ибо транзакции сперва пишутся туда. Есть ещё три техники быстрого удаления всего: * truncate ... immediate (с разными опциями) * alter table ... ACTIVATE NOT LOGGED INITIALLY WITH EMPTY TABLE; commit * load (пустой источник) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2015, 16:32 |
|
||
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
|---|---|---|---|
|
#18+
irbis_alДобрый день.. Подскажите а что я ещё должен знать для вот такой ситуации ,которая меня напрягла. У меня не вся таблица товаров залилась в DB2 и я решил удалить. Код: plsql 1. В таблице 20640 записей...совсем немного. И субъективно заметил ,что db2 (у меня db2 express-c d в режиме compatible=ORA) удаляет уж очень долго. Провёл эксперимент в бесплатном оракле xe(поставленному по дефолту без натроечного тюнига) удаляет моментально 0.200 sec. В db2 express-c тоже поставленной по дефолту(я пока вообще не знаю как её тюнить) более 3х минут . Что мне тут надо подкрутить? Вроде с диагностикой определились. В этой таблице есть столбец,что ссылается сам на себя. Код: plsql 1. И именно он тормозит всё удаление,что и неудивительно рекурсия на себя. Справедливости ради надо сказать,что в оракле не было этого ограничения в первом эксперименте. Когда я его добавил результат оракла xe 40 секунд oracle большого 20 секунд db2 express-c 3 min: 23 s: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2015, 16:40 |
|
||
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
|---|---|---|---|
|
#18+
irbis_alirbis_alДобрый день.. Подскажите а что я ещё должен знать для вот такой ситуации ,которая меня напрягла. У меня не вся таблица товаров залилась в DB2 и я решил удалить. Код: plsql 1. В таблице 20640 записей...совсем немного. И субъективно заметил ,что db2 (у меня db2 express-c d в режиме compatible=ORA) удаляет уж очень долго. Провёл эксперимент в бесплатном оракле xe(поставленному по дефолту без натроечного тюнига) удаляет моментально 0.200 sec. В db2 express-c тоже поставленной по дефолту(я пока вообще не знаю как её тюнить) более 3х минут . Что мне тут надо подкрутить? Вроде с диагностикой определились. В этой таблице есть столбец,что ссылается сам на себя. Код: plsql 1. И именно он тормозит всё удаление,что и неудивительно рекурсия на себя. Справедливости ради надо сказать,что в оракле не было этого ограничения в первом эксперименте. Когда я его добавил результат оракла xe 40 секунд oracle большого 20 секунд db2 express-c 3 min: 23 s: И наконец может всем будет интересно. Создаю индекс по этому столбцу Код: plsql 1. Oracle xe 2,8 s Db2 express-c => 2 s: 260 ms Oracle EE 1,281 c ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2015, 17:00 |
|
||
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
|---|---|---|---|
|
#18+
irbis_al, неинтересно, особенно на таких мелких объёмах, с непонятной структурой, типами данных (к примеру, number или integer этот ваш GOODSREF_ID?), самими данными, неизвестными настройками, неизвестным железом. Берите пример со Льюиса (на книгу которого я сослался в названии одной из тем). Начинать надо с воспроизводимого примера. Вот я в начале этой темы прикрепил два скрипта - вы их можете под Oracle и DB2 позапускать. Потом изучать поведение, нагрузку, статистику, как что меняется при изменении чего-то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2015, 18:04 |
|
||
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
|---|---|---|---|
|
#18+
Victor Metelitsa, Начинать надо с воспроизводимого примера. Вот я в начале этой темы прикрепил два скрипта - вы их можете под Oracle и DB2 позапускать. Да вот мне как раз неинтересно те примеры запускать. Они абстрактны...и меня слабо касаются. Я заинтересован в результате. Если уж тратить время ,то с пользой. .я перекладываю свою КИС с оракле на db2 на реальной работающей схеме. и хочу получить реально работающую на db2. или убедится в обратном,что это сделать проблематично. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2015, 18:21 |
|
||
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
|---|---|---|---|
|
#18+
Это был пример того, какие бывают примеры. А без знания основ не на чем основываться. Если хотите сравнивать производительность с пользой для себя, вы должны понимать хотя бы в обших чертах, как устроено то, что вы сравниваете. И как работают диски, и как данные лежат на этих дисках, и как принимает решение оптимизатор ( "Cost Based Oracle Fundamentals" by Jonathan Lewis), и как происходит сортировка... Льюис показал, что даже в наибанальнейшем на первый взгляд запросе SELECT * FROM T1 есть много интересного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2015, 18:42 |
|
||
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
|---|---|---|---|
|
#18+
Вот вы как бы что-то сравнили. Типы данных неизвестны, параметры табличных пространств неизвестны, размер памяти под сортировку неизвестен, параметры транзакционных логов неизвестны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2015, 18:45 |
|
||
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
|---|---|---|---|
|
#18+
Victor MetelitsaВот вы как бы что-то сравнили. Типы данных неизвестны, параметры табличных пространств неизвестны, размер памяти под сортировку неизвестен, параметры транзакционных логов неизвестны. Согласен ...многое неизвестно... Но есть и общее= Oracle XE по дефолту И Db2 express-c по дефолту. (Когда заходишь во что-то новое дефолтное дружественное окружение очень важно....чем оно дружественнее тем степень вхождения ниже(можно быть менее таким крутым спецом и тратить меньше времени на мануалы)) Типы данных одинаковы.Количество строк одинаково ...констраинты одинаковы.Индексирование столбцов одинаково. В оракле я могу сказать Вам параметры...а в DB2 не могу...я ещё не знаю как их получить. ещё до этого не дошёл..(пока другие вещи интересуют более критичные.) Выкладываю сюда свои наблюдения на пути . Определённые выводы сделать можно...например на проиндексированном столбце DB2 express-c чуть выигрывает у Oracle xe ,а на неприндексированном сильно отстаёт. Для меня уже какой-то опыт...если я увижу ,что в следующих тестах моей КИС будет сильно заваливаться производительность ,-первым делом посмотрю,"-А все ли нужные столбцы проиндексированы ". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2015, 19:04 |
|
||
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
|---|---|---|---|
|
#18+
Не забывайте статистику собирать, a la runstats on table xxx with distribution and detailed indexes all а про индексы спрашивайте у утилиты db2advis. А одинаковые условия не означают правильных или справедливых условий. Напр., X выиграл у Y матч в шахматы в нормальных условиях. А если их заставили бы играть обоих вниз головой или по пояс в холодной воде, результат точно остался бы неизменным? Oracle, если я правильно помню, понимает слово INTEGER (подменяя на NUMBER с точностью 0) - тогда, если вы пройдётесь по своим таблицам, подменяя NUMBER на INTEGER там, где целое по смыслу, вроде суррогатных ключей, результат может измениться, а ведь условия по-прежнему равны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2015, 19:19 |
|
||
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
|---|---|---|---|
|
#18+
Забыл сказать - в отличие от Oracle, простой сбор статистики, "скорее всего", не повлияет на планы SQL-выражений, которые будут в ваших PL/SQL-пакетах. Конечно, речь идёт о статических выражениях, а не о строящихся динамически, а если, скажем, дропнете какой-нибудь индекс, план статического выражения, использующего этот индекс, конечно, впоследствии поменяется. По этому поводу см. процедуру REBIND_ROUTINE_PACKAGE, которая перекомпилирует, а также SET_ROUTINE_OPTS, которая задаёт опции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2015, 10:09 |
|
||
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
|---|---|---|---|
|
#18+
Victor MetelitsaЗабыл сказать - в отличие от Oracle, простой сбор статистики, "скорее всего", не повлияет на планы SQL-выражений, которые будут в ваших PL/SQL-пакетах. Конечно, речь идёт о статических выражениях, а не о строящихся динамически, а если, скажем, дропнете какой-нибудь индекс, план статического выражения, использующего этот индекс, конечно, впоследствии поменяется. По этому поводу см. процедуру REBIND_ROUTINE_PACKAGE, которая перекомпилирует, а также SET_ROUTINE_OPTS, которая задаёт опции. Благодарю...посмотрю обязательно...когда перелью данные...и адаптирую к синтаксису pl/sql пакеты. Я обслуживаю в основном мелкий и средний бизнес.(крупного несколько организаций) так что супер-пупер объёма данных там не будет ....в самой большой таблице максимум 15-25 миллионов строк. (Но oracle xe и с этого объёма "вырастает" ,особенно по оперативной памяти) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2015, 11:30 |
|
||
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
|---|---|---|---|
|
#18+
Положим, диск SAS, время чтения одного блока 4мс. Доступ по индексу глубиной 3. На поиск 1 строки уйдут 4 чтения, 16мс. 62 строки в секунду - каково? За какое время будет прочитан миллион? Я, конечно, супер-утрирую, но неудачное расположение данных и/или неудачный план дорого стоят. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2015, 12:16 |
|
||
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
|---|---|---|---|
|
#18+
Кстати, по дефолту база активируется при первом коннекте (при этом происходит заметная задержка), деактивируется, когда все коннекты ушли (при этом чистятся буферный пул и т.п.). В однопользовательском режиме это может быть довольно заметно. Можно явно активировать базу - ACTIVATE DB <имябазы>. Тогда перед db2stop её надо будет деактивировать (DEACTIVATE DB <имябазы>), или придётся воспользоваться db2stop force. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2015, 07:57 |
|
||
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
|---|---|---|---|
|
#18+
Victor Metelitsa, Кстати, по дефолту база активируется при первом коннекте (при этом происходит заметная задержка), Не ну я работаю то в clpplus...там присоеденился и всё. Ещё скачал IBM admin studio.(Но что-то мне в ней совсем не комфортно) И в студии есть настройка типа каждый раз новое соединение или использовать одно.(у меня использовать одно) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2015, 12:40 |
|
||
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
|---|---|---|---|
|
#18+
Когда мы меняем данные в Oracle, undo-информация идёт в undo tablespace, а redo, как для меняемых данных, так и для undo tablespace, идёт в redo log, который впоследствии будет заархивирован. Когда мы меняем данные в DB2, и undo, и redo-информация идёт в транзакционный лог, который впоследствии будет заархивирован. Что произойдёт, если транзакция очень старая, а её нужно отменить? DB2 захочет получить архивный лог обратно. При crash recovery она захочет все архивные логи с того момента. А это было давно, и их уже нет... Бекапы несколькодневной давности не помогут тоже - они захотят те же логи, которых нет. Я с таким налетал на пару неприятностей: * странное поведение nfs-ресурса, который успешно записывал архивные логи, но обратно не отдавал (что интересно, по ftp и самбе файлы вполне себе были доступны, а по nfs их в списке не было) * "застрявшая" на пару месяцев транзакция (причём, возможно, не юзеров, а какого-то системного процесса). Для первого желательно держать несколько зеркал (одно, возможно, на локальном диске), Для контроля второго поможет просмотр SYSIBMADM.DB_HISTORY (с operation='B'), на самотёк пускать нельзя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2015, 09:08 |
|
||
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
|---|---|---|---|
|
#18+
irbis_alНе ну я работаю то в clpplus...там присоеденился и всё. Если вам clpplus не медленный, то не о чем и беспокоиться. Меня и время старта clpplus, и время первого коннекта несколько расстраивают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2015, 09:10 |
|
||
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
|---|---|---|---|
|
#18+
Victor Metelitsairbis_alНе ну я работаю то в clpplus...там присоеденился и всё. Если вам clpplus не медленный, то не о чем и беспокоиться. Меня и время старта clpplus, и время первого коннекта несколько расстраивают. А я другого инструмента и не знаю, clplus похож на oracle sqlplus...только clplus на java. а с ibm studio(которая тоже на java) я не подружился. Новый sqldeveloper от oracle можно заточить на db2...как нибудь попробую.(тем более подходит время большие пакеты адаптировать к db2) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2015, 09:28 |
|
||
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
|---|---|---|---|
|
#18+
Victor MetelitsaКогда мы меняем данные в Oracle, undo-информация идёт в undo tablespace, а redo, как для меняемых данных, так и для undo tablespace, идёт в redo log, который впоследствии будет заархивирован. Когда мы меняем данные в DB2, и undo, и redo-информация идёт в транзакционный лог, который впоследствии будет заархивирован. Что произойдёт, если транзакция очень старая, а её нужно отменить? DB2 захочет получить архивный лог обратно. При crash recovery она захочет все архивные логи с того момента. А это было давно, и их уже нет... Бекапы несколькодневной давности не помогут тоже - они захотят те же логи, которых нет. Я с таким налетал на пару неприятностей: * странное поведение nfs-ресурса, который успешно записывал архивные логи, но обратно не отдавал (что интересно, по ftp и самбе файлы вполне себе были доступны, а по nfs их в списке не было) * "застрявшая" на пару месяцев транзакция (причём, возможно, не юзеров, а какого-то системного процесса). Для первого желательно держать несколько зеркал (одно, возможно, на локальном диске), Для контроля второго поможет просмотр SYSIBMADM.DB_HISTORY (с operation='B'), на самотёк пускать нельзя. До бакапов и redo логов вообще ещё не доходил... (Я думаю по дефолту у меня не в режиме архивирования логов) но благодарю за информацию. если транзакция очень старая, а её нужно отменить? Вообще с точки зрения ораклиста довольно странное поведение. Oracle отслеживает давно-висящие сессии и их закрывает(откатывая их незавершёнку) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2015, 09:35 |
|
||
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
|---|---|---|---|
|
#18+
irbis_alВообще с точки зрения ораклиста довольно странное поведение. Oracle отслеживает давно-висящие сессии и их закрывает(откатывая их незавершёнку) Не помню я там именно такого поведения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2015, 09:39 |
|
||
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
|---|---|---|---|
|
#18+
Величина undo tablespace ограничена (тогда как архивных логов может быть сколько угодно), по этому поводу Oracle может принять какие-то меры. А вот чтобы "если сеанс прожил такое-то время с незакрытой транзакцией, её надо прибить" - абсолютно не помню. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2015, 09:46 |
|
||
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
|---|---|---|---|
|
#18+
Victor Metelitsairbis_alВообще с точки зрения ораклиста довольно странное поведение. Oracle отслеживает давно-висящие сессии и их закрывает(откатывая их незавершёнку) Не помню я там именно такого поведения. Тут тоже надо будет поэкспериментировать. В оракле есть параметр limit idle_time Сам не DBA не знаю...НО неоднократно наблюдал воочию такую картину. Что если пользователь не вышел из КИС ....дня через два.пробовал дальше в ней работать.(естественно ни сервер,ни комп клиента не перегружались) то писалось что сессия отключена. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2015, 09:59 |
|
||
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
|---|---|---|---|
|
#18+
Да, действительно есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2015, 10:04 |
|
||
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
|---|---|---|---|
|
#18+
На эту тему db2gov. Но у него написано "With the workload management features introduced in DB2® Version 9.5, the DB2 governor utility was deprecated in Version 9.7 and might be removed in a future release.". Но Workflow Management - опция за дополнительные деньги. Но надо проверять, действительно ли db2gov всё ещё работает, да ещё на Express-C. И на db_history всё равно стоит посматривать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2015, 10:27 |
|
||
|
Oracle to DB2 Conversion Guide: Compatibility Made Easy
|
|||
|---|---|---|---|
|
#18+
И ещё одна вещь, на которую может больно налететь ораклист - подавляющее количество DDL не автокоммитит после себя. В принципе, это хорошо и правильно и так и должно быть, но если забыть закоммитить/отроллбачить за собой, учитывая блокировки на системных каталогах, можно незаметно для себя всех подвесить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2015, 15:05 |
|
||
|
|

start [/forum/topic.php?fid=43&msg=39106164&tid=1600504]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
157ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 12ms |
| total: | 272ms |

| 0 / 0 |
