powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как ускорить MERGE?
25 сообщений из 96, страница 3 из 4
Как ускорить MERGE?
    #38942079
персонид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И в зависимости от длины строки и pctfree - можно получить кучу chained rows после раздувания строки на длину значения в personid
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38942165
Nobody1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dbms_photoshopЯ так нигде и не нашел описания почему при увеличении параллелизма может сильно "раздуваться" потребление темпа.
Не очень понимаю тут вопроса "почему". ИМХО, все естественно. Слэйвы обязаны координировать между собой только непересечение конечных результатов работы, а кухня у каждого своя, без учета, что таких слейвов еще N-цать. Хотя, конечно, по уму, ограниченность темпа при построении плана запроса стоило бы учитывать.
Ограничивать это как-то можно с помощью Automatic DOP и (против лома нет приема) прямым ограничением parallel на сессию с помощью Resource Manager.

....вообще, конечно, данный топик показывает выигрышный способ получить толковое обсуждение вопроса вместо сра dropping bricks - зарегистрироваться под женским именем. Истинность логина ТС никоим образом не подвергаю сомнению.
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38942186
E_Schekaturova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nobody1111,

😓 оскорбилась :-( меня приняли за мужика :D
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38942194
Nobody1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
E_SchekaturovaNobody1111,

😓 оскорбилась :-( меня приняли за мужика :D


Я ж написал - "Истинность логина ТС никоим образом не подвергаю сомнению".
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38942213
E_Schekaturova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nobody1111,

На самом деле, я очень довольна полученными ответами, много полезных советов, такому нубному нубу, как я))) я уже несколько предложений попробовали, эффекта немного
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38942343
E_Schekaturova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изя Кацман,

Значительно ускорился, не самолет, но уже намного лучше :) Спасибо
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38942434
Если нужен "самолет" выгрузите обе таблицы в другую БД создайте реплику изменения в COLLECT_FE.TELEPHONE, потом уже накатите эту реплику на вашу исходную базу. Можно даже сделать не самолет, а ракету...)) конечно, речь идет о БД in-memory решении...
как известном мульте "лучше день потерять, потом за 5 минут долететь"
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38942462
ora601
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поделюсь опытомконечно, речь идет о БД in-memory решении...
"

Обычно большой апдейт страдает от избыточности lio, а не от скорости доставки данных.
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38942557
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
персонидE_SchekaturovaAlexander Ryndin, кстати, индексов там целая куча, в т.ч. и PERSONID

попробуй еще эти (в которых есть PERSONID) индексы перед апдейтом отклюячить, а потом перестроить.

не согласен, индексы с PERSONID не надо трогать
я б даже сказал наоборот, добавить если нет

а вот с COLLECT_FE.TELEPHONE (CIFID ) ЕСЛИ можно я б грохнул/отключил и пересоздал
возможно на перестройку индекса и тратится основное время

персонидИ в зависимости от длины строки и pctfree - можно получить кучу chained rows после раздувания строки на длину значения в personid
причем тут personid, она ж меняет CIFID

да и при смене числа на число врядли получат кучу "chained rows"
хотя всякое бывает, из-за дурацкой економии блок пакуют под завязку

імхо надо пробовать
вплоть до банального
tel.PERSONID=prs.PERSONID and tel.CIFID <> prs.CIFID and rownum<100000 (подобрать)

но условие tel.CIFID <> prs.CIFID добавил БЫ почти по любому

......
stax
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38942573
E_Schekaturova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
stax..,

добавила и перезапустила свой трэш )
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38942578
Nobody1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
stax..персонидпропущено...


попробуй еще эти (в которых есть PERSONID) индексы перед апдейтом отклюячить, а потом перестроить.

не согласен, индексы с PERSONID не надо трогать
я б даже сказал наоборот, добавить если нет

а вот с COLLECT_FE.TELEPHONE (CIFID ) ЕСЛИ можно я б грохнул/отключил и пересоздал
возможно на перестройку индекса и тратится основное время
......
stax

