Яка різниця між Поглядами та Матеріалізованими поглядами в Oracle?


Відповіді:


356

Матеріалізовані представлення засновані на диску та періодично оновлюються на основі визначення запиту.

Перегляди є лише віртуальними і виконують визначення запиту щоразу, коли до них звертаються.


54
Крім того, коли вам потрібна ефективність даних, які не потребують оновлення до самої секунди, матеріалізовані представлення є кращими, але ваші дані будуть старшими, ніж у стандартному. Зазвичай BI-звіти отримують велику користь від матеріалізованих поглядів.
Marthinus

29
@Marthinus - це правильно, за винятком випадків, коли матеріалізований вигляд є ПОВТОРЕННЯ ДЛЯ КОМІТЕТУ - MV поверне саме ті дані, які було здійснено.
Джефрі Кемп

2
На чому базується DISK? Це означає, що таблиця не є частиною DISK? Чи зберігається він у файлі і доступ до DISK швидше, ніж доступ до файлу ....?
Канагавелу Сугумар

1
@KanagaveluSugumar Так, фактичні таблиці також записуються на диск.
дакракот

5
@dacracot Дякую! я думаю, ти маєш на увазі сказати, крім таблиць БД, у DISK; цей MVIEW також підтримує таблицю, вирішивши всі з'єднання. Так що в режимі виконання достатньо доступу до однієї таблиці; і не потрібно запитувати кілька таблиць щодо умов приєднання, що, як правило, виконується звичайним представленням даних. Дякую!
Канагавелу Сугумар

333

Перегляди

Вони оцінюють дані в таблицях, що лежать в основі визначення подання, під час запиту подання . Це логічний вигляд ваших таблиць, без даних, що зберігаються більше ніде.

Перевернення погляду полягає в тому, що він завжди поверне вам найновіші дані . Мінус мети є те , що його продуктивність залежить від того, наскільки добре добірного заяви думки засноване на. Якщо оператор select, який використовується переглядом, приєднується до багатьох таблиць або використовує з'єднання на основі неіндексованих стовпців, представлення може працювати погано.

Матеріалізовані погляди

Вони схожі на звичайні представлення даних, оскільки являють собою логічний вигляд ваших даних (заснований на обраному операторі), однак базовий набір результатів запиту був збережений у таблиці . Переваги цього полягають у тому, що при запиті на матеріалізований вигляд ви запитуєте таблицю , яку також можна індексувати.

Крім того, оскільки всі з'єднання були вирішені під час оновлення перегляду в режимі перегляду, ви платите ціну приєднання одноразово (або так часто, як ви оновлюєте свій матеріалізований вигляд), а не кожен раз, коли ви вибираєте з материализованного представлення. Крім того, з увімкненою перезаписом запитів Oracle може оптимізувати запит, який вибирає з джерела вашого матеріалізованого перегляду таким чином, що він замість цього читає з вашого матеріалізованого подання. У ситуаціях, коли ви створюєте матеріалізовані представлення у вигляді сукупних таблиць або як копії часто виконуваних запитів, це може значно пришвидшити час відповіді вашої програми кінцевого користувача. Недолік , хоча в тому , що дані , які ви отримаєте назад від матеріалізованого уявлення тільки до дати , як в останній раз матеріалізованого уявлення було оновлено .


Матеріалізовані представлення можна встановити для оновлення вручну, за встановленим графіком або на основі бази даних, що виявляє зміну даних з однієї з основних таблиць . Матеріалізовані погляди можна поступово оновлювати, поєднуючи їх з матеріалізованими журналами перегляду, які діють як джерела збору даних у нижчих таблицях.

Матеріалізовані представлення найчастіше використовуються в програмах зберігання даних / бізнес-аналітики, де запити великих таблиць фактів з тисячами мільйонів рядків призводять до часу відповіді на запити, що призводить до непридатності програми.


Матеріалізовані погляди також допомагають гарантувати послідовний момент часу, подібний до ізоляції знімків .


9
+1 для детального пояснення, але що є недоліком перезапису запитів? Якщо перезапис запитів дозволить Oracle ще більше оптимізувати запит, то ми повинні ВИНАГА включити перезапис запитів, ні?
Росді Касім

