В чем разница между представлениями и материализованными представлениями в Oracle?
346
В чем разница между представлениями и материализованными представлениями в Oracle?
Материализованные представления основаны на диске и периодически обновляются на основе определения запроса.
Представления являются только виртуальными и запускают определение запроса при каждом обращении к ним.
Просмотры
Они оценивают данные в таблицах, лежащих в основе определения представления, во время запроса представления . Это логическое представление ваших таблиц, без данных, хранящихся где-либо еще.
Положительным моментом является то, что он всегда будет возвращать вам последние данные . Минус цели является то , что его производительность зависит от того, насколько хорошо отборного заявления мнения основано на. Если оператор выбора, используемый представлением, объединяет много таблиц или использует объединения, основанные на неиндексированных столбцах, представление может работать плохо.
Материализованные взгляды
Они аналогичны обычным представлениям в том смысле, что они представляют собой логическое представление ваших данных (основанное на операторе select), однако базовый набор результатов запроса был сохранен в таблице . Плюсом этого является то, что когда вы запрашиваете материализованное представление, вы запрашиваете таблицу , которая также может быть проиндексирована.
Кроме того, поскольку все объединения были разрешены во время обновления материализованного представления, вы платите цену объединения один раз (или так же часто, как обновляете свое материализованное представление), а не каждый раз, когда выбираете из материализованного представления. Кроме того, с включенной перезаписью запросов Oracle может оптимизировать запрос, который выбирает из источника вашего материализованного представления таким образом, что он вместо этого считывает из вашего материализованного представления. В ситуациях, когда вы создаете материализованные представления в виде сводных таблиц или копий часто выполняемых запросов, это может значительно ускорить время отклика приложения конечного пользователя. Недостаток , хотя в том , что данные , которые вы получите назад от материализованного представления только до даты , как в последний раз материализованного представление было обновлено .
Материализованные представления могут быть настроены на обновление вручную, по заданному расписанию или на основе базы данных, обнаруживающей изменение данных из одной из базовых таблиц . Материализованные представления можно постепенно обновлять, комбинируя их с материализованными журналами представлений, которые действуют как источники сбора данных изменений в базовых таблицах.
Материализованные представления чаще всего используются в приложениях хранилищ данных / бизнес-аналитики, где запросы больших таблиц фактов с тысячами миллионов строк приводят к временам ответа на запрос, что приводит к непригодности приложения.
Материализованные представления также помогают гарантировать согласованный момент времени, аналогичный изоляции моментальных снимков .
источник
Представление использует запрос для извлечения данных из базовых таблиц.
Материализованное представление - это таблица на диске, содержащая набор результатов запроса.
Материализованные представления в основном используются для повышения производительности приложений, когда невозможно или нежелательно использовать стандартное представление с примененными к нему индексами. Материализованные представления могут регулярно обновляться либо с помощью триггеров, либо с помощью
ON COMMIT REFRESH
опции. Это требует нескольких дополнительных разрешений, но ничего сложного.ON COMMIT REFRESH
был на месте, по крайней мере, с Oracle 10.источник
Представления - это по сути логические табличные структуры, заполняемые на лету заданным запросом. Результаты запроса представления не сохраняются нигде на диске, и представление воссоздается каждый раз при выполнении запроса. Материализованные представления - это фактические структуры, хранящиеся в базе данных и записываемые на диск. Они обновляются на основе параметров, определенных при их создании.
источник
Материализованное представление - таблица на диске, содержащая набор результатов запроса
Нематериализованное представление - запрос, извлекающий данные из базовой таблицы.
источник
Вид: вид - это просто именованный запрос. Это ничего не хранит. Когда есть запрос к представлению, он запускает запрос определения представления. Фактические данные поступают из таблицы.
Материализованные представления: физически хранит данные и периодически обновляется. Опрашивая MV, он выдает данные из MV.
источник
Добавление к довольно подробному ответу Майка Макаллистера ...
Материализованные представления могут быть настроены на автоматическое обновление только через базу данных, обнаруживающую изменения, когда компилятор считает запрос представления простым . Если он считается слишком сложным, он не сможет настроить внутренние триггеры для отслеживания изменений в исходных таблицах, чтобы обновить только измененные строки в таблице mview.
Когда вы создадите материализованное представление, вы обнаружите, что Oracle создает как mview, так и в виде таблицы с одинаковым именем , что может привести к путанице.
источник
Материализованные представления - это логическое представление данных, управляемое запросом select, но результат запроса будет сохранен в таблице или на диске, а также определение запроса также сохранится в базе данных.
Производительность материализованного представления лучше, чем в обычном представлении, потому что данные материализованного представления будут храниться в таблице, и таблица может быть проиндексирована, что ускоряет объединение, также объединение выполняется во время обновления материализованных представлений, поэтому нет необходимости каждый раз запускать присоединиться к заявлению, как в случае просмотра.
Другое отличие состоит в том, что в случае просмотра мы всегда получаем самые последние данные, но в случае материализованного представления нам необходимо обновить представление для получения последних данных. В случае Материализованного представления нам нужен дополнительный триггер или некоторый автоматический метод, чтобы мы могли обновлять MV, это не требуется для представлений в базе данных.
источник