|
Как ускорить MERGE?
|
|||
---|---|---|---|
#18+
Добрый день. Прошу оказать посильную помощь. 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.
Подскажите, пожалуйста, как ускорить работу мёрджа хотя бы вполовину? Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2015, 11:35 |
|
Как ускорить MERGE?
|
|||
---|---|---|---|
#18+
E_SchekaturovaОценочное время - 220 000миллисекунд? вполне быстро для 17млн, если сервер не всякие экзадаты. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2015, 11:51 |
|
Как ускорить MERGE?
|
|||
---|---|---|---|
#18+
кем оценочное?E_SchekaturovaОценочное время - 220 000миллисекунд? вполне быстро для 17млн, если сервер не всякие экзадаты. В Toad, в Long Ops смотрю. В плане cost более 1 млн ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2015, 11:53 |
|
Как ускорить MERGE?
|
|||
---|---|---|---|
#18+
E_Schekaturova, если бизнес логика позволяет, то в on() можно пофильтровать и большую и меньшую таблицу ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2015, 11:53 |
|
Как ускорить MERGE?
|
|||
---|---|---|---|
#18+
йазабылпадписаццо, аселE_Schekaturova, если бизнес логика позволяет, то в on() можно пофильтровать и большую и меньшую таблицу Хм. Ну да. Забыла то, что там по типам телефонов таблица разбита. Спасибо. Попробую сейчас ) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2015, 11:55 |
|
Как ускорить MERGE?
|
|||
---|---|---|---|
#18+
Помогло не сильно. 178 тыс сек. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2015, 14:01 |
|
Как ускорить MERGE?
|
|||
---|---|---|---|
#18+
E_Schekaturova, Что с планом? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2015, 14:11 |
|
Как ускорить MERGE?
|
|||
---|---|---|---|
#18+
E_Schekaturova, еще (очевидно ;) - не надо переписывать то, что совпадает ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2015, 14:11 |
|
Как ускорить MERGE?
|
|||
---|---|---|---|
#18+
E_Schekaturova, непонятно, сколько записей из 54 млн будут обновляться. по-хорошему следовало бы навесить уникальность на PERSON_tel(PERSONID), тогда у оракла больше возможностей было бы построить оптимальный план ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2015, 14:25 |
|
Как ускорить MERGE?
|
|||
---|---|---|---|
#18+
xtenderпо-хорошему следовало бы навесить уникальность на PERSON_tel(PERSONID)хотя что-то я наврал тут - с merge key-preserved проверяется и без этого ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2015, 14:30 |
|
Как ускорить MERGE?
|
|||
---|---|---|---|
#18+
xtenderxtenderпо-хорошему следовало бы навесить уникальность на PERSON_tel(PERSONID)хотя что-то я наврал тут - с merge key-preserved проверяется и без этого а я только обрадовалась ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2015, 14:35 |
|
Как ускорить MERGE?
|
|||
---|---|---|---|
#18+
По мне так на COLLECT_FE.TELEPHONE должен быть индекс. Код: plsql 1. 2. 3. 4.
Мы бежим full scan по таблице ext_eshchekaturova.PERSON_tel и делаем lookup в таблице COLLECT_FE.TELEPHONE. При совпадении обновляем. Хинт APPEND там ни к чему. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2015, 14:54 |
|
Как ускорить MERGE?
|
|||
---|---|---|---|
#18+
Alexander RyndinПо мне так на COLLECT_FE.TELEPHONE должен быть индекс. Код: plsql 1. 2. 3. 4.
Мы бежим full scan по таблице ext_eshchekaturova.PERSON_tel и делаем lookup в таблице COLLECT_FE.TELEPHONE. При совпадении обновляем. Хинт APPEND там ни к чему. Спасибо! :) И , соответственно, добавит новый CIFID в TELEPHONE, если там поле пустое? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2015, 14:56 |
|
Как ускорить MERGE?
|
|||
---|---|---|---|
#18+
Alexander Ryndin, кстати, индексов там целая куча, в т.ч. и PERSONID ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2015, 14:57 |
|
Как ускорить MERGE?
|
|||
---|---|---|---|
#18+
E_Schekaturova, А что покажет Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2015, 14:58 |
|
Как ускорить MERGE?
|
|||
---|---|---|---|
#18+
E_SchekaturovaAlexander Ryndin, кстати, индексов там целая куча, в т.ч. и PERSONIDМожет невалидные? Что со статистикой? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2015, 14:59 |
|
Как ускорить MERGE?
|
|||
---|---|---|---|
#18+
А чего не просто апдейт? ) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2015, 15:02 |
|
Как ускорить MERGE?
|
|||
---|---|---|---|
#18+
Или если в ext_eshchekaturova.person_tel немного записей, то отталкиваться именно от нее, типа загнать в коллекцию и форалом не? ) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2015, 15:04 |
|
Как ускорить MERGE?
|
|||
---|---|---|---|
#18+
Анукадевушки, потому что требуется не только обновить, но и добавить значения в пустые поля ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2015, 15:07 |
|
Как ускорить MERGE?
|
|||
---|---|---|---|
#18+
Анукадевушки, не считаю 17 млн записей малым количеством ;-) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2015, 15:08 |
|
Как ускорить MERGE?
|
|||
---|---|---|---|
#18+
Alexander Ryndin, должны быть валидными, это всё-таки срез с боевой базы ) статистику сейчас гляну ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2015, 15:10 |
|
Как ускорить MERGE?
|
|||
---|---|---|---|
#18+
Павел ВоронцовE_Schekaturova, А что покажет Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
? ---- 11 943 313 ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2015, 15:16 |
|
Как ускорить MERGE?
|
|||
---|---|---|---|
#18+
E_Schekaturova---- 11 943 313Это первый, а второй? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2015, 15:19 |
|
Как ускорить MERGE?
|
|||
---|---|---|---|
#18+
E_SchekaturovaАнукадевушки, потому что требуется не только обновить, но и добавить значения в пустые поля Апдейт обычно добавляет значения в пустые поля. В Вашем запросе NOT MATCHED не определен, так что полный аналог Update-а ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2015, 15:19 |
|
|
start [/forum/topic.php?fid=52&msg=38941635&tid=1880955]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
107ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 234ms |
0 / 0 |