Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Долгое создание MATERIALIZED VIEW / 15 сообщений из 15, страница 1 из 1
05.08.2016, 15:11:12
    #39287288
Владимир СА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Долгое создание MATERIALIZED VIEW
Код: plsql
1.
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production



Ну очень долго создается MATERIALIZED VIEW...
Хотя запрос в ней выполняется всего 3-4 сек.

MATERIALIZED VIEW
Код: 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.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
CREATE MATERIALIZED VIEW ZAGS_DATA1.V_PEOPLE_ZAGS (GUID,ID,SURNAME,NAME,PATRONYMIC,ID_PEOPLE_INFO,ID_GENDER
		,DAY_BIRTH,MONTH_BIRTH,YEAR_BIRTH,ID_LOCATION_BORN,ID_LOCATION,ID_TYPE_IDENT_DOC,SERIES_IDENT_DOC,NUMB_IDENT_DOC)
BUILD IMMEDIATE
REFRESH COMPLETE ON DEMAND
WITH PRIMARY KEY
AS 

SELECT people.guid, people.ID, people.SURNAME, people.NAME, people.PATRONYMIC, people.ID_PEOPLE_INFO,
       people.ID_GENDER, people.DAY_BIRTH, people.MONTH_BIRTH, people.YEAR_BIRTH, people.ID_LOCATION AS id_location_born,
       ppl.ID_LOCATION, pdoc.ID_TYPE_IDENT_DOC, pdoc.SERIES_IDENT_DOC, pdoc.NUMB_IDENT_DOC
FROM 
(
	SELECT people_all.guid, people_all.ID, people_all.SURNAME, people_all.NAME, people_all.PATRONYMIC,
			people_all.ID_PEOPLE_INFO, people_all.ID_GENDER, people_all.DAY_BIRTH, people_all.MONTH_BIRTH,
			people_all.YEAR_BIRTH, people_all.ID_LOCATION
	FROM 
	(
		SELECT lpp.guid, PP.ID, PP.SURNAME, PP.NAME, PP.PATRONYMIC, PP.ID_PEOPLE_INFO, PP.ID_ROLES_PEOPLE,
				PP.DATE_REC, RP.FLAG_PROTAGONIST, PP.ID_GENDER, PI.DAY_BIRTH, PI.MONTH_BIRTH, PI.YEAR_BIRTH, PL.ID_LOCATION,
				COUNT (pp.id) OVER (PARTITION BY lpp.guid) AS count_people,
				MAX (pp.id) OVER (PARTITION BY lpp.guid, RP.FLAG_PROTAGONIST) AS max_id_pro,
				COUNT (DISTINCT RP.FLAG_PROTAGONIST) OVER (PARTITION BY lpp.guid) AS cound_distinct_pro
		FROM t_people pp
		INNER JOIN LNK_PEOPLES_GUID lpp ON PP.ID_UNIQ = LPp.ID_PEOPLE
		LEFT JOIN t_people_info pi ON PP.ID_PEOPLE_INFO = pi.id
		LEFT JOIN LNK_PEOPLES_LOCATION pl ON PL.ID_PEOPLE = PP.ID AND PL.ID_TYPE_LOCATION = 1
		LEFT JOIN SP_ROLES_PEOPLE rp ON rp.id = PP.ID_ROLES_PEOPLE
		INNER JOIN 
			(
				SELECT LP.GUID, MAX(TRUNC (p.date_az)) mday
				FROM LNK_PEOPLES_GUID lp
				INNER JOIN t_people p ON LP.ID_PEOPLE = P.ID_UNIQ AND P.FLAG_VALID = 1
				GROUP BY LP.GUID
			) max_day
			ON PP.DATE_AZ >= max_day.mday AND LPP.GUID = max_day.guid
	) people_all
	WHERE cound_distinct_pro <= 1 AND people_all.id = people_all.max_id_pro
	
	UNION

	SELECT people_all.guid, people_all.ID, people_all.SURNAME, people_all.NAME, people_all.PATRONYMIC, people_all.ID_PEOPLE_INFO, people_all.ID_GENDER,
			people_all.DAY_BIRTH, people_all.MONTH_BIRTH, people_all.YEAR_BIRTH, people_all.ID_LOCATION
	FROM 
	(
		SELECT lpp.guid, PP.ID, PP.SURNAME, PP.NAME, PP.PATRONYMIC, PP.ID_PEOPLE_INFO, PP.ID_ROLES_PEOPLE,
				PP.DATE_REC, RP.FLAG_PROTAGONIST, PP.ID_GENDER, PI.DAY_BIRTH, PI.MONTH_BIRTH, PI.YEAR_BIRTH, PL.ID_LOCATION,
				COUNT (pp.id) OVER (PARTITION BY lpp.guid) AS count_people,
				MAX (pp.id) OVER (PARTITION BY lpp.guid, RP.FLAG_PROTAGONIST) AS max_id_pro,
				COUNT (DISTINCT RP.FLAG_PROTAGONIST) OVER (PARTITION BY lpp.guid) AS cound_distinct_pro
		FROM t_people pp
		INNER JOIN LNK_PEOPLES_GUID lpp ON PP.ID_UNIQ = LPp.ID_PEOPLE
		LEFT JOIN t_people_info pi ON PP.ID_PEOPLE_INFO = pi.id
		LEFT JOIN LNK_PEOPLES_LOCATION pl ON PL.ID_PEOPLE = PP.ID AND PL.ID_TYPE_LOCATION = 1
		LEFT JOIN SP_ROLES_PEOPLE rp ON rp.id = PP.ID_ROLES_PEOPLE
		INNER JOIN 
			(
				SELECT LP.GUID, MAX(TRUNC (p.date_az)) mday
				FROM LNK_PEOPLES_GUID lp
				INNER JOIN t_people p ON LP.ID_PEOPLE = P.ID_UNIQ AND P.FLAG_VALID = 1
				GROUP BY LP.GUID
			) max_day
			ON PP.DATE_AZ >= max_day.mday AND LPP.GUID = max_day.guid
	) people_all
	WHERE cound_distinct_pro > 1
		AND people_all.id = people_all.max_id_pro
		AND people_all.FLAG_PROTAGONIST = 1
) people
LEFT JOIN 
(
	SELECT lpp.guid, MAX (pl.id_location) AS id_location
	FROM t_people pp
	INNER JOIN LNK_PEOPLES_GUID lpp ON PP.ID_UNIQ = lpp.ID_PEOPLE
	INNER JOIN 
	(
		SELECT LP.GUID, MAX (TRUNC (p.date_az)) mday
		FROM LNK_PEOPLES_GUID lp
		INNER JOIN t_people p ON LP.ID_PEOPLE = P.ID_UNIQ AND P.FLAG_VALID = 1
		GROUP BY LP.GUID
	) max_day
	ON PP.DATE_AZ >= max_day.mday AND LPP.GUID = max_day.guid
	LEFT JOIN LNK_PEOPLES_LOCATION pl ON PL.ID_PEOPLE = PP.ID AND PL.ID_TYPE_LOCATION = 2
	GROUP BY lpp.guid
) ppl ON ppl.guid = people.guid
LEFT JOIN 
(
	SELECT lpp.guid, MAX (pd.ID) AS id_doc
	FROM t_people pp
	INNER JOIN LNK_PEOPLES_GUID lpp ON PP.ID_UNIQ = lpp.ID_PEOPLE
	LEFT JOIN t_people_info pi ON PP.ID_PEOPLE_INFO = pi.id
	LEFT JOIN T_PEOPLE_DOC pd ON pi.ID_DOC_PASSPORT = pd.ID
	WHERE ID_TYPE_IDENT_DOC IS NOT NULL
		AND SERIES_IDENT_DOC IS NOT NULL
		AND NUMB_IDENT_DOC IS NOT NULL
	GROUP BY lpp.guid
) ppd ON ppd.guid = people.guid
LEFT JOIN T_PEOPLE_DOC pdoc ON ppd.id_doc = pdoc.ID
;



В чем может быть причина ?
...
Рейтинг: 0 / 0
05.08.2016, 15:50:02
    #39287338
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Долгое создание MATERIALIZED VIEW
Владимир СА,

А сколько времени занимает CREATE TABLE ... AS селект-из-MV?

SY.
...
Рейтинг: 0 / 0
05.08.2016, 16:07:38
    #39287362
lexa-rw
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Долгое создание MATERIALIZED VIEW
Владимир СА,

долго это сколько? сколько всего строк запрос возвращает?
...
Рейтинг: 0 / 0
05.08.2016, 17:33:32
    #39287453
Владимир СА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Долгое создание MATERIALIZED VIEW
SYВладимир СА,

А сколько времени занимает CREATE TABLE ... AS селект-из-MV?

SY.А таблица создается быстро, как и время отклика запроса...

lexa-rwВладимир СА,

долго это сколько? сколько всего строк запрос возвращает?Ждал минут 15... затем убил сессию...
...
Рейтинг: 0 / 0
05.08.2016, 17:36:47
    #39287455
Владимир СА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Долгое создание MATERIALIZED VIEW
lexa-rwВладимир СА,

долго это сколько? сколько всего строк запрос возвращает?Запрос возвращает порядка 7500 записей...
...
Рейтинг: 0 / 0
05.08.2016, 17:41:14
    #39287460
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Долгое создание MATERIALIZED VIEW
Владимир САА таблица создается быстро, как и время отклика запроса...