6
@Rosdi, він сказав це: "дані, які ви отримуєте назад з матеріалізованого перегляду, є лише такими ж актуальними, як і востаннє, коли матеріалізований вигляд було оновлено"
Джеффрі Кемп

49

Представлення використовує запит для витягування даних із нижчих таблиць.

Матеріалізований вигляд - це таблиця на диску, яка містить набір результатів запиту.

Матеріалізовані представлення в основному використовуються для підвищення продуктивності програми, коли неможливо або бажано використовувати стандартний вигляд із застосованими до нього індексами. Матеріалізовані представлення можна регулярно оновлювати або через тригери, або за допомогою ON COMMIT REFRESHпараметра. Для цього потрібно кілька додаткових дозволів, але це нічого складного. ON COMMIT REFRESHіснує з принаймні Oracle 10.


Існує варіант "ПОВЕРНУТИСЯ ПРО КОМІТЕТ", який можна вказати в Матеріалізованому
поданні

Дякую! Я оновлю відповідь. Чи знаєте ви, коли цю функціональність додали до Oracle?
Єремія Пешка

20

Погляди по суті є логічними структурами, схожими на таблицю, заселеними на ходу заданим запитом. Результати запиту перегляду не зберігаються ніде на диску, і перегляд відтворюється щоразу, коли запит виконується. Матеріалізовані представлення - це фактичні структури, що зберігаються в базі даних і записуються на диск. Вони оновлюються на основі параметрів, визначених під час їх створення.


На чому базується DISK? Це означає, що таблиця не є частиною DISK? Чи зберігається він у файлі і доступ до DISK швидше, ніж доступ до файлу ....?
Канагавелу Сугумар

18

Матеріалізований вигляд - таблиця на диску, яка містить набір результатів запиту

Нематеріалізований вигляд - запит, який витягує дані з нижньої таблиці


7

Вид: Вид - це лише названий запит. Це нічого не зберігає. Коли є запит на перегляд, він запускає запит визначення представлення. Фактичні дані надходять з табл.

Матеріалізовані представлення: зберігає дані фізично та періодично оновлюється. Під час запитів на MV він дає дані від MV.


2

Додавання досить грунтовної відповіді Майка Макаллістера ...

Матеріалізовані представлення можна встановити для автоматичного оновлення лише через базу даних, що виявляє зміни, коли компілятор вважає, що запит перегляду простий . Якщо це вважається занадто складним, він не зможе встановити, що по суті є внутрішніми тригерами для відстеження змін у вихідних таблицях, щоб лише оновити змінені рядки в таблиці mview.

Створюючи матеріалізований вигляд, ви побачите, що Oracle створює як mview, так і таблицю з тим самим іменем , що може зробити речі заплутаними.


Таблиці, що підтримують матеріалізований вигляд, не мають імені, як представлення.
Джеффрі Кемп

@JeffreyKemp, ви впевнені? Тут прийнята відповідь stackoverflow.com/a/33552513 стверджує інакше. Хоча так, це могло бути інакше в 2010 році, коли ви коментували ...
leqid

Мій коментар вище, мабуть, був на старій версії (можливо, 9i). Ви маєте рацію, МВ отримують однойменну таблицю принаймні в сучасних версіях.
Джеффрі Кемп

1

Матеріалізовані представлення - це логічний вигляд даних, керований запитом вибору, але результат запиту зберігатиметься в таблиці чи диску, а також визначення запиту також зберігатиметься в базі даних.

Продуктивність Матеріалізованого перегляду краще, ніж звичайного Перегляду, тому що дані матеріалізованого перегляду будуть зберігатися в таблиці та таблиці, можливо, індексуватись так швидше, щоб приєднання також приєднання було зроблено під час оновлення матеріалів, що оновлюються, тому не потрібно кожного разу запускати заявка приєднання, як у випадку перегляду.

Інша відмінність полягає в тому, що у випадку перегляду ми завжди отримуємо найновіші дані, але у випадку матеріалізованого перегляду нам потрібно оновити подання для отримання останніх даних. У випадку матеріалізованого перегляду нам потрібен додатковий тригер або якийсь автоматичний метод, щоб ми могли оновити MV оновленим, це не потрібно для переглядів у базі даних.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.