Автоматизация задач MariaDB с помощью событий
MariaDB имеет планировщик событий, который можно использовать для автоматизации задач, выполняя их с регулярными временными интервалами. Эта страница посвящена использованию событий для автоматизации. Более подробную информацию о самих событиях и о работе с ними см. в разделе планировщик событий.
Преимущества и недостатки использования событий для автоматизации
События можно сравнить с заданиями cron в Unix или запланированными задачами в Windows. События MariaDB обладают по крайней мере следующими преимуществами по сравнению с этими инструментами:
- События независимы от системы. Один и тот же код может выполняться на любой системе.
- События написаны на процедурном SQL. Нет необходимости устанавливать другие языки программирования или библиотеки.
- Если вы используете пользовательские функции, вы по-прежнему можете использовать их в своих событиях.
- События выполняются в MariaDB. Например, это означает, что результаты запросов остаются в самой MariaDB и не отправляются клиенту. Это означает, что сбои в сети не влияют на события, нет накладных расходов из-за обмена данными, а следовательно, блокировки удерживаются в течение более короткого времени.
Некоторые недостатки использования событий следующие:
- События могут выполнять только задачи, которые могут быть реализованы в SQL. Например, невозможно отправлять оповещения. Доступ к файлам или удаленным базам данных ограничен.
- Планировщик событий работает как единственный поток. Если какое-либо событие должно начаться во время выполнения другого события, его выполнение будет пропущено. Его нельзя просто отложить. Это может быть большой проблемой при автоматизации ряда задач, которые должны выполняться в ограниченном временном диапазоне. Но это нормально, когда выполняется ограниченное количество задач, которые могут быть время от времени пропущены без существенных последствий.
- Дополнительные ограничения на события см. в разделе Ограничения событий.
Во многих случаях вы можете предпочесть разработку скриптов на внешнем языке программирования. Однако следует знать, что простые задачи, состоящие из нескольких запросов, могут быть легко реализованы в виде событий.
Рекомендации по лучшим практикам
При использовании событий для автоматизации задач следует придерживаться лучших практик.
Переместите ваш SQL-код в хранимую процедуру. Все, что будет делать событие, — это вызывать хранимую процедуру. Несколько событий могут вызывать одну и ту же хранимую процедуру, возможно, с разными параметрами. При необходимости процедуру также можно вызывать вручную. Это позволит избежать дублирования кода. Это позволит отделить логику от расписания, что позволит изменять событие без риска внесения изменений в логику, и наоборот.
Так же, как и задания cron, события должны регистрировать успешное или неуспешное выполнение. Ведение сообщений отладки также может быть полезно для сложных событий. Эта информация может записываться в отдельную таблицу. Содержимое таблицы может отслеживаться инструментом мониторинга, таким как Grafana. Это позволяет визуализировать на панели состояние событий и отправлять оповещения в случае сбоя.
Примеры
Примеры задач, которые можно легко автоматизировать с помощью событий:
- Копирование данных из удаленной таблицы в локальную таблицу ночью, используя движок хранилища CONNECT. Это может быть хорошей идеей, если необходимо скопировать много строк, потому что данные не будут отправлены внешнему клиенту.
- Периодическое удаление исторических данных. Например, строк, которым более 5 лет. Ничто не мешает нам сделать это с помощью внешнего скрипта, но, вероятно, это не добавит никакой ценности.
- Периодическое удаление недействительных строк. В электронной коммерции это могут быть брошенные корзины. В системе обмена сообщениями это могут быть сообщения пользователям, которые больше не существуют.
- Добавление новой раздела к таблице и удаление самого старого (ротация разделов).
Содержание изначально предоставлено Vettabase Ltd.
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/automating-mariadb-tasks-with-events/