31.01.2009 11:06
1024.6, не знал, куда поместить, пишу здесь, ибо СМ
Итак, проблема - заказ поставщикам по одному контракту выполняется по одному из поставщиков около 15 минут по всем МХ (49). Не устроило.
Решение:
Код:
CREATE MATERIALIZED VIEW LOG ON
    "SUPERMAG"."SMSPEC"
 TABLESPACE INDX NOLOGGING
WITH ROWID,SEQUENCE("DOCTYPE","DOCID","ARTICLE")
    INCLUDING NEW VALUES;

CREATE MATERIALIZED VIEW LOG ON
    "SUPERMAG"."SMDOCUMENTS"
 TABLESPACE INDX NOLOGGING
WITH ROWID,SEQUENCE("DOCTYPE","ID","DOCSTATE","CLIENTINDEX")
    INCLUDING NEW VALUES;

CREATE MATERIALIZED VIEW LOG ON
    "SUPERMAG"."SMDATEDOCS"
TABLESPACE INDX NOLOGGING
WITH ROWID,SEQUENCE("ID","DOCTYPE","DATEDAT")
    INCLUDING NEW VALUES;

CREATE MATERIALIZED VIEW"SUPERMAG"."MV_FOR_ORDERS"
    TABLESPACE INDX NOLOGGING
REFRESH FORCE
START WITH to_date('01-31-2009 10:48:20','MM-dd-yyyy hh24:mi:ss') NEXT sysdate+30/1440
ENABLE QUERY REWRITE
    AS SELECT SUPERMAG.SMSPEC.ARTICLE C1,SUPERMAG.SMDOCUMENTS.CLIENTINDEX C2,SUPERMAG.SMDOCUMENTS.DOCSTATE 
       C3,SUPERMAG.SMDATEDOCS.DOCTYPE C4,MAX("SUPERMAG"."SMDATEDOCS"."DATEDAT") 
       M1,COUNT(*) M2 FROM SUPERMAG.SMSPEC,SUPERMAG.SMDOCUMENTS,SUPERMAG.SMDATEDOCS
       WHERE SUPERMAG.SMDATEDOCS.DOCTYPE=SUPERMAG.SMSPEC.DOCTYPE AND SUPERMAG.SMDATEDOCS.DOCTYPE
       =SUPERMAG.SMDOCUMENTS.DOCTYPE AND SUPERMAG.SMDATEDOCS.ID=SUPERMAG.SMSPEC.DOCID 
       AND SUPERMAG.SMDATEDOCS.ID=SUPERMAG.SMDOCUMENTS.ID AND (SUPERMAG.SMDOCUMENTS.DOCTYPE
       ='OR') GROUP BY SUPERMAG.SMSPEC.ARTICLE,SUPERMAG.SMDOCUMENTS.CLIENTINDEX,
       SUPERMAG.SMDOCUMENTS.DOCSTATE,SUPERMAG.SMDATEDOCS.DOCTYPE;

begin
  dbms_stats.gather_table_stats('"SUPERMAG"','"MV_FOR_ORDERS"',NULL,dbms_stats.auto_sample_size);
end;
/

CREATE BITMAP INDEX"SUPERMAG"."MV_FOR_ORDERS_INDX1"
    ON "SUPERMAG"."MV_FOR_ORDERS"
    ("C1") TABLESPACE INDX
    COMPUTE STATISTICS;

CREATE BITMAP INDEX"SUPERMAG"."MV_FOR_ORDERS_INDX2"
    ON "SUPERMAG"."MV_FOR_ORDERS"
    ("C2") TABLESPACE INDX
    COMPUTE STATISTICS;
Цитата:
query_rewrite_integrity=stale_tolerated;
INDX у меня на страйпе, NOLOGGING. Результат: предыдущая генерация - секунд за 15, по всем контрактам и поставщикам за 10 минут, сгенерировано около 3000 заказов. Жду критики.
PS при переносе пробелы пропали. прошу внимательнее :(
03.02.2009 21:18
Переправил обновление вьюшки на 5 мин, операторы жаловались... Любят откатывать заказы и накатывать заново...
Еще одна фича обнаружилась, странный индекс...
Цитата:
CREATE INDEX "SUPERMAG"."SMDATEDOCS_ORDER" ON "SUPERMAG"."SMDATEDOCS"("ID","DOCTYPE","DATEDAT" DESC) TABLESPACE "INDX" PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE (INITIAL 6144K BUFFER_POOL DEFAULT) NOLOGGING
pазбил на по ID обычным и остальные битмапчатыми индексами... Сокращение генерации заказа по конкретному поставщику - в разы.
04.02.2009 06:04
Олег, а можно вот это "MAX("SUPERMAG"."SMDATEDOCS"."DATEDAT")" попробовать убрать, и посмотреть время генерации? Чисто ради интереса... Я спец "никакой" в Oracle, просто у меня в одной вьюшке, после того как убрал поле даты (в условиях отбора оставил естестно)данные стали отбираться милисекунды вместо минут...
Сам посмотреть не могу в данный момент к сожалению....
04.02.2009 10:47
Не очень понял, что ты хочешь. Вот это разбиение индекса и ускоряет MAX(DATEDAT)... Откуда что убрать - не понял :(
05.02.2009 10:08
MAX("SUPERMAG"."SMDATEDOCS"."DATEDAT") M1 - это поле в представлении, если я правильно понял? Вот его и предлагал убрать попробовать....
Прошу отнестись с пониманием, я не такой спец, как ты, и здоровье, чтоб разобраться со всем, уже не-то.
05.02.2009 10:18
А, нет, смысла убирать его нет. Иначе работать не будет.
12.04.2009 01:21
Если кто период будет открывать с этой фичей или еще какие-то еще процедуры с SMSPEC масштабные - не забудьте убрать на время, а то жесть с запросами...
13.04.2009 11:59
Цитата:
OlegON 1024.6, не знал, куда поместить, пишу здесь, ибо СМ
Итак, проблема - заказ поставщикам по одному контракту выполняется по одному из поставщиков около 15 минут по всем МХ (49). Не устроило.
Решение:
Супер!!!

А можно увидеть проблемный запрос с параметрами? Посмотрю какое время бдет может так же сделать на досуге:)
13.04.2009 12:37
Теперь, боюсь, не получится. Быстро пролетает. Зато у тебя видно должно быть, если заказы делают :) Главное - приучить операторов, что заказы не так быстро откатываются. Т.е. генерилку заказов сразу после операций над заказами прогонять нельзя.
01.03.2010 12:44
Цитата:
OlegON 1024.6, не знал, куда поместить, пишу здесь, ибо СМ
Итак, проблема - заказ поставщикам по одному контракту выполняется по одному из поставщиков около 15 минут по всем МХ (49). Не устроило.
Решение:...
В версии 1.027.2sp2 ничего принципиально не изменилось? Тоже поможет?
Часовой пояс GMT +3, время: 17:29.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.