powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как ускорить MERGE?
25 сообщений из 96, страница 1 из 4
Как ускорить MERGE?
    #38941418
E_Schekaturova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Прошу оказать посильную помощь.

2 таблицы: COLLECT_FE.TELEPHONE 54 млн записей
ext_eshchekaturova.PERSON_tel - 17 млн записей, 2 поля: CIFID и PERSONID (индекс в 1й таблице)

Запускаю обычный MERGE... Оценочное время - 220 000 - это может сказаться на регламентных процессах :(

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
MERGE --+APPEND
INTO COLLECT_FE.TELEPHONE tel
 USING ext_eshchekaturova.PERSON_tel prs
 ON (tel.PERSONID=prs.PERSONID)
WHEN MATCHED
THEN
   UPDATE SET tel.CIFID = prs.CIFID;
commit;



Подскажите, пожалуйста, как ускорить работу мёрджа хотя бы вполовину?

Спасибо.
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38941435
E_SchekaturovaОценочное время - 220 000миллисекунд?
вполне быстро для 17млн, если сервер не всякие экзадаты.
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38941439
E_Schekaturova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
кем оценочное?E_SchekaturovaОценочное время - 220 000миллисекунд?
вполне быстро для 17млн, если сервер не всякие экзадаты.

В Toad, в Long Ops смотрю.
В плане cost более 1 млн
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38941440
E_Schekaturova,

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

если бизнес логика позволяет, то в on() можно пофильтровать и большую и меньшую таблицу

Хм. Ну да. Забыла то, что там по типам телефонов таблица разбита. Спасибо.
Попробую сейчас )
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38941583
E_Schekaturova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогло не сильно. 178 тыс сек.
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38941593
Alexander Ryndin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
E_Schekaturova,

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

еще (очевидно ;) - не надо переписывать то, что совпадает
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38941607
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
E_Schekaturova,

непонятно, сколько записей из 54 млн будут обновляться. по-хорошему следовало бы навесить уникальность на PERSON_tel(PERSONID), тогда у оракла больше возможностей было бы построить оптимальный план
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38941612
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
xtenderпо-хорошему следовало бы навесить уникальность на PERSON_tel(PERSONID)хотя что-то я наврал тут - с merge key-preserved проверяется и без этого
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38941617
E_Schekaturova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
xtenderxtenderпо-хорошему следовало бы навесить уникальность на PERSON_tel(PERSONID)хотя что-то я наврал тут - с merge key-preserved проверяется и без этого

а я только обрадовалась
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38941621
E_Schekaturova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexander Ryndin,
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38941634
Alexander Ryndin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По мне так на COLLECT_FE.TELEPHONE должен быть индекс.
Код: plsql
1.
2.
3.
4.
MERGE --+APPEND
INTO COLLECT_FE.TELEPHONE tel
 USING ext_eshchekaturova.PERSON_tel prs
 ON (tel.PERSONID=prs.PERSONID)

Мы бежим full scan по таблице ext_eshchekaturova.PERSON_tel и делаем lookup в таблице COLLECT_FE.TELEPHONE. При совпадении обновляем.
Хинт APPEND там ни к чему.
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38941635
E_Schekaturova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexander RyndinПо мне так на COLLECT_FE.TELEPHONE должен быть индекс.
Код: plsql
1.
2.
3.
4.
MERGE --+APPEND
INTO COLLECT_FE.TELEPHONE tel
 USING ext_eshchekaturova.PERSON_tel prs
 ON (tel.PERSONID=prs.PERSONID)

Мы бежим full scan по таблице ext_eshchekaturova.PERSON_tel и делаем lookup в таблице COLLECT_FE.TELEPHONE. При совпадении обновляем.
Хинт APPEND там ни к чему.

Спасибо! :)
И , соответственно, добавит новый CIFID в TELEPHONE, если там поле пустое?
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38941639
E_Schekaturova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexander Ryndin, кстати, индексов там целая куча, в т.ч. и PERSONID
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38941641
Фотография Павел Воронцов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
E_Schekaturova,

А что покажет
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select count(tel.*) from
COLLECT_FE.TELEPHONE tel,
ext_eshchekaturova.PERSON_tel per
where tel.personid=per.personid
/

select count(distinct per.personid) from
ext_eshchekaturova.PERSON_tel per
where exists(select 1 from COLLECT_FE.TELEPHONE tel where tel.personid=per.personid)
/

?
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38941642
Alexander Ryndin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
E_SchekaturovaAlexander Ryndin, кстати, индексов там целая куча, в т.ч. и PERSONIDМожет невалидные? Что со статистикой?
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38941646
А чего не просто апдейт? )
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38941650
Или если в ext_eshchekaturova.person_tel немного записей, то отталкиваться именно от нее, типа загнать в коллекцию и форалом не? )
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38941654
E_Schekaturova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Анукадевушки, потому что требуется не только обновить, но и добавить значения в пустые поля
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38941655
E_Schekaturova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Анукадевушки, не считаю 17 млн записей малым количеством ;-)
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38941659
E_Schekaturova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexander Ryndin,

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

А что покажет
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select count(tel.*) from
COLLECT_FE.TELEPHONE tel,
ext_eshchekaturova.PERSON_tel per
where tel.personid=per.personid
/

select count(distinct per.personid) from
ext_eshchekaturova.PERSON_tel per
where exists(select 1 from COLLECT_FE.TELEPHONE tel where tel.personid=per.personid)
/

?

----
11 943 313
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38941669
Фотография Павел Воронцов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
E_Schekaturova----
11 943 313Это первый, а второй?
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38941670
ArtNick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
E_SchekaturovaАнукадевушки, потому что требуется не только обновить, но и добавить значения в пустые поля
Апдейт обычно добавляет значения в пустые поля. В Вашем запросе NOT MATCHED не определен, так что полный аналог Update-а
...
Рейтинг: 0 / 0
25 сообщений из 96, страница 1 из 4
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как ускорить MERGE?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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