+много,
индексы с первым столбцом PERSONID не будут тормозить, а остальные сессия при обновлении записей в таблице будет рекурсивно перебирать FULLSCAN-ами.
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38942587
E_Schekaturova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ORA-38104: Columns referenced in the ON Clause cannot be updated: "TEL"."CIFID"

таки ругается, что в фильтре обновляемое значение
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38942597
Фотография Павел Воронцов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
E_Schekaturova,

Перепиши на апдейт.
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38942624
E_Schekaturova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Павел Воронцов, так?

Код: sql
1.
2.
3.
4.
5.
6.
UPDATE (SELECT TEL.CIFID, PRS.CIFID AS CIFID_new
          FROM    COLLECT_FE.TELEPHONE tel
               JOIN
                  EXT_ESHCHEKATUROVA.PERSON_TEL prs
               ON TEL.PERSONID = PRS.PERSONID AND TEL.CIFID != PRS.CIFID) cif
   SET cif.CIFID = cif.CIFID_new
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38942650
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
E_SchekaturovaORA-38104: Columns referenced in the ON Clause cannot be updated: "TEL"."CIFID"

таки ругается, что в фильтре обновляемое значение
Код: plsql
1.
UPDATE SET tel.CIFID = prs.CIFID where tel.CIFID <> prs.CIFID;
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38942669
E_Schekaturova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dbms_photoshop,

хехъ) исправила) благодарю
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38942687
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
E_SchekaturovaORA-38104: Columns referenced in the ON Clause cannot be updated: "TEL"."CIFID"

таки ругается, что в фильтре обновляемое значение
сначала надо проанализировать, если у Вас скажем совпадений 100штук то не стоит и проверять

если "много" то надо

да, я забыл указать что пользуюсь "обычным" update + insert если надо

отсюда и возник форал если условие для update неудобное

раз у вас проходит мерже, то скорее всего ext_eshchekaturova.PERSON_tel(personid)
можно сделать ПК (шоб не лезло в таблицу PERSONID,CIFID или ИОТ)

и я б менял примерно так

Код: plsql
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.
SQL> set autotrace on exp
SQL> update (select tel.CIFID tc , prs.CIFID pc
  2  from t1 tel,t2 prs where
  3  tel.PERSONID=prs.PERSONID and tel.CIFID <> prs.CIFID
  4  ) set tc=pc
  5  /

3 rows updated.


Execution Plan
----------------------------------------------------------
Plan hash value: 661863262

-----------------------------------------------------------------------------------------------
| Id  | Operation                     | Name          | Rows  | Bytes | Cost (%CPU)| Time     |
-----------------------------------------------------------------------------------------------
|   0 | UPDATE STATEMENT              |               |     5 |   260 |     4   (0)| 00:00:01 |
|   1 |  UPDATE                       | T1            |       |       |            |          |
|   2 |   NESTED LOOPS                |               |       |       |            |          |
|   3 |    NESTED LOOPS               |               |     5 |   260 |     4   (0)| 00:00:01 |
|   4 |     TABLE ACCESS FULL         | T1            |     6 |   156 |     3   (0)| 00:00:01 |
|*  5 |     INDEX UNIQUE SCAN         | SYS_C00973114 |     1 |       |     1   (0)| 00:00:01 |
|*  6 |    TABLE ACCESS BY INDEX ROWID| T2            |     1 |    26 |     1   (0)| 00:00:01 |
-----------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   5 - access("TEL"."PERSONID"="PRS"."PERSONID")
   6 - filter("TEL"."CIFID"<>"PRS"."CIFID")



зы
можно через where exists ..., короче надо пробовать
и не забывать про индексы с CIFID у приемника и триггера "пустишки" тож могут сильно притормозить



.....
stax
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38942693
E_Schekaturova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
stax..,

совпадений не десятки далеко, а миллионы.
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38942694
персонид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
stax..персонидпропущено...
попробуй еще эти (в которых есть PERSONID) индексы перед апдейтом отклюячить, а потом перестроить.

не согласен, индексы с PERSONID не надо трогать
я б даже сказал наоборот, добавить если нет

