Каковы материализованные взгляды? - PullRequest
13 голосов
/ 16 декабря 2010

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

Ответы [ 5 ]

20 голосов
/ 16 декабря 2010

Конечно.

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

Материализованное представление - это представление, в котором выполняется запрос и данные сохраняются в фактической таблице.

Данные в материализованном представлении обновляются, когда вы указываете это.

Пара вариантов использования:

  • У нас есть несколько экземпляров Oracle, в которых мы хотим иметь основные данные в одном экземпляре и достаточно свежую копию данных в других экземплярах. Мы не хотим предполагать, что ссылки на базы данных между ними всегда будут в рабочем состоянии. Поэтому мы создали материализованные представления для других экземпляров с запросами, такими как select a,b,c from mytable@master, и просим их обновлять ежедневно.

  • Материализованные представления также полезны при переписывании запросов. Допустим, у вас есть таблица фактов в хранилище данных с каждой книгой, когда-либо заимствованной из библиотеки, с датами и заемщиками. И этот персонал регулярно хочет знать, сколько раз книга была заимствована. Затем создайте материализованное представление как select book_id, book_name, count(*) as borrowings from book_trans group by book_id, book_name, установите его для любой частоты обновления, которую вы хотите - обычно для частоты обновления самого хранилища. Теперь, если кто-то запустит такой запрос для конкретной книги по таблице book_trans, возможность переписывания запросов в Oracle будет достаточно умной, чтобы смотреть на материализованное представление, а не проходить миллионы строк в book_trans.

Обычно вы строите материализованные представления по соображениям производительности и стабильности - нестабильные сети или выполняете длинные запросы в нерабочее время.

7 голосов
/ 16 декабря 2010

A view - это в основном «именованный» оператор SQL.Вы можете ссылаться на представления в ваших запросах так же, как в реальной таблице.При доступе к представлению выполняется запрос за представлением.Например:

create view my_counter_view(num_rows) as
   select count(*)
     from gazillion_row_table;

   select num_rows from my_counter_view;

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

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

Материализованные представления редко упоминаются непосредственно в запросах.Смысл заключается в том, чтобы позволить оптимизатору использовать механику «Переписать запрос» для внутренней перезаписи запроса, такого как пример COUNT (*) выше, в запрос к предварительно вычисленной таблице.Это очень мощный инструмент, так как вам не нужно менять исходный код.

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

Длинная версия: -> документация Oracle

2 голосов
/ 16 декабря 2010

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

Например, представление может быть запросом, таким как SELECT account, SUM(payment) FROM payments GROUP BY account сбольшое количество платежей в таблице, но не много счетов.Каждый раз, когда используется это представление, вся таблица должна быть прочитана.При материализованном представлении результат возвращается мгновенно.

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

1 голос
/ 16 декабря 2010

Да. Материализованные представления - это представления с базовой таблицей под ними. Вы определяете представление, и Oracle автоматически создает базовую таблицу под ним.

Выполнив представление и поместив полученные данные в базовую таблицу, вы получите производительность.

Они полезны по разным причинам. Вот некоторые примеры того, почему вы должны использовать материализованное представление:

1) Сложное представление может выполняться долго при ссылке

2) Представление, включенное в сложный SQL, может привести к плохим планам выполнения, приводящим к проблемам с производительностью

3) Возможно, вам придется ссылаться на данные через медленный DBLINK

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

Вы можете указать полное или частичное обновление.

Пожалуйста, обратитесь к документации Oracle для полной информации

0 голосов
/ 07 февраля 2017

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

http://www.oraappdata.com/2016/04/materialized-view.html

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