Ну пока выяснишь создай таблицу а затем создай MV на prebuilt table.

SY.
...
Рейтинг: 0 / 0
05.08.2016, 18:01:11
    #39287481
Melkomyagkii_newbi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Долгое создание MATERIALIZED VIEW
Еще можешь взять outline из запроса и его вставить в запрос для создания мат вью как хинт. У меня такая шляпа была - план съезжал, правда при рефреше и на 11.2.0.4
...
Рейтинг: 0 / 0
08.08.2016, 01:26:18
    #39288023
Вадиман
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Долгое создание MATERIALIZED VIEW
Melkomyagkii_newbiЕще можешь взять outline из запроса и его вставить в запрос для создания мат вью как хинт. У меня такая шляпа была - план съезжал, правда при рефреше и на 11.2.0.4
Как связаны между собой тормоза запроса для рефреша и для CREATE MAT.VIEW?
...
Рейтинг: 0 / 0
08.08.2016, 07:08:57
    #39288037
kinky cat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Долгое создание MATERIALIZED VIEW
Владимир СА,
даешь trace !)
...
Рейтинг: 0 / 0
08.08.2016, 09:29:41
    #39288084
griffis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Долгое создание MATERIALIZED VIEW
ВадиманКак связаны между собой тормоза запроса для рефреша и для CREATE MAT.VIEW?
CREATE MATERIALIZED VIEW ZAGS_DATA1.V_PEOPLE_ZAGS ...
BUILD IMMEDIATE
REFRESH COMPLETE ON DEMAND

мат. вьюшка при создании заполняется данными. Вероятно, время тратится все же на заполнение мат. вьюшки. Попробуйте указать build deferred и после создания обновить вручную.
...
Рейтинг: 0 / 0
08.08.2016, 10:10:36
    #39288117
Владимир СА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Долгое создание MATERIALIZED VIEW
kinky catВладимир СА,
даешь trace !)
Прикреплен файл...
По моему с 796 строки...
...
Рейтинг: 0 / 0
08.08.2016, 11:04:50
    #39288144
Владимир СА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Долгое создание MATERIALIZED VIEW
griffisВадиманКак связаны между собой тормоза запроса для рефреша и для CREATE MAT.VIEW?
CREATE MATERIALIZED VIEW ZAGS_DATA1.V_PEOPLE_ZAGS ...
BUILD IMMEDIATE
REFRESH COMPLETE ON DEMAND

мат. вьюшка при создании заполняется данными. Вероятно, время тратится все же на заполнение мат. вьюшки. Попробуйте указать build deferred и после создания обновить вручную.Да, при указании
Код: plsql
1.
build deferred


MV создается...
Но когда заполняем ее, то процесс очень долгий, и после 5 мин. я убиваю процесс...
...
Рейтинг: 0 / 0
08.08.2016, 14:47:10
    #39288327
griffis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Долгое создание MATERIALIZED VIEW
Владимир САMV создается...
Но когда заполняем ее, то процесс очень долгий, и после 5 мин. я убиваю процесс...
Собственно это говорит о том, что проблема в запросе и анализировать следует его. Для начала можно сравнить планы быстро работающего запроса SYCREATE TABLE ... AS селект-из-MV? и текущего медленного, которым обновляется мат. вью (подсмотреть его можно, например, в v$session при запущенном обновлении).
...
Рейтинг: 0 / 0
08.08.2016, 15:12:10
    #39288361
Владимир СА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Долгое создание MATERIALIZED VIEW
griffisВладимир САMV создается...
Но когда заполняем ее, то процесс очень долгий, и после 5 мин. я убиваю процесс...
Собственно это говорит о том, что проблема в запросе и анализировать следует его. Для начала можно сравнить планы быстро работающего запроса SYCREATE TABLE ... AS селект-из-MV? и текущего медленного, которым обновляется мат. вью (подсмотреть его можно, например, в v$session при запущенном обновлении).да план смотрел... конечно тяжелый...
Но я же писал выше:
авторХотя запрос в ней выполняется всего 3-4 сек .

Всем спасибо...
упростили запрос... MV создается...
...
Рейтинг: 0 / 0
09.08.2016, 03:37:47
    #39288640
Вадиман
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Долгое создание MATERIALIZED VIEW
griffisВадиманКак связаны между собой тормоза запроса для рефреша и для CREATE MAT.VIEW?
CREATE MATERIALIZED VIEW ZAGS_DATA1.V_PEOPLE_ZAGS ...
BUILD IMMEDIATE
REFRESH COMPLETE ON DEMAND

мат. вьюшка при создании заполняется данными. Вероятно, время тратится все же на заполнение мат. вьюшки. Попробуйте указать build deferred и после создания обновить вручную.
Пропустил REFRESH COMPLETE
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Долгое создание MATERIALIZED VIEW / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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