powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Oracle to DB2 Conversion Guide: Compatibility Made Easy
25 сообщений из 72, страница 2 из 3
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39103508
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_alДобрый день..
Подскажите а что я ещё должен знать для вот такой ситуации ,которая меня напрягла.
У меня не вся таблица товаров залилась в DB2 и я решил удалить.
Код: plsql
1.
delete from table goods


В таблице 20640 записей...совсем немного.
И субъективно заметил ,что db2 (у меня db2 express-c d в режиме compatible=ORA) удаляет уж очень долго.
Провёл эксперимент в бесплатном оракле xe(поставленному по дефолту без натроечного тюнига)
удаляет моментально 0.200 sec.
В db2 express-c тоже поставленной по дефолту(я пока вообще не знаю как её тюнить) более 3х минут .
Что мне тут надо подкрутить?

Возможно поможет эта информация...если в таблице нет constraint(или индексов).
Т.е просто таблица без всяких индексов и ограничений.
то в db2 удаляется мгновенно
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39103518
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы, скорее, ожидал, что db2 должна быть быстрее - при прочих равных, ибо нет манипуляций с undo tbs. На скорость удаления должны ещё влиять настройки транзакционных логов, ибо транзакции сперва пишутся туда. Есть ещё три техники быстрого удаления всего:
* truncate ... immediate (с разными опциями)
* alter table ... ACTIVATE NOT LOGGED INITIALLY WITH EMPTY TABLE; commit
* load (пустой источник)
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39103525
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_alДобрый день..
Подскажите а что я ещё должен знать для вот такой ситуации ,которая меня напрягла.
У меня не вся таблица товаров залилась в DB2 и я решил удалить.
Код: plsql
1.
delete from table goods


В таблице 20640 записей...совсем немного.
И субъективно заметил ,что db2 (у меня db2 express-c d в режиме compatible=ORA) удаляет уж очень долго.
Провёл эксперимент в бесплатном оракле xe(поставленному по дефолту без натроечного тюнига)
удаляет моментально 0.200 sec.
В db2 express-c тоже поставленной по дефолту(я пока вообще не знаю как её тюнить) более 3х минут .
Что мне тут надо подкрутить?

Вроде с диагностикой определились.
В этой таблице есть столбец,что ссылается сам на себя.
Код: plsql
1.
alter table goods add constraint fgoodsref_id foreign key (GOODSREF_ID ) references goods(id);


И именно он тормозит всё удаление,что и неудивительно рекурсия на себя.
Справедливости ради надо сказать,что в оракле не было этого ограничения в первом эксперименте.
Когда я его добавил результат оракла xe 40 секунд
oracle большого 20 секунд
db2 express-c 3 min: 23 s:
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39103538
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_alirbis_alДобрый день..
Подскажите а что я ещё должен знать для вот такой ситуации ,которая меня напрягла.
У меня не вся таблица товаров залилась в DB2 и я решил удалить.
Код: plsql
1.
delete from table goods


В таблице 20640 записей...совсем немного.
И субъективно заметил ,что db2 (у меня db2 express-c d в режиме compatible=ORA) удаляет уж очень долго.
Провёл эксперимент в бесплатном оракле xe(поставленному по дефолту без натроечного тюнига)
удаляет моментально 0.200 sec.
В db2 express-c тоже поставленной по дефолту(я пока вообще не знаю как её тюнить) более 3х минут .
Что мне тут надо подкрутить?

Вроде с диагностикой определились.
В этой таблице есть столбец,что ссылается сам на себя.
Код: plsql
1.
alter table goods add constraint fgoodsref_id foreign key (GOODSREF_ID ) references goods(id);


И именно он тормозит всё удаление,что и неудивительно рекурсия на себя.
Справедливости ради надо сказать,что в оракле не было этого ограничения в первом эксперименте.
Когда я его добавил результат оракла xe 40 секунд
oracle большого 20 секунд
db2 express-c 3 min: 23 s:

И наконец может всем будет интересно.
Создаю индекс по этому столбцу
Код: plsql
1.
create index igoodsref_id on goods(goodsref_id);


Oracle xe 2,8 s
Db2 express-c => 2 s: 260 ms
Oracle EE 1,281 c
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39103572
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_al,
неинтересно, особенно на таких мелких объёмах, с непонятной структурой, типами данных (к примеру, number или integer этот ваш GOODSREF_ID?), самими данными, неизвестными настройками, неизвестным железом. Берите пример со Льюиса (на книгу которого я сослался в названии одной из тем).

