Чому б не використовувати таблицю замість матеріалізованого перегляду?


53

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

Відповіді:


59

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

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


14

Матеріалізовані представлення автоматично оновлюються по мірі оновлення їх базових таблиць.


1
Зауважте, що ON DEMANDце стандартна поведінка оновлення. Матеріалізований вигляд повинен бути створений за допомогою ON COMMIT. і підтримка матеріалізованого вигляду не є безкоштовною. Це, мабуть, дешевше тригера.
durette

10

Хороший випадок використання MV - це те, що вам потрібно часто та швидко збирати дані та отримувати цю підсумкову інформацію з великих таблиць. Без матеріалізованих представлень вам доведеться або денонормалізувати деякі свої таблиці та підтримувати агрегати за допомогою коду, або багаторазово сканувати великі набори рядків. Будь-який спосіб не завжди прийнятний, особливо з приладовою панеллю та подібними онлайн-додатками. Якщо ви будете зберігати результати в окремих таблицях, ви ускладнюєте код заявки, і як говорить @Justin Cave, ви будете відповідальні за те, щоб агреговані дані вручну були синхронізовані. з даними оригінальної таблиці.


4

Не людина Oracle, але іншим випадком використання є рішення сторонніх розробників. Вони, як правило, не підтримують внесення змін до їх дизайну, але МВ буде "невидимим" для їх коду, але надасть доступ до користувацьких звітів / витягів даних.

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

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


2

Замість того, щоб переходити безпосередньо до Матеріалізованих поглядів, дозвольте мені пояснити погляди .

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

Приклад використання: якщо представлення внутрішньо пов'язане з 10 таблицями разом з групою по і функції мають мільйони рядків, на виконання потрібно багато часу.

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

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


0

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

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

Безпеку можна краще контролювати в матеріалізованому вигляді, а не в таблиці.


0

Матеріалізований вигляд - це об'єкт бази даних, який містить результати запиту. Вони є локальними копіями даних, розташованих віддалено, або використовуються для створення зведених таблиць на основі агрегації даних таблиці. http://www.oraappdata.com/2016/04/materialized-view.html


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