Spec-Zone.ru › MySQL 9.2

7.5.5 Компонент планировщика

Примечание

Компонент scheduler входит в MySQL Enterprise Edition, коммерческий продукт. Чтобы узнать больше о коммерческих продуктах, посетите https://www.mysql.com/products/.

Компонент scheduler предоставляет реализацию сервиса mysql_scheduler, который позволяет приложениям, компонентам или плагинам настраивать, запускать и отключать задачи каждые N секунды. Например, плагин сервера audit_log вызывает компонент scheduler при инициализации и настраивает регулярную повторяющуюся очистку кэша памяти (см. Включение задачи очистки журнала аудита).

  • Назначение: Реализует системную переменную component_scheduler.enabled, которая управляет активным выполнением задач планировщиком. При запуске компонент scheduler регистрирует таблицу performance_schema.component_scheduler_tasks, которая перечисляет текущие запланированные задачи и некоторые данные о выполнении каждой из них.

  • URN: file://component_scheduler

Инструкции по установке см. в разделе 7.5.1 «Установка и удаление компонентов».

Компонент scheduler реализует сервис, используя следующие элементы:

  • Очередь с приоритетами зарегистрированных неактивных запланированных задач, отсортированных по времени следующего запуска (в порядке возрастания).

  • Список зарегистрированных активных задач.

  • Фоновый поток, который:

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

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

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

При вызове сервиса mysql_scheduler.create() вызывающая сторона создает новую экземпляра запланированной задачи для добавления в очередь, что сигнализирует семафору фонового потока. Вызывающая сторона получает дескриптор новой задачи. Код вызывающей стороны должен сохранить этот дескриптор и ссылку на сервис планирования до выполнения сервиса mysql_scheduler.destroy(). При вызове destroy() с передачей дескриптора, полученного из create(), сервис ожидает, пока задача станет неактивной (если она запущена), а затем удаляет ее из очереди неактивных задач.

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

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

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/scheduler-component.html

Spec-Zone.ru

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