powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Курсор или Merge
41 сообщений из 41, показаны все 2 страниц
Курсор или Merge
    #39491976
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что лучше использовать? Курсор или Merge? )
При таблицах с кол-вом записей от миллиона?
Вопрос синхронизации...?
...
Рейтинг: 0 / 0
Курсор или Merge
    #39491977
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://www.bugtraq.ru/forum/faq/general/smart-questions.html] RTFM
...
Рейтинг: 0 / 0
Курсор или Merge
    #39491981
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic http://www.bugtraq.ru/forum/faq/general/smart-questions.html] RTFM
Спасибо, полезная информация )))
...
Рейтинг: 0 / 0
Курсор или Merge
    #39491985
Evgeny2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Лучше использовать merge.
...
Рейтинг: 0 / 0
Курсор или Merge
    #39491988
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Evgeny2Лучше использовать merge.
Бытует мнение, что при больших таблицах, это может привести к жутчайшим тормазам, если взять две таблицы с большим объёмом данных и опытаться их смержить... Так ли это?
И поэтому в подобных случаях иногда применяются курсоры,
например написан некоторый код, где insert и update происходит в курсоре, если да же и так, то целесообразность курсора объясняется тем, что при возникновении взбоя, хоть что-нибудь дозапишется, но так ли это быстро, как использовать простые insert и update без курсоров, ведь сам по себе курсор ещё занимает место в памяти.....?
К тому же обычно в конце курсоров пишут commit или rollback, если что-то пошло не так, а значит это откатит и да же то, что удалось изменить до возникновения ошибки....
В связи с вышесказанным, думаю что лучше использовать просто Update и insert, а потом делать commit, хотя по сути merge то же самое, но как тогда относиться к рекомендациям что merge очень сильно тормозит при больших объемах данных??? 0_0 (((
...
Рейтинг: 0 / 0
Курсор или Merge
    #39491991
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RMagistr2015Бытует мнениеRMagistr2015К тому же обычноRMagistr2015но как тогда относиться к рекомендациямТебе не стоит задумываться о том, что написано на заборах. Разница между быдлокодом и говнокодом всё равно будет минимальна.
...
Рейтинг: 0 / 0
Курсор или Merge
    #39491995
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElicRMagistr2015Бытует мнениеRMagistr2015К тому же обычноRMagistr2015но как тогда относиться к рекомендациямТебе не стоит задумываться о том, что написано на заборах. Разница между быдлокодом и говнокодом всё равно будет минимальна.
)))) Понятно )))
Т.е. вы хотите сказать что лучше использовать merge для таблиц с кол-вом записей больше миллиона и это не приведёт к тормазам? Т.е. ничего на сервере не повиснет и не умрет?
...
Рейтинг: 0 / 0
Курсор или Merge
    #39491998
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RMagistr2015Т.е. вы хотите сказать чтоты не умеешь и не научишься критически делать выводы.
...
Рейтинг: 0 / 0
Курсор или Merge
    #39492000
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElicRMagistr2015Т.е. вы хотите сказать чтоты не умеешь и не научишься критически делать выводы.
Спасибо Вам за вашу помощь, ну а что мы сейчас делаем )))
Критическое мышление — способ мышления, при котором человек ставит под сомнение поступающую информацию, собственные убеждения. (с)
...
Рейтинг: 0 / 0
Курсор или Merge
    #39492001
=nomad=
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот тут] http://www.sql.ru/forum/1153088-a/kak-uskorit-merge много вариантов оптимизации. Нужно проверить и выбрать свой для своей задачи.
...
Рейтинг: 0 / 0
Курсор или Merge
    #39492044
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RMagistr2015Что лучше использовать? Курсор или Merge? )
При таблицах с кол-вом записей от миллиона?
Вопрос синхронизации...?
Merge меняет миллион записей?

.....
stax
...
Рейтинг: 0 / 0
Курсор или Merge
    #39492046
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
=nomad=Вот тут] http://www.sql.ru/forum/1153088-a/kak-uskorit-merge много вариантов оптимизации. Нужно проверить и выбрать свой для своей задачи.
Спасибо большое ))))
...
Рейтинг: 0 / 0
Курсор или Merge
    #39492049
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stax..RMagistr2015Что лучше использовать? Курсор или Merge? )
При таблицах с кол-вом записей от миллиона?
Вопрос синхронизации...?
Merge меняет миллион записей?

