Skip to content

Что такое материализованное представление, и зачем его использовать?

Пересказ статьи Nahla Davies. What is a Materialized View and Why Should you Use It?


По мере роста объема данных все больше разработчиков обращаются к материализованным представлениям для обработки запросов. Этот подход имеет много возможностей.

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

Что такое материализованное представление?


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

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



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

Впервые материализованные представления появились в Oracle. Начиная с 8i, они стали частью каждого релиза. Не все среды поддерживают материализованные представления, т.к. это инструмент относительно современных баз данных. Но их поддерживают SQL Server, Sybase SQL Anywhere, а недавно PostgreSQL и BigQuery.

Важность использования материализованных представлений заключается не только в увеличении производительности.

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


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

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



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

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

Преимущество обычного представления состоит в том, что оно не занимает много места. Но оно проигрывает в скорости и производительности.

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

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

Следует ли мне использовать материализованные представления


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

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

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

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

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

Материализованное представление: советы к использованию


Вы должны иметь в виду некоторые особенности, чтобы получить максимум пользы от материализованных представлений:



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

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

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

Заключение


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

Использование материализованных представлений уменьшает стоимость ваших данных и увеличивает скорость выполнения запросов. Хотя стоимость компьютеров постоянно снижается, стоимость данных остается весьма высокой. Поиск способов снижения затрат на данные и их хранение, таких как использование материализованных представлений, является ключевым в цифровую эпоху.

Обратные ссылки

Нет обратных ссылок

Комментарии

Показывать комментарии Как список | Древовидной структурой

Нет комментариев.

Автор не разрешил комментировать эту запись

Добавить комментарий

Enclosing asterisks marks text as bold (*word*), underscore are made via _word_.
Standard emoticons like :-) and ;-) are converted to images.

To prevent automated Bots from commentspamming, please enter the string you see in the image below in the appropriate input box. Your comment will only be submitted if the strings match. Please ensure that your browser supports and accepts cookies, or your comment cannot be verified correctly.
CAPTCHA

Form options

Добавленные комментарии должны будут пройти модерацию прежде, чем будут показаны.