powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Долгое создание MATERIALIZED VIEW
15 сообщений из 15, страница 1 из 1
Долгое создание MATERIALIZED VIEW
    #39287288
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
Долгое создание MATERIALIZED VIEW
    #39287338
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир СА,

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

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

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

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

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

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

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

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


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

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

мат. вьюшка при создании заполняется данными. Вероятно, время тратится все же на заполнение мат. вьюшки. Попробуйте указать build deferred и после создания обновить вручную.
...
Рейтинг: 0 / 0
Долгое создание MATERIALIZED VIEW
    #39288117
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kinky catВладимир СА,
даешь trace !)
Прикреплен файл...
По моему с 796 строки...
...
Рейтинг: 0 / 0
Долгое создание MATERIALIZED VIEW
    #39288144
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Долгое создание MATERIALIZED VIEW
    #39288327
griffis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владимир САMV создается...
Но когда заполняем ее, то процесс очень долгий, и после 5 мин. я убиваю процесс...
Собственно это говорит о том, что проблема в запросе и анализировать следует его. Для начала можно сравнить планы быстро работающего запроса SYCREATE TABLE ... AS селект-из-MV? и текущего медленного, которым обновляется мат. вью (подсмотреть его можно, например, в v$session при запущенном обновлении).
...
Рейтинг: 0 / 0
Долгое создание MATERIALIZED VIEW
    #39288361
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
griffisВладимир САMV создается...
Но когда заполняем ее, то процесс очень долгий, и после 5 мин. я убиваю процесс...
Собственно это говорит о том, что проблема в запросе и анализировать следует его. Для начала можно сравнить планы быстро работающего запроса SYCREATE TABLE ... AS селект-из-MV? и текущего медленного, которым обновляется мат. вью (подсмотреть его можно, например, в v$session при запущенном обновлении).да план смотрел... конечно тяжелый...
Но я же писал выше:
авторХотя запрос в ней выполняется всего 3-4 сек .

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

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


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