В чем разница между представлениями и материализованными представлениями в Oracle? - PullRequest
322 голосов
/ 18 сентября 2008

В чем разница между представлениями и материализованными представлениями в Oracle?

Ответы [ 8 ]

333 голосов
/ 18 сентября 2008

Материализованные представления основаны на диске и периодически обновляются на основе определения запроса.

Представления являются только виртуальными и запускают определение запроса при каждом обращении к ним.

317 голосов
/ 18 сентября 2008

Просмотры

Они оценивают данные в таблицах, лежащих в основе определения представления во время запроса представления . Это логическое представление ваших таблиц, в котором больше нигде не хранятся данные.

Преимущество представления в том, что оно будет всегда возвращать вам самые последние данные . Недостатком представления является то, что его производительность зависит от того, насколько хорош оператор выбора, на котором основано представление. Если оператор выбора, используемый представлением, объединяет множество таблиц или использует объединения, основанные на неиндексированных столбцах, представление может работать плохо.

Материализованные представления

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

Кроме того, поскольку все объединения были разрешены во время обновления материализованного представления, вы платите цену объединения один раз (или так же часто, как обновляете свое материализованное представление), а не каждый раз, когда выбираете из материализованного представления. Кроме того, с включенной перезаписью запросов Oracle может оптимизировать запрос, который выбирает из источника вашего материализованного представления таким образом, что он вместо этого считывает из вашего материализованного представления. В ситуациях, когда вы создаете материализованные представления в виде сводных таблиц или копий часто выполняемых запросов, это может значительно ускорить время отклика приложения конечного пользователя. Недостатком является то, что данные, которые вы возвращаете из материализованного представления, являются такими же актуальными, как и в последний раз, когда материализованное представление обновлялось .


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

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


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

47 голосов
/ 18 сентября 2008

Представление использует запрос для извлечения данных из базовых таблиц.

Материализованное представление - это таблица на диске, содержащая набор результатов запроса.

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

17 голосов
/ 18 сентября 2008

Представления - это по сути логические табличные структуры, заполняемые на лету заданным запросом Результаты запроса представления не сохраняются нигде на диске, и представление воссоздается каждый раз при выполнении запроса. Материализованные представления - это фактические структуры, хранящиеся в базе данных и записываемые на диск. Они обновляются на основе параметров, определенных при их создании.

16 голосов
/ 13 мая 2012

Материализованное представление - таблица на диске, содержащая набор результатов запроса

Нематериализованное представление - запрос, извлекающий данные из базовой таблицы

2 голосов
/ 27 марта 2017

Просмотр: Просмотр - это просто именованный запрос. Это ничего не хранит. Когда есть запрос к представлению, он запускает запрос определения представления. Фактические данные поступают из таблицы.

Материализованные представления: Физически сохраняет данные и периодически обновляется. Опрашивая MV, он выдает данные из MV.

1 голос
/ 08 февраля 2016

A view - это не что иное, как SQL-запрос, он принимает выходные данные запроса и делает его похожим на виртуальную таблицу, которая не занимает места в хранилище и не содержит никаких данных

Но Материализованные представления являются объектами схемы, в которых результаты запроса хранятся в отдельном объекте схемы (т. Е. Занимают место для хранения и содержат данные). Это указывает на то, что материализованное представление возвращает физически отдельную копию данных таблицы

1 голос
/ 04 января 2009

Добавление к довольно подробному ответу Майка Макаллистера ...

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

Когда вы создадите материализованное представление, вы обнаружите, что Oracle создает как mview , так и в виде таблицы с одинаковым именем , что может сбить с толку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...