«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Полное руководство по материализованным представлениям в MySQL

Полное руководство по материализованным представлениям в MySQL

Опубликовано 21 августа 2024 г.
Просматривать:177

Материализованные представления в MySQL: можно ли это сделать?

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



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

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

Основные преимущества материализованных представлений

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

Давайте объясним концепцию материализованных представлений, используя эту диаграмму:

A Comprehensive Guide to Materialized Views in MySQL

  1. Базовые таблицы: в левой части диаграммы есть два прямоугольника с надписью «Базовая таблица A» и «Базовая таблица B». Они представляют собой исходные таблицы базы данных, содержащие необработанные данные.
  2. Запрос: посередине у нас есть прямоугольник с надписью «Запрос». Это представляет собой запрос или набор операций, которые выполняются над базовыми таблицами для получения определенного набора результатов.
  3. Материализованное представление: справа у нас есть прямоугольник с надписью «Материализованное представление». Это ключевая концепция, которую мы иллюстрируем.

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

  • Производительность: для сложных запросов, особенно с использованием больших наборов данных или нескольких объединений, материализованное представление может значительно повысить производительность запросов, поскольку результаты вычисляются заранее.
  • Хранилище данных и OLAP: они особенно полезны в сценариях хранения данных и OLAP (онлайн-аналитическая обработка), где могут возникнуть сложные агрегаты или вычисления, выполнение которых на лету требует больших затрат.
  1. Стрелки: стрелки на диаграмме показывают поток данных. Стрелки от базовых таблиц к запросу представляют исходные обрабатываемые данные. Стрелка от запроса к материализованному представлению представляет сохраняемые результаты.
  2. Обновить: изогнутая стрелка внизу с надписью «Обновить» является важной частью понимания материализованных представлений. Поскольку данные в базовых таблицах могут со временем меняться, материализованное представление необходимо периодически обновлять или «обновлять», чтобы отражать эти изменения. Это обновление можно настроить на автоматическое выполнение через определенные промежутки времени или при необходимости вручную.

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


Реализация материализованных представлений в MySQL

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

Шаг 1. Создайте базовую таблицу

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

CREATE TABLE materialized_view AS
SELECT column1, column2, aggregate_function(column3)
FROM base_table
GROUP BY column1, column2;

Шаг 2. Настройте триггеры для поддержания материализованного представления

Чтобы обеспечить актуальность материализованного представления с базовой таблицей, необходимо создать триггеры для операций INSERT, UPDATE и DELETE.

Вставить триггер

CREATE TRIGGER trg_after_insert AFTER INSERT ON base_table
FOR EACH ROW
BEGIN
INSERT INTO materialized_view (column1, column2, column3)
VALUES (NEW.column1, NEW.column2, NEW.column3);
END;

Триггер обновления

CREATE TRIGGER trg_after_update AFTER UPDATE ON base_table
FOR EACH ROW
BEGIN
UPDATE materialized_view
SET column1 = NEW.column1, column2 = NEW.column2, column3 = NEW.column3
WHERE id = OLD.id;
END;

Удалить триггер

CREATE TRIGGER trg_after_delete AFTER DELETE ON base_table
FOR EACH ROW
BEGIN
DELETE FROM materialized_view WHERE id = OLD.id;
END;

Шаг 3. Обновление материализованного представления

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

Пример запланированного мероприятия

CREATE EVENT refresh_materialized_view
ON SCHEDULE EVERY 1 HOUR
DO
BEGIN
TRUNCATE TABLE materialized_view;
INSERT INTO materialized_view (column1, column2, aggregate_function(column3))
SELECT column1, column2, aggregate_function(column3)
FROM base_table
GROUP BY column1, column2;
END;

Материализованные представления с помощью Rapid Database Builder

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

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

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

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

Five также позволяет вам писать собственные функции JavaScript и TypeScript, что дает вам гибкость в реализации сложной бизнес-логики. Это крайне важно для приложений, которым требуется нечто большее, чем просто стандартные операции CRUD (создание, чтение, обновление, удаление).

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

Если вы серьезно относитесь к работе с MySQL, попробуйте Five. Зарегистрируйтесь, чтобы получить бесплатный доступ к онлайн-среде разработки Five и начните создавать свое веб-приложение уже сегодня.


Build Your Database In 3 Steps
Start Developing Today

Получить мгновенный доступ



A Comprehensive Guide to Materialized Views in MySQL
Пример приложения, созданного на основе базы данных MySQL с использованием Five

Соображения относительно материализованных представлений в MySQL

  1. Хранилище: материализованные представления занимают дополнительное пространство для хранения. Убедитесь, что в вашей базе данных достаточно места для размещения материализованных представлений.
  2. Обслуживание: регулярно обслуживайте и обновляйте материализованные представления, чтобы обеспечить согласованность и точность данных.
  3. Индексирование: используйте соответствующую индексацию в таблицах материализованных представлений для дальнейшего повышения производительности запросов.

Заключение

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


Часто задаваемые вопросы

Вопрос: MySQL изначально поддерживает материализованные представления?
Нет, MySQL не поддерживает материализованные представления изначально, но вы можете добиться аналогичной функциональности с помощью таблиц и триггеров.

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

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

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/domfive/a-comprehensive-guide-to-materialized-views-in-mysql-2dh5?1. Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить это
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3