.....
stax
Простите, не совсем понял Ваш вопрос сейчас (((
...
Рейтинг: 0 / 0
Курсор или Merge
    #39492064
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RMagistr2015stax..пропущено...

Merge меняет миллион записей?

.....
stax
Простите, не совсем понял Ваш вопрос сейчас (((
в результате виполнения merge сколько строк поменяется?

ps
імхо
использовать merge или нет зависит от задачи

.....
stax
...
Рейтинг: 0 / 0
Курсор или Merge
    #39492070
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stax..RMagistr2015пропущено...

Простите, не совсем понял Ваш вопрос сейчас (((
в результате виполнения merge сколько строк поменяется?

ps
імхо
использовать merge или нет зависит от задачи

.....
stax
не все это точно - сколько именно сказать не могу
Так же существует момент - время от времени в таблицу добавляются новые поля (((
...
Рейтинг: 0 / 0
Курсор или Merge
    #39492084
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RMagistr2015время от времени в таблицу добавляются новые поля
не бойся, это время строго ограничено.
...
Рейтинг: 0 / 0
Курсор или Merge
    #39492117
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
123ййRMagistr2015время от времени в таблицу добавляются новые поля
не бойся, это время строго ограничено.
Старшие товарищи сказали, что мержить больше 1000 нельзя (( Иначе Дэд-Лок
...
Рейтинг: 0 / 0
Курсор или Merge
    #39492121
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RMagistr2015Старшие товарищи сказали, что мержить больше 1000 нельзя (( Иначе Дэд-ЛокСпасибо за ценную информацию, будем иметь в виду.
...
Рейтинг: 0 / 0
Курсор или Merge
    #39492126
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RMagistr2015Старшие товарищи сказали, что мержить больше 1000 нельзя (( Иначе Дэд-ЛокНе пора ли несущему ересь взять отпуск от форума?
...
Рейтинг: 0 / 0
Курсор или Merge
    #39492130
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKadRMagistr2015Старшие товарищи сказали, что мержить больше 1000 нельзя (( Иначе Дэд-ЛокСпасибо за ценную информацию, будем иметь в виду.
А вы как считаете? )))
...
Рейтинг: 0 / 0
Курсор или Merge
    #39492131
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic,

Спасибо тебе за помощь, Elic )))
...
Рейтинг: 0 / 0
Курсор или Merge
    #39492135
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RMagistr2015А вы как считаете? )))
мы полагаемся на мнение, что
RMagistr2015Старшие товарищи сказали
...
Рейтинг: 0 / 0
Курсор или Merge
    #39492138
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
123ййRMagistr2015А вы как считаете? )))
мы полагаемся на мнение, что
RMagistr2015Старшие товарищи сказали
Ясно, Всем спасибо большое ))))
...
Рейтинг: 0 / 0
Курсор или Merge
    #39492145
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
123ййRMagistr2015А вы как считаете? )))
мы полагаемся на мнение, что
RMagistr2015Старшие товарищи сказали
Но у меня ощущения, что что-то важное было упущено, в ссылке на похожую тему говорилось, что можно как-то сократить время выполнения merge, я не всё понял оттуда, но по всему видно что merge очень уобный, но существуют риски что это будет очень модленно.
Так же наткнулся на статью, где говорилось о создании похожей таблицы и проведении всех манипуляций уже с ней, и только потом подмена первоначальной на новую с раздачей всех грантов.
как жежь всё так поступить? Есть ли какой-то правильный способ использовать эти инструменты? ))
...
Рейтинг: 0 / 0
Курсор или Merge
    #39492146
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKadRMagistr2015Старшие товарищи сказали, что мержить больше 1000 нельзя (( Иначе Дэд-ЛокСпасибо за ценную информацию, будем иметь в виду.
Можно спросить, а в чем заключется ценность данной информации? ))))
...
Рейтинг: 0 / 0
Курсор или Merge
    #39492147
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нуфьсо.
Если старшие товарищи сказали дед Лок - значит дед Лок.
Это плохо, наверное, да?
Побегу срочно переделывать все ETLи, а то мерджат, собаки, по 10-20 миллионов за один присест...
...
Рейтинг: 0 / 0
Курсор или Merge
    #39492148
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RMagistr2015Есть ли какой-то правильный способ использовать эти инструменты? ))Решение к задаче подбирается только после ее постановки.
...
Рейтинг: 0 / 0
Курсор или Merge
    #39492153
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousНуфьсо.
Если старшие товарищи сказали дед Лок - значит дед Лок.
Это плохо, наверное, да?
Побегу срочно переделывать все ETLи, а то мерджат, собаки, по 10-20 миллионов за один присест...
))))))))))))))))))))))))))))
...
Рейтинг: 0 / 0
Курсор или Merge
    #39492181
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKad,

