16、Event事件(定时任务)是什么?
在數(shù)據(jù)庫管理中,經(jīng)常要周期性的執(zhí)行某一命令或 SQL 語句,于是 MySQL 5.1 版本以后就提供了事件,它可以很方便的實(shí)現(xiàn) MySQL 數(shù)據(jù)庫的計(jì)劃任務(wù),定期運(yùn)行指定命令,使用起來非常簡單方便。
**事件(Event)**也可稱為事件調(diào)度器(Event Scheduler),是用來執(zhí)行定時(shí)任務(wù)的一組 SQL 集合,可以通俗理解成 MySQL 中的定時(shí)器。一個(gè)事件可調(diào)用一次,也可周期性的啟動(dòng)。
事件可以作為定時(shí)任務(wù)調(diào)度器,取代部分原來只能用操作系統(tǒng)的計(jì)劃任務(wù)才能執(zhí)行的工作。另外,更值得一提的是,MySQL 的事件可以實(shí)現(xiàn)每秒鐘執(zhí)行一個(gè)任務(wù),非常適合對實(shí)時(shí)性要求較高的環(huán)境,而操作系統(tǒng)的計(jì)劃任務(wù)只能精確到每分鐘一次。
事件和觸發(fā)器類似,都是在某些事情發(fā)生時(shí)啟動(dòng)。當(dāng)數(shù)據(jù)庫啟動(dòng)一條語句的時(shí)候,觸發(fā)器就啟動(dòng)了,而事件是根據(jù)調(diào)度事件來啟動(dòng)的。由于他們彼此相似,所以事件也稱為臨時(shí)性觸發(fā)器。
查看事件是否開啟
在 MySQL 中,調(diào)度器 event_scheduler 負(fù)責(zé)調(diào)用事件。我們可以通過以下幾種命令查看事件是否開啟,一般情況下默認(rèn)值為 OFF。SQL 命令和運(yùn)行結(jié)果如下:
mysql> SHOW VARIABLES LIKE 'event_scheduler'; +-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | event_scheduler | OFF | +-----------------+-------+ 1 row in set, 1 warning (0.02 sec)mysql> SELECT @@event_scheduler; +-------------------+ | @@event_scheduler | +-------------------+ | OFF | +-------------------+ mysql> SHOW PROCESSLIST; +----+------+-----------------+------+---------+------+----------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +----+------+-----------------+------+---------+------+----------+------------------+ | 2 | root | localhost:56279 | NULL | Query | 0 | starting | SHOW PROCESSLIST | +----+------+-----------------+------+---------+------+----------+------------------+從結(jié)果可以看出,事件沒有開啟。因?yàn)閰?shù) event_scheduler 的值為 OFF,并且在 PROCESSLIST 中查看不到 event_scheduler 的信息。如果參數(shù) event_scheduler 的值為 ON,或者在 PROCESSLIST 中顯示了 event_scheduler 的信息,則說明事件已經(jīng)開啟。
開啟事件
開啟事件主要通過以下兩種方式實(shí)現(xiàn)。
1)通過設(shè)置全局參數(shù)修改
可以使用 SET GLOBAL 命令設(shè)定全局變量 event_scheduler 的值,開啟或關(guān)閉事件。將 event_scheduler 參數(shù)的值設(shè)置為 ON,表示開啟事件;設(shè)置為 OFF,則關(guān)閉事件。
例如,要開啟事件可以在命令行窗口中輸入以下命令。
mysql> SET GLOBAL event_scheduler = ON ; mysql> SHOW VARIABLES LIKE 'event_scheduler'; +-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | event_scheduler | ON | +-----------------+-------+ 1 row in set, 1 warning (0.01 sec)結(jié)果顯示,event_scheduler 的值為 ON,表示事件已經(jīng)開啟。
通過 SET GLOBAL 命令開啟或關(guān)閉事件,MySQL 重啟服務(wù)后事件又會(huì)回到原來的狀態(tài),如果想要始終開啟或關(guān)閉事件,可以修改 MySQL 配置文件。
2)更改配置文件
在 MySQL 配置文件中找到 [mysqld] 選項(xiàng),然后在下面添加以下代碼開啟事件。
在配置文件中添加代碼并保存文件后,重啟 MySQL 服務(wù)才能生效。
通過該方法開啟或關(guān)閉事件,重啟 MySQL 服務(wù)后,不會(huì)回到原來的狀態(tài)。例如,此時(shí)重啟 MySQL 服務(wù)器,然后查看事件是否開啟。
mysql> SHOW VARIABLES LIKE 'event_scheduler'; +-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | event_scheduler | ON | +-----------------+-------+結(jié)果顯示,參數(shù) event_scheduler 的值為 ON,表示已經(jīng)開啟。
總結(jié)
以上是生活随笔為你收集整理的16、Event事件(定时任务)是什么?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 14、查看触发器
- 下一篇: 15、修改和删除触发器(DROP TRI