Начинать надо с воспроизводимого примера. Вот я в начале этой темы прикрепил два скрипта - вы их можете под Oracle и DB2 позапускать. Потом изучать поведение, нагрузку, статистику, как что меняется при изменении чего-то.
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39103578
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor Metelitsa,
Начинать надо с воспроизводимого примера. Вот я в начале этой темы прикрепил два скрипта - вы их можете под Oracle и DB2 позапускать.

Да вот мне как раз неинтересно те примеры запускать.
Они абстрактны...и меня слабо касаются.
Я заинтересован в результате.
Если уж тратить время ,то с пользой.
.я перекладываю свою КИС с оракле на db2 на реальной работающей схеме.
и хочу получить реально работающую на db2.
или убедится в обратном,что это сделать проблематично.
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39103586
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это был пример того, какие бывают примеры. А без знания основ не на чем основываться.

Если хотите сравнивать производительность с пользой для себя, вы должны понимать хотя бы в обших чертах, как устроено то, что вы сравниваете. И как работают диски, и как данные лежат на этих дисках, и как принимает решение оптимизатор ( "Cost Based Oracle Fundamentals" by Jonathan Lewis), и как происходит сортировка... Льюис показал, что даже в наибанальнейшем на первый взгляд запросе SELECT * FROM T1 есть много интересного.
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39103587
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот вы как бы что-то сравнили. Типы данных неизвестны, параметры табличных пространств неизвестны, размер памяти под сортировку неизвестен, параметры транзакционных логов неизвестны.
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39103595
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor MetelitsaВот вы как бы что-то сравнили. Типы данных неизвестны, параметры табличных пространств неизвестны, размер памяти под сортировку неизвестен, параметры транзакционных логов неизвестны.
Согласен ...многое неизвестно...
Но есть и общее= Oracle XE по дефолту
И Db2 express-c по дефолту.
(Когда заходишь во что-то новое дефолтное дружественное окружение очень важно....чем оно дружественнее тем степень вхождения ниже(можно быть менее таким крутым спецом и тратить меньше времени на мануалы))

Типы данных одинаковы.Количество строк одинаково ...констраинты одинаковы.Индексирование столбцов одинаково.

В оракле я могу сказать Вам параметры...а в DB2 не могу...я ещё не знаю как их получить.
ещё до этого не дошёл..(пока другие вещи интересуют более критичные.)
Выкладываю сюда свои наблюдения на пути .
Определённые выводы сделать можно...например на проиндексированном столбце DB2 express-c чуть выигрывает у Oracle xe ,а на неприндексированном сильно отстаёт.
Для меня уже какой-то опыт...если я увижу ,что в следующих тестах моей КИС будет сильно заваливаться производительность ,-первым делом посмотрю,"-А все ли нужные столбцы проиндексированы ".
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39103596
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не забывайте статистику собирать, a la
runstats on table xxx with distribution and detailed indexes all

а про индексы спрашивайте у утилиты db2advis.

А одинаковые условия не означают правильных или справедливых условий. Напр., X выиграл у Y матч в шахматы в нормальных условиях. А если их заставили бы играть обоих вниз головой или по пояс в холодной воде, результат точно остался бы неизменным?

Oracle, если я правильно помню, понимает слово INTEGER (подменяя на NUMBER с точностью 0) - тогда, если вы пройдётесь по своим таблицам, подменяя NUMBER на INTEGER там, где целое по смыслу, вроде суррогатных ключей, результат может измениться, а ведь условия по-прежнему равны.
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39103716
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забыл сказать - в отличие от Oracle, простой сбор статистики, "скорее всего", не повлияет на планы SQL-выражений, которые будут в ваших PL/SQL-пакетах. Конечно, речь идёт о статических выражениях, а не о строящихся динамически, а если, скажем, дропнете какой-нибудь индекс, план статического выражения, использующего этот индекс, конечно, впоследствии поменяется.

По этому поводу см. процедуру REBIND_ROUTINE_PACKAGE, которая перекомпилирует, а также SET_ROUTINE_OPTS, которая задаёт опции.
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39103731
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor MetelitsaЗабыл сказать - в отличие от Oracle, простой сбор статистики, "скорее всего", не повлияет на планы SQL-выражений, которые будут в ваших PL/SQL-пакетах. Конечно, речь идёт о статических выражениях, а не о строящихся динамически, а если, скажем, дропнете какой-нибудь индекс, план статического выражения, использующего этот индекс, конечно, впоследствии поменяется.

По этому поводу см. процедуру REBIND_ROUTINE_PACKAGE, которая перекомпилирует, а также SET_ROUTINE_OPTS, которая задаёт опции.

Благодарю...посмотрю обязательно...когда перелью данные...и адаптирую к синтаксису pl/sql пакеты.
Я обслуживаю в основном мелкий и средний бизнес.(крупного несколько организаций) так что супер-пупер объёма данных там не будет ....в самой большой таблице максимум 15-25 миллионов строк.
(Но oracle xe и с этого объёма "вырастает" ,особенно по оперативной памяти)
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39103747
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Положим, диск SAS, время чтения одного блока 4мс. Доступ по индексу глубиной 3. На поиск 1 строки уйдут 4 чтения, 16мс.

62 строки в секунду - каково? За какое время будет прочитан миллион?

Я, конечно, супер-утрирую, но неудачное расположение данных и/или неудачный план дорого стоят.
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39104073
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, по дефолту база активируется при первом коннекте (при этом происходит заметная задержка),
деактивируется, когда все коннекты ушли (при этом чистятся буферный пул и т.п.). В однопользовательском режиме это может быть довольно заметно.

Можно явно активировать базу - ACTIVATE DB <имябазы>. Тогда перед db2stop её надо будет деактивировать (DEACTIVATE DB <имябазы>), или придётся воспользоваться db2stop force.
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39104338
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor Metelitsa,
Кстати, по дефолту база активируется при первом коннекте (при этом происходит заметная задержка),

Не ну я работаю то в clpplus...там присоеденился и всё.
Ещё скачал IBM admin studio.(Но что-то мне в ней совсем не комфортно)
И в студии есть настройка типа каждый раз новое соединение или использовать одно.(у меня использовать одно)
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39106164
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'), на самотёк пускать нельзя.
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39106168
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_alНе ну я работаю то в clpplus...там присоеденился и всё.
Если вам clpplus не медленный, то не о чем и беспокоиться. Меня и время старта clpplus, и время первого коннекта несколько расстраивают.
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39106179
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor Metelitsairbis_alНе ну я работаю то в clpplus...там присоеденился и всё.
Если вам clpplus не медленный, то не о чем и беспокоиться. Меня и время старта clpplus, и время первого коннекта несколько расстраивают.

А я другого инструмента и не знаю, clplus похож на oracle sqlplus...только clplus на java.

а с ibm studio(которая тоже на java) я не подружился.
Новый sqldeveloper от oracle можно заточить на db2...как нибудь попробую.(тем более подходит время большие пакеты адаптировать к db2)
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39106184
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 отслеживает давно-висящие сессии и их закрывает(откатывая их незавершёнку)
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39106188
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_alВообще с точки зрения ораклиста довольно странное поведение.
Oracle отслеживает давно-висящие сессии и их закрывает(откатывая их незавершёнку)
Не помню я там именно такого поведения.
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39106195
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Величина undo tablespace ограничена (тогда как архивных логов может быть сколько угодно), по этому поводу Oracle может принять какие-то меры. А вот чтобы "если сеанс прожил такое-то время с незакрытой транзакцией, её надо прибить" - абсолютно не помню.
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39106210
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor Metelitsairbis_alВообще с точки зрения ораклиста довольно странное поведение.
Oracle отслеживает давно-висящие сессии и их закрывает(откатывая их незавершёнку)
Не помню я там именно такого поведения.

Тут тоже надо будет поэкспериментировать.
В оракле есть параметр limit idle_time
Сам не DBA не знаю...НО неоднократно наблюдал воочию такую картину.
Что если пользователь не вышел из КИС ....дня через два.пробовал дальше в ней работать.(естественно ни сервер,ни комп клиента не перегружались) то писалось что сессия отключена.
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39106221
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, действительно есть.
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39106253
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На эту тему 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 всё равно стоит посматривать.
...
Рейтинг: 0 / 0
Oracle to DB2 Conversion Guide: Compatibility Made Easy
    #39106752
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И ещё одна вещь, на которую может больно налететь ораклист - подавляющее количество DDL не автокоммитит после себя. В принципе, это хорошо и правильно и так и должно быть, но если забыть закоммитить/отроллбачить за собой, учитывая блокировки на системных каталогах, можно незаметно для себя всех подвесить.
...
Рейтинг: 0 / 0
25 сообщений из 72, страница 2 из 3
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Oracle to DB2 Conversion Guide: Compatibility Made Easy
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]