Вы правы, с этого и надо было начать )))
Есть две таблицы operation в двух БД по ДБ-линку, достаточно большие, записей больше миллиона, много столбцов, почти на всех fk-ключи, есть pk
недавно добавили новый столбец в двух БД в этих таблицах
Синхронизация происходит по джобу, но с какого-то момента, эти таблицы перестали синхронизироваться совсем.
Была проблема с датами, вроде удалось решить
теперь почему-то курсор не отрабатывает, думал переписать под merge, но не знаю как быстро это может отрабатывать.
Логика следующая - берётся select за определённый интервал с последней даты синхронизации по текущую, и по нму бежит курсор и уже update и insert

Вот. На сколько я понял, merge может так же мержить от этого селекта за последний интервал времени, однако кол-во записей м.б. больше 1000 за указанный период времени...
...
Рейтинг: 0 / 0
Курсор или Merge
    #39492236
=nomad=
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У вас БД на линках - обе Oracle?
...
Рейтинг: 0 / 0
Курсор или Merge
    #39492248
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
=nomad=У вас БД на линках - обе Oracle?
Да
...
Рейтинг: 0 / 0
Курсор или Merge
    #39492282
=nomad=
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это разовое действие? Может просто тогда склонировать одну таблицу в другую? А потом пусть работает ваш джоб-синхронизатор?
...
Рейтинг: 0 / 0
Курсор или Merge
    #39492303
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
=nomad=Это разовое действие? Может просто тогда склонировать одну таблицу в другую? А потом пусть работает ваш джоб-синхронизатор?
Может быть, но он не синхронизирует, а должен, там курсор стоит, почему он не отрабатывает не могу понять, хотел переписать на merge, но не знаю, будет ли тормозить или нет (((
...
Рейтинг: 0 / 0
Курсор или Merge
    #39492304
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RMagistr2015теперь почему-то курсор не отрабатывает

вот с етим надо разобраться

бо если не отработает мерже, то будет сложнее найти почему-то

ps
дедлок при больше 1000, ето шютка Ваших товарищей

.....
stax
...
Рейтинг: 0 / 0
Курсор или Merge
    #39492394
=nomad=
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stax..ето шютка Ваших товарищей
Может не совсем так. Видя как RMagistr2015 задает вопросы, то может они отвечали не на тот вопрос, или не так, как тут приведено, или что-то другое.
Например, у меня был deadlock, когда я попробовал merge делать с базы ms sql. Или Doc ID 5970280.8 исправление патча для Oracle 10/11. Ну и так далее.
...
Рейтинг: 0 / 0
Курсор или Merge
    #39492406
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
=nomad=stax..ето шютка Ваших товарищей
Может не совсем так. Видя как RMagistr2015 задает вопросы, то может они отвечали не на тот вопрос, или не так, как тут приведено, или что-то другое.
Например, у меня был deadlock, когда я попробовал merge делать с базы ms sql. Или Doc ID 5970280.8 исправление патча для Oracle 10/11. Ну и так далее.
Спасибо Вам большое )))
Буду рад почитать ваш "API" по задаванию Вам вопросов )))
API-query - connecting peoples ;-)))
...
Рейтинг: 0 / 0
Курсор или Merge
    #39492443
Evgeny2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
RMagistr2015AmKad,

Вы правы, с этого и надо было начать )))
Есть две таблицы operation в двух БД по ДБ-линку, достаточно большие, записей больше миллиона, много столбцов, почти на всех fk-ключи, есть pk
недавно добавили новый столбец в двух БД в этих таблицах
Синхронизация происходит по джобу, но с какого-то момента, эти таблицы перестали синхронизироваться совсем.
Была проблема с датами, вроде удалось решить
теперь почему-то курсор не отрабатывает, думал переписать под merge, но не знаю как быстро это может отрабатывать.
Логика следующая - берётся select за определённый интервал с последней даты синхронизации по текущую, и по нму бежит курсор и уже update и insert

