Может кто-нибудь объяснить мне, какие взгляды или материализованные взгляды на обычном английском языке, пожалуйста? Я читал о материализованных взглядах, но я не понимаю.
Каковы материализованные взгляды?
Ответ 1
Конечно.
Обычный вид - это запрос, который определяет виртуальную таблицу - на самом деле у вас нет данных, сидящих в таблице, вы создаете их на ходу, выполняя.
Материализованное представление представляет собой представление, в котором запрос запускается, и данные сохраняются в фактической таблице.
Данные в материализованном представлении обновляются, когда вы рассказываете об этом.
Несколько вариантов использования:
-
У нас есть несколько экземпляров Oracle, где мы хотим иметь основные данные на одном экземпляре и достаточно текущую копию данных в других экземплярах. Мы не хотим предполагать, что ссылки на базы данных между ними всегда будут работать и работать. Поэтому мы настраиваем материализованные представления на другие экземпляры с запросами типа
select a,b,c from [email protected]
и сообщаем, что они ежедневно обновляются. -
Материализованные представления также полезны при перезаписи запроса. Скажем, у вас есть таблица фактов в хранилище данных с каждой книгой, когда-либо заимствованной из библиотеки, с датами и заемщиками. И этот персонал регулярно хочет знать, сколько раз была заимствована книга. Затем создайте материализованное представление как
select book_id, book_name, count(*) as borrowings from book_trans group by book_id, book_name
, установите его для любой частоты обновления, которую вы хотите - обычно частота обновления самого хранилища. Теперь, если кто-то запускает такой запрос для конкретной книги в таблицеbook_trans
, возможность перезаписи запроса в Oracle будет достаточно умна, чтобы смотреть на материализованное представление, а не ходить через миллионы строк вbook_trans
.
Обычно вы создаете материализованные представления по соображениям производительности и стабильности - сломанные сети или выполняете длинные запросы без выходных.
Ответ 2
A view - это в основном оператор с именем "named" 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
Ответ 3
Вид - это запрос в одной или нескольких таблицах. Представление может использоваться так же, как таблица, чтобы выбрать или присоединиться к другим таблицам или представлениям. Метриализованный вид - это представление, которое было полностью оценено, и его строки были сохранены в памяти или на диске. Поэтому каждый раз, когда вы выбираете из материализованного представления, нет необходимости выполнять запрос, который создает представление, и результаты возвращаются мгновенно.
Например, представление может представлять собой запрос типа SELECT account, SUM(payment) FROM payments GROUP BY account
с большим количеством платежей в таблице, но не с несколькими учетными записями. Каждый раз, когда используется это представление, вся таблица должна быть прочитана. С материализованным представлением результат возвращается мгновенно.
Нетривиальная проблема с материализованными представлениями заключается в их обновлении при изменении базовых данных. В этом примере каждый раз, когда новая строка добавляется в таблицу платежей, строка в материализованном представлении, представляющем учетную запись, должна обновляться. Эти обновления могут происходить синхронно или периодически.
Ответ 4
Да. Материализованные виды - это виды с базовым столом под ними. Вы определяете представление, и Oracle автоматически создает базовую таблицу под ним.
Выполняя представление и помещая полученные данные в базовую таблицу, вы получаете производительность.
Они полезны по разным причинам. Некоторые примеры использования материализованного представления:
1) Сложное представление может занять много времени, когда будет указано
2) Вид, включенный в сложный SQL, может привести к плохим планам выполнения, что приведет к проблемам с производительностью.
3) Возможно, вам придется ссылаться на данные через медленный DBLINK
Материализованное представление может быть настроено для периодического обновления.
Вы можете указать полное или частичное обновление.
Для получения полной информации см. документацию Oracle
Ответ 5
Материализованное представление представляет собой объект базы данных, содержащий результаты запроса. Они являются локальными копиями данных, расположенных удаленно или используются для создания сводных таблиц, основанных на совокупности данных таблицы.