ホームページ データベース mysql チュートリアル MySQL事件调度器(Event Scheduler)_MySQL

MySQL事件调度器(Event Scheduler)_MySQL

Jun 01, 2016 pm 01:52 PM
タスク 特徴

  一、概述

  事件调度器是在 MySQL 5.1 中新增的另一个特色功能,可以作为定时任务调度器,取代部分原先只能用操作系统任务调度器才能完成的定时功>能。例如,Linux 中的 crontabe 只能精确到每分钟执行一次,而 MySQL 的事件调度器则可以实现每秒钟执行一个任务,这在一些对实时性要>求较高的环境下就非常实用了。

  事件调度器是定时触发执行的,在这个角度上也可以称作是"临时的触发器"。触发器只是针对某个表产生的事件执行一些语句,而事件调度器则是在某一个(间隔)时间执行一些语句。事件是由一个特定的线程来管理的,也就是所谓的"事件调度器"。启用事件调度器后,拥有 SUPER 权限的账户执行 SHOW PROCESSLIST 就可以看到这个线程了。通过设定全局变量event_scheduler 的值即可动态的控制事件调度器是否启用。

(root:localhost:)test> SET GLOBAL event_scheduler = ON;
(root:localhost:)test> show processlistG
*************************** 4. row ***************************
   Id: 46147
  User: event_scheduler
  Host: localhost
   db: NULL
Command: Daemon
  Time: 1
 State: Waiting on empty queue
  Info: NULL

  如上,该线程的所有者是 event_scheduler。

  二、应用案例

  本案例是利用 event scheduler 的特性,每秒钟调用一次存储过程,用于判断 SLAVE 是否正常运行,如果发现 SLAVE 关闭了,忽略 0 次错误,然后重新启动 SLAVE。

  首先创建存储过程

  delimiter //
create procedure `Slave_Monitor`()
begin
  SELECT VARIABLE_VALUE INTO @SLAVE_STATUS
FROM information_schema.GLOBAL_STATUS
WHERE VARIABLE_NAME='SLAVE_RUNNING';
  IF ('ON' != @SLAVE_STATUS) THEN
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=0;
SLAVE START;
END IF;
  end; //
delimiter ;

  由于存储过程中无法调用类似 SHOW SLAVE STATUS 这样的语句,因此无法得到确切的复制错误信息和错误代码,不能进一步的处理 SLAVE 停止的各种情况。

  接着,创建任务

CREATE EVENT IF NOT EXISTS `Slave_Monitor`
ON SCHEDULE EVERY 5 SECOND
ON COMPLETION PRESERVE
DO
CALL Slave_Monitor();

  创建了一个任务,每 5秒钟 执行一次,任务结束后依旧保留该任务,而不是删除。当然了,在本例中的任务不会结束,除非将它手动禁止了。

  如果在运行中想要临时关闭一下某个任务,执行 ALTER EVENT 语句即可:

  (root:localhost:)test> alter event `Slave_Monitor` ON
COMPLETION PRESERVE DISABLE;
(root:localhost:)test> alter event `Slave_Monitor` ON
COMPLETION PRESERVE ENABLE;

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Goat Simulator 3 でホラーコリドーミッションを完了する方法 Goat Simulator 3 でホラーコリドーミッションを完了する方法 Feb 25, 2024 pm 03:40 PM

Goat Simulator 3 でホラーコリドーミッションを完了する方法

修正: Windows タスク スケジューラでのオペレーター拒否要求エラー 修正: Windows タスク スケジューラでのオペレーター拒否要求エラー Aug 01, 2023 pm 08:43 PM

修正: Windows タスク スケジューラでのオペレーター拒否要求エラー

Goat Simulator 3 で帝国の墓ミッションをクリアする方法 Goat Simulator 3 で帝国の墓ミッションをクリアする方法 Mar 11, 2024 pm 01:10 PM

Goat Simulator 3 で帝国の墓ミッションをクリアする方法

Goat Simulator 3 でスティーブ救出ミッションを実行する方法 Goat Simulator 3 でスティーブ救出ミッションを実行する方法 Feb 25, 2024 pm 03:34 PM

Goat Simulator 3 でスティーブ救出ミッションを実行する方法

Douyin ファン グループのタスクはどこで見つけられますか? Douyinファンクラブのレベルは下がりますか? Douyin ファン グループのタスクはどこで見つけられますか? Douyinファンクラブのレベルは下がりますか? Mar 07, 2024 pm 05:25 PM

Douyin ファン グループのタスクはどこで見つけられますか? Douyinファンクラブのレベルは下がりますか?

Windows 11 でタスク マネージャーのプロセス更新を停止し、タスクをより簡単に強制終了する方法 Windows 11 でタスク マネージャーのプロセス更新を停止し、タスクをより簡単に強制終了する方法 Aug 20, 2023 am 11:05 AM

Windows 11 でタスク マネージャーのプロセス更新を停止し、タスクをより簡単に強制終了する方法

タイミング分析ペンタゴンウォリアー!清華大学が TimesNet を提案: 予測、充填、分類、検出をリード タイミング分析ペンタゴンウォリアー!清華大学が TimesNet を提案: 予測、充填、分類、検出をリード Apr 11, 2023 pm 07:34 PM

タイミング分析ペンタゴンウォリアー!清華大学が TimesNet を提案: 予測、充填、分類、検出をリード

Windows 11 タスクバーの「タスクの終了」オプションについて知っておくべきことすべて Windows 11 タスクバーの「タスクの終了」オプションについて知っておくべきことすべて Aug 25, 2023 pm 12:29 PM

Windows 11 タスクバーの「タスクの終了」オプションについて知っておくべきことすべて

See all articles