powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как ускорить MERGE?
21 сообщений из 96, страница 4 из 4
Как ускорить MERGE?
    #38942805
ArtNick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshop,
Рекомендации oracle для использования parallel dml читали? Похоже что нет
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38942819
Судя по апдейту речь идет о некой денормализации базы?
Оно точно необходимо? Может лучше просто в селекте к telephone по personid доставать из person_tel cifid? )
Или по fk или вообще в кластер обе таблицы сложить может? )
Кстати может есть возможность объединить эти две таблички в кластер (сам не юзал правда) или вообще объединить? )
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38942826
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АнукадевушкиСудя по апдейту речь идет о некой денормализации базы?
Оно точно необходимо? Может лучше просто в селекте к telephone по personid доставать из person_tel cifid? )
Или по fk или вообще в кластер обе таблицы сложить может? )
Кстати может есть возможность объединить эти две таблички в кластер (сам не юзал правда) или вообще объединить? )
імхо
расcинхронизация, и раз в месяц выравнивают

без опыта работы, я бы кластер не советовал

.....
stax
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38942862
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtNickРекомендации oracle для использования parallel dml читали? Похоже что нетВместо того чтоб ставить диагнозы лучше подумай о том, что рассуждения о сферических конях в вакууме имеют практическую пользу чуть менее чем...
а вообще никакой пользы они не имеют.

Я тебе намекнул что деление olap/oltp может быть весьма условное и последующие рекомендации в отрыве от конкретной специки смысловой нагрузки не несут, в то же время и бредом их назвать нельзя.

Работал я с одним "архитектором".
Базы данных он знал средненько, за 5 лет работы он ни сделал ни-че-го кроме написания идиотских документов.

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

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

еще ни разу не сталкивалась с конструкцией nvl, где альтернативой является "-1e111", подскажите, как происходит замещение пустого значения при "-1e111". Непонятен принцип действия.
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38943264
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
E_Schekaturovastax..,

еще ни разу не сталкивалась с конструкцией nvl, где альтернативой является "-1e111", подскажите, как происходит замещение пустого значения при "-1e111". Непонятен принцип действия.
а что не понятно? число, как число. три байта,как три байта
Код: plsql
1.
select dump(-1e111) from dual;
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38943289
E_Schekaturova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
orawish,