а вот с COLLECT_FE.TELEPHONE (CIFID ) ЕСЛИ можно я б грохнул/отключил и пересоздал
возможно на перестройку индекса и тратится основное время

персонидИ в зависимости от длины строки и pctfree - можно получить кучу chained rows после раздувания строки на длину значения в personid
причем тут personid, она ж меняет CIFID

да и при смене числа на число врядли получат кучу "chained rows"
хотя всякое бывает, из-за дурацкой економии блок пакуют под завязку

stax

Да, конечно, CIFID (смотрю в книгу - вижу... и далее по тексту).


про pctfree я говорил потому что

E_Schekaturova Спасибо! :)
И , соответственно, добавит новый CIFID в TELEPHONE, если там поле пустое?
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38942727
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
E_Schekaturovastax..,

совпадений не десятки далеко, а миллионы.
тогда update і свою табличку с ПК PERSONID,CIFID (или ИОТ)
должно помочь,
оракля если зачения совпадают всеравно меняет со всем своим наворотом

мож и в обычную квоту на ТС влезете
да и время в разы должно уменьшиться

ДБА (если есть) должны помочь, мож есть смысл разбить на порции напр по 100тысч
.....
stax
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38942734
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nobody1111dbms_photoshopЯ так нигде и не нашел описания почему при увеличении параллелизма может сильно "раздуваться" потребление темпа.
Не очень понимаю тут вопроса "почему". ИМХО, все естественно. Слэйвы обязаны координировать между собой только непересечение конечных результатов работы, а кухня у каждого своя, без учета, что таких слейвов еще N-цать. Хотя, конечно, по уму, ограниченность темпа при построении плана запроса стоило бы учитывать.
Ограничивать это как-то можно с помощью Automatic DOP и (против лома нет приема) прямым ограничением parallel на сессию с помощью Resource Manager.

....вообще, конечно, данный топик показывает выигрышный способ получить толковое обсуждение вопроса вместо сра dropping bricks - зарегистрироваться под женским именем. Истинность логина ТС никоим образом не подвергаю сомнению.Дядя Том в принципе на пальцах все хорошо рассказывает
https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:374218170986#2653212400346307852 each parallel execution server will need it's own temp space and the coordinator could need its own and each parallel execution server might need as much (or more since they get less RAM overall to use - each one does) temp as the single thread did.

For a query like that - we would pick the smaller of the two tables and full scan/hash it. Each parallel execution server might have to spill that to temp (whereas in single threaded mode, just one would)

It is very very very easy for parallel query to require considerably more of every resource than a single threaded query.А мой топик на эту тему на форумах oracle.com где-то затерялся ну и ладно. :)
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38942744
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
E_SchekaturovaИ , соответственно, добавит новый CIFID в TELEPHONE, если там поле пустое?

ой, проморгал
если там поле пустое, то не добавит, а заменит

условие update тогда надо поменять
напр на
nvl(tel.CIFID,-1e111) <> prs.CIFID


.....
stax
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38942766
ArtNick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я прошу прощения, а что у Вас за база? DSS,OLAP, OLTP? Если честно, то воспользовавшись некоторыми советами, например про PARALLEL DML, Вы рискуете убить OLTP. А APPEND её убъет гарантированно.
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38942780
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtNickЯ прошу прощения, а что у Вас за база? DSS,OLAP, OLTP? Если честно, то воспользовавшись некоторыми советами, например про PARALLEL DML, Вы рискуете убить OLTP. А APPEND её убъет гарантированно.Про APPEND особенно оригинально.

Тебе лучше в менеджеры идти если любишь порассуждать о различии OLAP vs OLTP и когда первое становится вторым и наоборот.
А у меня одна из систем и OLTP и OLAP, так что теперь не использовать параллельность? Или просто боятся "риска смерти"?

PS
E_Schekaturovaвсе операции будут производиться в схеме collect_fe 1 раз в месяц
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38942782
E_Schekaturova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ArtNick,

APPEND убрала по рекомендациям выше. База - OLTP
...
Рейтинг: 0 / 0
25 сообщений из 96, страница 3 из 4
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как ускорить MERGE?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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