Spec-Zone.ru › MariaDB

Автоматизация задач MariaDB с помощью событий

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

Преимущества и недостатки использования событий для автоматизации

События можно сравнить с заданиями cron в Unix или запланированными задачами в Windows. События MariaDB обладают по крайней мере следующими преимуществами по сравнению с этими инструментами:

  • События независимы от системы. Один и тот же код может выполняться на любой системе.
  • События написаны на процедурном SQL. Нет необходимости устанавливать другие языки программирования или библиотеки.
  • Если вы используете пользовательские функции, вы по-прежнему можете использовать их в своих событиях.
  • События выполняются в MariaDB. Например, это означает, что результаты запросов остаются в самой MariaDB и не отправляются клиенту. Это означает, что сбои в сети не влияют на события, нет накладных расходов из-за обмена данными, а следовательно, блокировки удерживаются в течение более короткого времени.

Некоторые недостатки использования событий следующие:

  • События могут выполнять только задачи, которые могут быть реализованы в SQL. Например, невозможно отправлять оповещения. Доступ к файлам или удаленным базам данных ограничен.
  • Планировщик событий работает как единственный поток. Если какое-либо событие должно начаться во время выполнения другого события, его выполнение будет пропущено. Его нельзя просто отложить. Это может быть большой проблемой при автоматизации ряда задач, которые должны выполняться в ограниченном временном диапазоне. Но это нормально, когда выполняется ограниченное количество задач, которые могут быть время от времени пропущены без существенных последствий.
  • Дополнительные ограничения на события см. в разделе Ограничения событий.

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

Рекомендации по лучшим практикам

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

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

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

Примеры

Примеры задач, которые можно легко автоматизировать с помощью событий:

  • Копирование данных из удаленной таблицы в локальную таблицу ночью, используя движок хранилища CONNECT. Это может быть хорошей идеей, если необходимо скопировать много строк, потому что данные не будут отправлены внешнему клиенту.
  • Периодическое удаление исторических данных. Например, строк, которым более 5 лет. Ничто не мешает нам сделать это с помощью внешнего скрипта, но, вероятно, это не добавит никакой ценности.
  • Периодическое удаление недействительных строк. В электронной коммерции это могут быть брошенные корзины. В системе обмена сообщениями это могут быть сообщения пользователям, которые больше не существуют.
  • Добавление новой раздела к таблице и удаление самого старого (ротация разделов).

Содержание изначально предоставлено Vettabase Ltd.

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

© 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/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API