Представления против материализованных представлений - PullRequest
0 голосов
/ 20 мая 2019

Какая разница между видом и материализованным видом?

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

Спасибо

1 Ответ

1 голос
/ 23 мая 2019

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

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

Основной причиной использования материализованного представления является улучшенная производительность. Каждый раз, когда мы выбираем из представления, мы выполняем весь запрос; если это дорогой запрос, то мы платим за него каждый раз. С материализованным представлением мы обмениваем дисковое пространство на время.

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

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

Ниже приведены только рекомендации, и они не являются ни полными, ни отдельными

Когда использовать представление

  • когда мы хотим сделать запрос многоразовым, совместным и контролируемым
  • когда мы хотим иметь простой интерфейс сверх внутренней сложности
  • когда мы хотим применить ограничения доступа к нашим данным

Когда использовать материализованный вид

  • когда мы хотим запустить стандартные запросы суммирования (обычно агрегирования) для большого объема данных
  • когда нам нужны данные из другой базы данных, и мы не можем гарантировать их доступность
  • просмотр случаев использования, когда объем базовых данных достаточно велик и требования к производительности достаточно строгие, чтобы материализовать данные с экономической точки зрения

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

  1. Материализованное представление - это копия данных из одной или нескольких таблиц, возможно, в других схемах или даже в других базах данных.
  2. Как я уже сказал, копирование данных сопряжено с накладными расходами. Пространство хранения и работа с устаревшими данными - большие затраты.
  3. Представление - это просто запрос, буквально нечего индексировать.
  4. select * from user_extents where segment_name = 'name of mview'
  5. Обновление при фиксации не является бесплатным. Выполнение системных ресурсов (транзакции над исходной таблицей займут больше времени). Кроме того, многие материализованные представления могут поддерживать только полное обновление по требованию.

(*) Это документация Oracle, потому что это то, что предлагает ваш профиль, но другие платформы RDBMS имеют схожие документы.

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