не понимаю, почему при таком значении пустое значение апдейтится на непустое, а при tel.CIFID <> prs.CIFID не апдейтится.
Сорри, за нубство :(
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38943370
E_Schekaturova,

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

P.S. Сначала боялась писать сюда, потому что видела, что тут "опускают" неопытных товарищей :D рада, что к девушкам это не относится.
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38943400
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
E_Schekaturovaрада, что к девушкам это не относится.к "девушкам" без справки от гинеколога тут относятся с недоверием.
Дискуссия завязалась, так как задача была описана достаточно терпимо уже в первом сообщении и реакция на встречные вопросы адекватная.
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38943406
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
E_Schekaturovaorawish,

не понимаю, почему при таком значении пустое значение апдейтится на непустое, а при tel.CIFID <> prs.CIFID не апдейтится.
Сорри, за нубство :(
значение может быть любое, напр 0
главное условие шоб такого значения не было среди prs.CIFID

если у вас tel.CIFID IS NULL, a prs.CIFID=напр 500 то
то результатом выражение null <> 500 будет UNKNOWN что в оракле равноценно FALSE
а мы ожидаем TRUE, поетому пишут по разному
правильно возможно через LNNVL, но я к етой ф-ции не привык
сравните
Код: 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.
with t as(
select 1 tel,1 prs from dual union all
select 2 ,1  from dual union all
select 1 ,null  from dual union all
select null ,1  from dual union all
select null ,null  from dual )
select * from t where LNNVL(tel=prs)
SQL> /

       TEL        PRS
---------- ----------
         2          1
         1 null
null                1
null       null
SQL> ed
Wrote file afiedt.buf

  1  with t as(
  2  select 1 tel,1 prs from dual union all
  3  select 2 ,1  from dual union all
  4  select 1 ,null  from dual union all
  5  select null ,1  from dual union all
  6  select null ,null  from dual )
  7* select * from t where tel<>prs
SQL> /

       TEL        PRS
---------- ----------
         2          1




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

а! всё! поняла, как это происходит. Смутило именно -1E111, поэтому и запуталась. Спасибо еще раз!
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38943422
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
E_Schekaturovaтут "опускают" неопытных товарищейТолько непроходимых дур(аков).
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38943434
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stax..правильно возможно через LNNVLнеправильно. для этого случая оно проапдейтит null на null.
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38943484
Фотография suPPLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stax..то результатом выражение null <> 500 будет UNKNOWN что в оракле равноценно FALSE
Не надо так утрировать. UNKNOWN -- это UNKNOWN.
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38943810
ArtNick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshop,
Очень любопытная история с твоим архитектором. Не совсем ясно зачем она мне.
Собственно по теме oltp-olap-dwh-dss : разные подходы. Где-то можно прекрасно сэкономить на truncate-insert/*+ append*/ as select а где-то придется бить 17кк строк на короткие пачки с коммит.
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38943978
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtNick,

Попробую последнюю попытку.
Согласно теории информации существует такое определение (дословно гуглить облом)
Информация - есть мера уменьшения энтропии.

Твое высказывание очередное "Где-то можно прекрасно сэкономить на truncate-insert/*+ append*/ as select а где-то придется бить 17кк строк на короткие пачки с коммит" не вносит никакой определенности (энтропия не уменьшена), не несет собой смысловой нагрузки и соотвественно вообще информацией не является. Это шум. Просто набор байтов выкинутый в интернет.

Я уже сказал, что если есть желание обсудить сферическую систему в вакууме у тебя может и найдутся собеседники, но людям которые ценят свое время это нафиг не надо.

Кто-то делает апдейт, кто-то делает truncate + insert append, кто-то одной транзакцией, кто-то несколькими.
Искренне ваш, Кэп.

PS. Вообще я зря с тобой связался, можешь продолжать учится рожать фразы ни о чем.
Главное делать умный вид. Иногда для карьеры помогает.
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #38948790
User_DWH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробуйте так:

Код: 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.
32.
33.
34.
35.
36.
37.
38.
DECLARE
    v_limit       NUMBER := 10000;

    CURSOR c_update IS
        SELECT /*+parallel(8)*/
         tel.rowid AS rid,
         prs.CIFID as CIFID
        FROM   COLLECT_FE.TELEPHONE tel
			JOIN   ext_eshchekaturova.PERSON_tel prs 
			ON tel.PERSONID=prs.PERSONID
        ORDER  BY tel.rowid;
		
    TYPE t_row_id IS TABLE OF ROWID;
    TYPE t_numbers IS TABLE OF INTEGER INDEX BY BINARY_INTEGER;
	
    v_CIFID  t_numbers;
    v_row_id t_row_id;
BEGIN
    OPEN c_update;
    LOOP
        FETCH c_update BULK COLLECT
            INTO v_row_id,
                 v_CIFID LIMIT v_limit;
        FORALL i IN v_row_id.first .. v_row_id.last
            UPDATE COLLECT_FE.TELEPHONE trg
            SET    trg.CIFID     = v_CIFID(i),                   
				WHERE  ROWID = v_row_id(i);
        COMMIT;
    END LOOP;
    CLOSE c_update;
EXCEPTION
    WHEN OTHERS THEN
        IF c_update%ISOPEN
        THEN
            CLOSE c_update;
        END IF;
        raise_application_error(-20001, SQLERRM);
END;
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Как ускорить MERGE?
    #39991122
Фотография essbase.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
User_DWH,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
    FETCH c_update BULK COLLECT
            INTO v_row_id,
                 v_CIFID LIMIT v_limit;
        FORALL i IN v_row_id.first .. v_row_id.last
            UPDATE COLLECT_FE.TELEPHONE trg
            SET    trg.CIFID     = v_CIFID(i),                   
				WHERE  ROWID = v_row_id(i);



чувствую что здесь есть магия )) кто нибудь может расшифровать ?
- идет полное обновление таблицы по номеру строк?
обращение "WHERE ROWID " происходит самым быстрым способом ?
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #39991208
Synoptic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
essbase.ru

- идет полное обновление таблицы по номеру строк?
обращение "WHERE ROWID " происходит самым быстрым способом ?

Не всей таблицы, а в пределах 10000 строк из неё (v_limit)
ROWID - физический адрес строки в таблице. Указание rowid позволяет наиболее быстро перейти к строке.
...
Рейтинг: 0 / 0
Как ускорить MERGE?
    #39991257
Фотография essbase.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Synoptic,

Огонь!)
Обожаю хаки подобного рода, которые позволяют расширить пределы возможностей системы. Уже унес в меморис )


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


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