Почему бы не использовать таблицу вместо материализованного представления?

Я новичок в базах данных Oracle. Если я правильно понял, материализованное представление - это представление, результат которого сохраняется как физическая таблица в базе данных, и эта таблица представлений обновляет некоторые параметры. Если представление сохраняется как физическая таблица, почему бы не хранить данные в таблице в первую очередь? Итак, в чем преимущество использования материализованного представления вместо таблицы?

47 голосов | спросил jrara 28 PM00000060000001731 2012, 18:42:17

7 ответов


55

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

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

ответил Justin Cave 28 PM00000060000005531 2012, 18:51:55
14

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

ответил Gordon Bell 28 PM00000060000001031 2012, 18:50:10
10

Одним из хороших примеров использования MV является то, что несколько раз вы хотите агрегировать данные и получать эту сводную информацию из больших таблиц часто и быстро. Без материализованных представлений вам необходимо либо деконструировать некоторые из ваших таблиц, либо поддерживать агрегаты с помощью кода, либо многократно проверять большие ряды строк. В любом случае это не всегда приемлемо, особенно с приборной панелью и аналогичными онлайн-приложениями. Если вы сохраняете результаты в отдельных таблицах, вы усложняете свой код приложения, и, как говорит @Justin Cave, вы будете следить за тем, чтобы синхронизированные данные вручную были синхронизированы. с исходными данными таблицы.

ответил NoChance 28 PM00000070000005231 2012, 19:02:52
4

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

Это не бесплатно, потому что это будет стоить расходов на хранение и потенциально опасных затрат времени на вставку /обновление, но это может быть компенсировано временем, затрачиваемым на извлечение материализованных данных по сравнению с «прямым представлением» или созданием фактических таблиц и поддержанием окружающего ETL .

Наконец, это может привести к аннулированию вашего контракта на поддержку с продавцом, посоветоваться с вашим адвокатом-бла-бла-бла

ответил billinkc 28 PM00000070000005731 2012, 19:44:57
2

Вместо прямого перехода к Материализованным представлениям позвольте мне объяснить Представления .

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

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

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

  

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

ответил Premraj 24 PMpFri, 24 Apr 2015 13:28:22 +030028Friday 2015, 13:28:22
0

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

Пример

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

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

ответил samroze 29 Jam1000000amSun, 29 Jan 2017 09:46:52 +030017 2017, 09:46:52
0

Материализованное представление представляет собой объект базы данных, содержащий результаты запроса. Они являются локальными копиями данных, расположенных удаленно, или используются для создания сводных таблиц, основанных на совокупности данных таблицы. http://www.oraappdata.com/2016/04/materialized-view. HTML

ответил Dayakark 7 FebruaryEurope/MoscowbTue, 07 Feb 2017 10:56:48 +0300000000amTue, 07 Feb 2017 10:56:48 +030017 2017, 10:56:48

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132