Вот. На сколько я понял, merge может так же мержить от этого селекта за последний интервал времени, однако кол-во записей м.б. больше 1000 за указанный период времени...

Ты сначала из удаленной БД сделай выгрузку таблицы по предикату изменения на свою сторону в GTT (on commit preserve rows).
Потом merge на своей стороне с факторной таблицей и GTT.

Если merge будет делаться долго и будет вылетать на snapshot too old.
То разбей с цикле по периодам времени. (не сколько я понимаю в таблице есть время)
И выполняй себе спокойно.
В пакете сделай логирование в спец таблицу, чтобы контролировать время выполнения каждого DML и сообщений об ошибках.
...
Рейтинг: 0 / 0
Курсор или Merge
    #39492463
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Evgeny2RMagistr2015AmKad,

Вы правы, с этого и надо было начать )))
Есть две таблицы operation в двух БД по ДБ-линку, достаточно большие, записей больше миллиона, много столбцов, почти на всех fk-ключи, есть pk
недавно добавили новый столбец в двух БД в этих таблицах
Синхронизация происходит по джобу, но с какого-то момента, эти таблицы перестали синхронизироваться совсем.
Была проблема с датами, вроде удалось решить
теперь почему-то курсор не отрабатывает, думал переписать под merge, но не знаю как быстро это может отрабатывать.
Логика следующая - берётся select за определённый интервал с последней даты синхронизации по текущую, и по нму бежит курсор и уже update и insert

Вот. На сколько я понял, merge может так же мержить от этого селекта за последний интервал времени, однако кол-во записей м.б. больше 1000 за указанный период времени...

Ты сначала из удаленной БД сделай выгрузку таблицы по предикату изменения на свою сторону в GTT (on commit preserve rows).
Потом merge на своей стороне с факторной таблицей и GTT.

Если merge будет делаться долго и будет вылетать на snapshot too old.
То разбей с цикле по периодам времени. (не сколько я понимаю в таблице есть время)
И выполняй себе спокойно.
В пакете сделай логирование в спец таблицу, чтобы контролировать время выполнения каждого DML и сообщений об ошибках.
К этой мысли я то же приходил, спасибо Вам большое )))) Очень дельный совет )))
...
Рейтинг: 0 / 0
Курсор или Merge
    #39492758
Evgeny2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
RMagistr2015Evgeny2пропущено...


Ты сначала из удаленной БД сделай выгрузку таблицы по предикату изменения на свою сторону в GTT (on commit preserve rows).
Потом merge на своей стороне с факторной таблицей и GTT.

Если merge будет делаться долго и будет вылетать на snapshot too old.
То разбей с цикле по периодам времени. (не сколько я понимаю в таблице есть время)
И выполняй себе спокойно.
В пакете сделай логирование в спец таблицу, чтобы контролировать время выполнения каждого DML и сообщений об ошибках.
К этой мысли я то же приходил, спасибо Вам большое )))) Очень дельный совет )))

Как успехи? какое время показывает синхронизация?
...
Рейтинг: 0 / 0
Курсор или Merge
    #39492777
IgorSm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А мы поймали нефиговый баг(особенность) при использовании merge на OWM-таблицах (versioned)
Записал прям напрямую в LT-таблицы минуя Workspace.
Больше не используем )
--
Ну и цитата

Unfortunately the merge operation does not currently work with versioned tables. The optimizer translates the merge into insert/update statements on the underlying _LT table. As a result, the instead of triggers that are created during enableversioning are never fired.
https://community.oracle.com/thread/326110

P.S. Кстати, не в курсе поправили ли?
...
Рейтинг: 0 / 0
Курсор или Merge
    #39493755
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Evgeny2RMagistr2015пропущено...

К этой мысли я то же приходил, спасибо Вам большое )))) Очень дельный совет )))

Как успехи? какое время показывает синхронизация?
Пока отложил, думаю вернуться в свободное время )))
...
Рейтинг: 0 / 0
41 сообщений из 41, показаны все 2 страниц
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Курсор или Merge
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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