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

255

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

Теги:
views
materialized-views

8 ответов

269
Лучший ответ

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

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

  • 50
    Также, когда вам нужна производительность для данных, которые не должны обновляться с точностью до секунды, материализованные представления будут лучше, но ваши данные будут старше, чем в стандартном представлении. Обычно отчеты BI получают большую выгоду от материализованных представлений.
  • 28
    @Martinus - это правильно, за исключением случая с материализованным представлением REFRESH ON COMMIT - MV возвращает именно те данные, которые были зафиксированы.
Показать ещё 5 комментариев
268

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

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

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

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

  • 9
    +1 за подробное объяснение, но какова обратная сторона переписывания запроса? Если перезапись запроса позволит Oracle оптимизировать запрос еще дальше, тогда мы ВСЕГДА должны разрешить переписывание запроса, нет?
  • 6
    @Rosdi, он сказал это: «данные, которые вы возвращаете из материализованного представления, являются такими же актуальными, как и в последний раз, когда материализованное представление обновлялось»
38

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

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

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

  • 0
    Существует опция «ОБНОВИТЬ В СООТВЕТСТВИИ», которую можно указать в материализованном представлении.
  • 0
    Спасибо! Я обновлю ответ. Знаете ли вы, когда эта функциональность была добавлена в Oracle?
14

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

  • 0
    В чем смысл DISK на основе? Значит ли это, что таблица не является частью DISK? Хранится ли он в файле и доступ к DISK быстрее, чем доступ к файлу ....?
11

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

Внешний вид - запрос, который извлекает данные из базовой таблицы

1

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

Материализованные виды: Сохраняет данные физически и периодически обновляется. При запросе MV он предоставляет данные из MV.

1

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

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

1

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

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

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

  • 0
    Таблицы, которые поддерживают материализованное представление, не имеют того же имени, что и представление.
  • 0
    @JeffreyKemp, ты уверен? Принятый ответ здесь stackoverflow.com/a/33552513 утверждает обратное. Хотя да, это может быть иначе в 2010 году, когда вы прокомментировали ...
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню