|
|
|
Курсор или Merge
|
|||
|---|---|---|---|
|
#18+
Что лучше использовать? Курсор или Merge? ) При таблицах с кол-вом записей от миллиона? Вопрос синхронизации...? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 07:41 |
|
||
|
Курсор или Merge
|
|||
|---|---|---|---|
|
#18+
http://www.bugtraq.ru/forum/faq/general/smart-questions.html] RTFM ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 07:47 |
|
||
|
Курсор или Merge
|
|||
|---|---|---|---|
|
#18+
Elic http://www.bugtraq.ru/forum/faq/general/smart-questions.html] RTFM Спасибо, полезная информация ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 08:09 |
|
||
|
Курсор или Merge
|
|||
|---|---|---|---|
|
#18+
Лучше использовать merge. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 08:28 |
|
||
|
Курсор или Merge
|
|||
|---|---|---|---|
|
#18+
Evgeny2Лучше использовать merge. Бытует мнение, что при больших таблицах, это может привести к жутчайшим тормазам, если взять две таблицы с большим объёмом данных и опытаться их смержить... Так ли это? И поэтому в подобных случаях иногда применяются курсоры, например написан некоторый код, где insert и update происходит в курсоре, если да же и так, то целесообразность курсора объясняется тем, что при возникновении взбоя, хоть что-нибудь дозапишется, но так ли это быстро, как использовать простые insert и update без курсоров, ведь сам по себе курсор ещё занимает место в памяти.....? К тому же обычно в конце курсоров пишут commit или rollback, если что-то пошло не так, а значит это откатит и да же то, что удалось изменить до возникновения ошибки.... В связи с вышесказанным, думаю что лучше использовать просто Update и insert, а потом делать commit, хотя по сути merge то же самое, но как тогда относиться к рекомендациям что merge очень сильно тормозит при больших объемах данных??? 0_0 ((( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 08:38 |
|
||
|
Курсор или Merge
|
|||
|---|---|---|---|
|
#18+
RMagistr2015Бытует мнениеRMagistr2015К тому же обычноRMagistr2015но как тогда относиться к рекомендациямТебе не стоит задумываться о том, что написано на заборах. Разница между быдлокодом и говнокодом всё равно будет минимальна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 08:47 |
|
||
|
Курсор или Merge
|
|||
|---|---|---|---|
|
#18+
ElicRMagistr2015Бытует мнениеRMagistr2015К тому же обычноRMagistr2015но как тогда относиться к рекомендациямТебе не стоит задумываться о том, что написано на заборах. Разница между быдлокодом и говнокодом всё равно будет минимальна. )))) Понятно ))) Т.е. вы хотите сказать что лучше использовать merge для таблиц с кол-вом записей больше миллиона и это не приведёт к тормазам? Т.е. ничего на сервере не повиснет и не умрет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 08:50 |
|
||
|
Курсор или Merge
|
|||
|---|---|---|---|
|
#18+
RMagistr2015Т.е. вы хотите сказать чтоты не умеешь и не научишься критически делать выводы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 08:56 |
|
||
|
Курсор или Merge
|
|||
|---|---|---|---|
|
#18+
ElicRMagistr2015Т.е. вы хотите сказать чтоты не умеешь и не научишься критически делать выводы. Спасибо Вам за вашу помощь, ну а что мы сейчас делаем ))) Критическое мышление — способ мышления, при котором человек ставит под сомнение поступающую информацию, собственные убеждения. (с) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 09:01 |
|
||
|
Курсор или Merge
|
|||
|---|---|---|---|
|
#18+
Вот тут] http://www.sql.ru/forum/1153088-a/kak-uskorit-merge много вариантов оптимизации. Нужно проверить и выбрать свой для своей задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 09:05 |
|
||
|
Курсор или Merge
|
|||
|---|---|---|---|
|
#18+
RMagistr2015Что лучше использовать? Курсор или Merge? ) При таблицах с кол-вом записей от миллиона? Вопрос синхронизации...? Merge меняет миллион записей? ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 09:36 |
|
||
|
Курсор или Merge
|
|||
|---|---|---|---|
|
#18+
=nomad=Вот тут] http://www.sql.ru/forum/1153088-a/kak-uskorit-merge много вариантов оптимизации. Нужно проверить и выбрать свой для своей задачи. Спасибо большое )))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 09:36 |
|
||
|
Курсор или Merge
|
|||
|---|---|---|---|
|
#18+
stax..RMagistr2015Что лучше использовать? Курсор или Merge? ) При таблицах с кол-вом записей от миллиона? Вопрос синхронизации...? Merge меняет миллион записей? ..... stax Простите, не совсем понял Ваш вопрос сейчас ((( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 09:37 |
|
||
|
Курсор или Merge
|
|||
|---|---|---|---|
|
#18+
RMagistr2015stax..пропущено... Merge меняет миллион записей? ..... stax Простите, не совсем понял Ваш вопрос сейчас ((( в результате виполнения merge сколько строк поменяется? ps імхо использовать merge или нет зависит от задачи ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 09:51 |
|
||
|
Курсор или Merge
|
|||
|---|---|---|---|
|
#18+
stax..RMagistr2015пропущено... Простите, не совсем понял Ваш вопрос сейчас ((( в результате виполнения merge сколько строк поменяется? ps імхо использовать merge или нет зависит от задачи ..... stax не все это точно - сколько именно сказать не могу Так же существует момент - время от времени в таблицу добавляются новые поля ((( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 10:00 |
|
||
|
Курсор или Merge
|
|||
|---|---|---|---|
|
#18+
RMagistr2015время от времени в таблицу добавляются новые поля не бойся, это время строго ограничено. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 10:11 |
|
||
|
Курсор или Merge
|
|||
|---|---|---|---|
|
#18+
123ййRMagistr2015время от времени в таблицу добавляются новые поля не бойся, это время строго ограничено. Старшие товарищи сказали, что мержить больше 1000 нельзя (( Иначе Дэд-Лок ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 10:43 |
|
||
|
Курсор или Merge
|
|||
|---|---|---|---|
|
#18+
RMagistr2015Старшие товарищи сказали, что мержить больше 1000 нельзя (( Иначе Дэд-ЛокСпасибо за ценную информацию, будем иметь в виду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 10:44 |
|
||
|
Курсор или Merge
|
|||
|---|---|---|---|
|
#18+
RMagistr2015Старшие товарищи сказали, что мержить больше 1000 нельзя (( Иначе Дэд-ЛокНе пора ли несущему ересь взять отпуск от форума? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 10:50 |
|
||
|
Курсор или Merge
|
|||
|---|---|---|---|
|
#18+
AmKadRMagistr2015Старшие товарищи сказали, что мержить больше 1000 нельзя (( Иначе Дэд-ЛокСпасибо за ценную информацию, будем иметь в виду. А вы как считаете? ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 10:52 |
|
||
|
Курсор или Merge
|
|||
|---|---|---|---|
|
#18+
Elic, Спасибо тебе за помощь, Elic ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 10:53 |
|
||
|
Курсор или Merge
|
|||
|---|---|---|---|
|
#18+
RMagistr2015А вы как считаете? ))) мы полагаемся на мнение, что RMagistr2015Старшие товарищи сказали ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 10:55 |
|
||
|
Курсор или Merge
|
|||
|---|---|---|---|
|
#18+
123ййRMagistr2015А вы как считаете? ))) мы полагаемся на мнение, что RMagistr2015Старшие товарищи сказали Ясно, Всем спасибо большое )))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 10:58 |
|
||
|
Курсор или Merge
|
|||
|---|---|---|---|
|
#18+
123ййRMagistr2015А вы как считаете? ))) мы полагаемся на мнение, что RMagistr2015Старшие товарищи сказали Но у меня ощущения, что что-то важное было упущено, в ссылке на похожую тему говорилось, что можно как-то сократить время выполнения merge, я не всё понял оттуда, но по всему видно что merge очень уобный, но существуют риски что это будет очень модленно. Так же наткнулся на статью, где говорилось о создании похожей таблицы и проведении всех манипуляций уже с ней, и только потом подмена первоначальной на новую с раздачей всех грантов. как жежь всё так поступить? Есть ли какой-то правильный способ использовать эти инструменты? )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 11:02 |
|
||
|
Курсор или Merge
|
|||
|---|---|---|---|
|
#18+
AmKadRMagistr2015Старшие товарищи сказали, что мержить больше 1000 нельзя (( Иначе Дэд-ЛокСпасибо за ценную информацию, будем иметь в виду. Можно спросить, а в чем заключется ценность данной информации? )))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 11:03 |
|
||
|
Курсор или Merge
|
|||
|---|---|---|---|
|
#18+
Нуфьсо. Если старшие товарищи сказали дед Лок - значит дед Лок. Это плохо, наверное, да? Побегу срочно переделывать все ETLи, а то мерджат, собаки, по 10-20 миллионов за один присест... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 11:03 |
|
||
|
Курсор или Merge
|
|||
|---|---|---|---|
|
#18+
RMagistr2015Есть ли какой-то правильный способ использовать эти инструменты? ))Решение к задаче подбирается только после ее постановки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 11:04 |
|
||
|
Курсор или Merge
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousНуфьсо. Если старшие товарищи сказали дед Лок - значит дед Лок. Это плохо, наверное, да? Побегу срочно переделывать все ETLи, а то мерджат, собаки, по 10-20 миллионов за один присест... )))))))))))))))))))))))))))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 11:06 |
|
||
|
Курсор или Merge
|
|||
|---|---|---|---|
|
#18+
AmKad, Вы правы, с этого и надо было начать ))) Есть две таблицы operation в двух БД по ДБ-линку, достаточно большие, записей больше миллиона, много столбцов, почти на всех fk-ключи, есть pk недавно добавили новый столбец в двух БД в этих таблицах Синхронизация происходит по джобу, но с какого-то момента, эти таблицы перестали синхронизироваться совсем. Была проблема с датами, вроде удалось решить теперь почему-то курсор не отрабатывает, думал переписать под merge, но не знаю как быстро это может отрабатывать. Логика следующая - берётся select за определённый интервал с последней даты синхронизации по текущую, и по нму бежит курсор и уже update и insert Вот. На сколько я понял, merge может так же мержить от этого селекта за последний интервал времени, однако кол-во записей м.б. больше 1000 за указанный период времени... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 11:26 |
|
||
|
Курсор или Merge
|
|||
|---|---|---|---|
|
#18+
У вас БД на линках - обе Oracle? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 12:17 |
|
||
|
Курсор или Merge
|
|||
|---|---|---|---|
|
#18+
=nomad=У вас БД на линках - обе Oracle? Да ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 12:25 |
|
||
|
Курсор или Merge
|
|||
|---|---|---|---|
|
#18+
Это разовое действие? Может просто тогда склонировать одну таблицу в другую? А потом пусть работает ваш джоб-синхронизатор? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 12:51 |
|
||
|
Курсор или Merge
|
|||
|---|---|---|---|
|
#18+
=nomad=Это разовое действие? Может просто тогда склонировать одну таблицу в другую? А потом пусть работает ваш джоб-синхронизатор? Может быть, но он не синхронизирует, а должен, там курсор стоит, почему он не отрабатывает не могу понять, хотел переписать на merge, но не знаю, будет ли тормозить или нет ((( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 13:01 |
|
||
|
Курсор или Merge
|
|||
|---|---|---|---|
|
#18+
RMagistr2015теперь почему-то курсор не отрабатывает вот с етим надо разобраться бо если не отработает мерже, то будет сложнее найти почему-то ps дедлок при больше 1000, ето шютка Ваших товарищей ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 13:02 |
|
||
|
Курсор или Merge
|
|||
|---|---|---|---|
|
#18+
stax..ето шютка Ваших товарищей Может не совсем так. Видя как RMagistr2015 задает вопросы, то может они отвечали не на тот вопрос, или не так, как тут приведено, или что-то другое. Например, у меня был deadlock, когда я попробовал merge делать с базы ms sql. Или Doc ID 5970280.8 исправление патча для Oracle 10/11. Ну и так далее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 14:19 |
|
||
|
Курсор или Merge
|
|||
|---|---|---|---|
|
#18+
=nomad=stax..ето шютка Ваших товарищей Может не совсем так. Видя как RMagistr2015 задает вопросы, то может они отвечали не на тот вопрос, или не так, как тут приведено, или что-то другое. Например, у меня был deadlock, когда я попробовал merge делать с базы ms sql. Или Doc ID 5970280.8 исправление патча для Oracle 10/11. Ну и так далее. Спасибо Вам большое ))) Буду рад почитать ваш "API" по задаванию Вам вопросов ))) API-query - connecting peoples ;-))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 14:35 |
|
||
|
Курсор или Merge
|
|||
|---|---|---|---|
|
#18+
RMagistr2015AmKad, Вы правы, с этого и надо было начать ))) Есть две таблицы operation в двух БД по ДБ-линку, достаточно большие, записей больше миллиона, много столбцов, почти на всех fk-ключи, есть pk недавно добавили новый столбец в двух БД в этих таблицах Синхронизация происходит по джобу, но с какого-то момента, эти таблицы перестали синхронизироваться совсем. Была проблема с датами, вроде удалось решить теперь почему-то курсор не отрабатывает, думал переписать под merge, но не знаю как быстро это может отрабатывать. Логика следующая - берётся select за определённый интервал с последней даты синхронизации по текущую, и по нму бежит курсор и уже update и insert Вот. На сколько я понял, merge может так же мержить от этого селекта за последний интервал времени, однако кол-во записей м.б. больше 1000 за указанный период времени... Ты сначала из удаленной БД сделай выгрузку таблицы по предикату изменения на свою сторону в GTT (on commit preserve rows). Потом merge на своей стороне с факторной таблицей и GTT. Если merge будет делаться долго и будет вылетать на snapshot too old. То разбей с цикле по периодам времени. (не сколько я понимаю в таблице есть время) И выполняй себе спокойно. В пакете сделай логирование в спец таблицу, чтобы контролировать время выполнения каждого DML и сообщений об ошибках. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 15:13 |
|
||
|
Курсор или Merge
|
|||
|---|---|---|---|
|
#18+
Evgeny2RMagistr2015AmKad, Вы правы, с этого и надо было начать ))) Есть две таблицы operation в двух БД по ДБ-линку, достаточно большие, записей больше миллиона, много столбцов, почти на всех fk-ключи, есть pk недавно добавили новый столбец в двух БД в этих таблицах Синхронизация происходит по джобу, но с какого-то момента, эти таблицы перестали синхронизироваться совсем. Была проблема с датами, вроде удалось решить теперь почему-то курсор не отрабатывает, думал переписать под merge, но не знаю как быстро это может отрабатывать. Логика следующая - берётся select за определённый интервал с последней даты синхронизации по текущую, и по нму бежит курсор и уже update и insert Вот. На сколько я понял, merge может так же мержить от этого селекта за последний интервал времени, однако кол-во записей м.б. больше 1000 за указанный период времени... Ты сначала из удаленной БД сделай выгрузку таблицы по предикату изменения на свою сторону в GTT (on commit preserve rows). Потом merge на своей стороне с факторной таблицей и GTT. Если merge будет делаться долго и будет вылетать на snapshot too old. То разбей с цикле по периодам времени. (не сколько я понимаю в таблице есть время) И выполняй себе спокойно. В пакете сделай логирование в спец таблицу, чтобы контролировать время выполнения каждого DML и сообщений об ошибках. К этой мысли я то же приходил, спасибо Вам большое )))) Очень дельный совет ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2017, 15:29 |
|
||
|
Курсор или Merge
|
|||
|---|---|---|---|
|
#18+
RMagistr2015Evgeny2пропущено... Ты сначала из удаленной БД сделай выгрузку таблицы по предикату изменения на свою сторону в GTT (on commit preserve rows). Потом merge на своей стороне с факторной таблицей и GTT. Если merge будет делаться долго и будет вылетать на snapshot too old. То разбей с цикле по периодам времени. (не сколько я понимаю в таблице есть время) И выполняй себе спокойно. В пакете сделай логирование в спец таблицу, чтобы контролировать время выполнения каждого DML и сообщений об ошибках. К этой мысли я то же приходил, спасибо Вам большое )))) Очень дельный совет ))) Как успехи? какое время показывает синхронизация? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2017, 08:46 |
|
||
|
Курсор или Merge
|
|||
|---|---|---|---|
|
#18+
А мы поймали нефиговый баг(особенность) при использовании 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. Кстати, не в курсе поправили ли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2017, 09:17 |
|
||
|
|

start [/forum/topic.php?all=1&fid=52&tid=1885555]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
153ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
71ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 475ms |

| 0 / 0 |
