濮阳杆衣贸易有限公司

主頁 > 知識庫 > 老生常談mysql event事件調(diào)度器(必看篇)

老生常談mysql event事件調(diào)度器(必看篇)

熱門標(biāo)簽:昆明智能外呼系統(tǒng)中心 地圖標(biāo)注培訓(xùn) 南宋地圖標(biāo)注黃河華山 手機用地圖標(biāo)注工具 安國在哪里辦理400電話 電銷機器人公眾號推送 電銷機器人說明書 長安區(qū)違法建房地圖標(biāo)注 智能電銷機器人靠譜么

概述

MySQL也有自己的事件調(diào)度器,簡單地可以理解為linux的crontab job,不過對于SQL應(yīng)用來說,它的功能更齊全,也更易于維護。個人感覺如果數(shù)量創(chuàng)建太多的話,也可能影響DB性能,且不易調(diào)試。

MySQL事件調(diào)度器的主要內(nèi)容

總開關(guān)

參數(shù)event_scheduler為事件調(diào)度器的總開關(guān),一般來說設(shè)置為ON或者OFF就好,不建議設(shè)置成disabled,如果設(shè)置為ON,show processlist可看到該線程


創(chuàng)建,修改,查看等語法

關(guān)于如何創(chuàng)建,修改event這里不做敘述,創(chuàng)建語法如下,具體的含義可參考下面關(guān)于event信息表介紹。也可以參考官網(wǎng)文檔鏈接,http://dev.mysql.com/doc/refman/5.6/en/create-event.html


查看創(chuàng)建好的event,在進入當(dāng)前db后,show create event xxx\G



event的信息查詢和含義

查看某個event的狀態(tài)信息,可查看mysql.event或者information_schema.events,或者簡單地切到當(dāng)前DB后執(zhí)行show events; 三者的內(nèi)容基本一致,information_schema無法做了下數(shù)據(jù)復(fù)制,更改了下列名稱和starts時間以便更好的閱讀。這里已information_schema.events里的信息為例解釋


EVENT_CATALOG:一般都是def,不管

EVENT_SCHEMA:event所在的schema

EVENT_NAME:event的名稱

DEFINER:event的定義者,和定義這個event時,默認(rèn)selectcurrent_user()的結(jié)果一致,如果該user有super權(quán)限,可以指定為其他用戶

TIME_ZONE:event使用的時區(qū),默認(rèn)是system,建議別做修改

EVENT_BODY:一般都是SQL,不用管

EVENT_DEFINITION:該event的內(nèi)容,可以是具體的insert等SQL,也可以是一個調(diào)用存儲過程的操作

EVENT_TYPE:這個參數(shù)比較重要,定義的時候指定,有兩個值:RECURRING和ONE TIME,RECURRING表示只要符合條件就會重復(fù)執(zhí)行,而ONE TIME只會調(diào)用一次

EXECUTE_AT: 針對one-time類型的event有效,如果是RECURRING類型的event一般為NULL,表示該event的預(yù)計執(zhí)行時間

INTERVAL_VALUE:針對RECURRING類型的event有效,表示執(zhí)行間隔長度

INTERVAL_FIELD:針對RECURRING類型的event有效,表示執(zhí)行間隔的單位,一般是SECOND,DAY等值,可參考創(chuàng)建語法

SQL_MODE:當(dāng)前event采用的SQL_MODE

STARTS:針對RECURRING類型的event有效,表示一個event從哪個時間點點開始執(zhí)行,和one-time的EXECUTE_AT功能類似。為NULL表示一符合條件就開始執(zhí)行

ENDS:針對RECURRING類型的event有效,表示一個event到了哪個時間點后不再執(zhí)行,如果為NULL就是永不停止

STATUS:一般有三個值,ENABLED, DISABLED和 SLAVESIDE_DISABLED,其中ENABLED表示激活這個event,該event只要符合其他條件就會執(zhí)行;DISABLED狀態(tài)改event將不會執(zhí)行,SLAVESIDE_DISABLED表示在從庫上不執(zhí)行該event。需要特別注意在從庫上不要執(zhí)行任何形式的event,因為如果主庫執(zhí)行一次,復(fù)制到從庫后,從庫再執(zhí)行一次的話,那就數(shù)據(jù)不一致了,一般來說直接禁用掉從庫上的總開關(guān)event_scheduler就行。

ON_COMPLETION:只有兩種值,PRESERVE和NOT PRESERVE,PRESERVE

CREATED:event的創(chuàng)建時間

LAST_ALTERED:event最新一次被修改的時間

LAST_EXECUTED:event最近一次執(zhí)行的時間,如果為NULL表示從未執(zhí)行過

EVENT_COMMENT:event的注釋信息

ORIGINATOR:當(dāng)前event創(chuàng)建時的server-id,用于主從上的處理,比如SLAVESIDE_DISABLED

CHARACTER_SET_CLIENT:event創(chuàng)建時的客戶端字符集,即character_set_client

COLLATION_CONNECTION:event創(chuàng)建時的連接字符校驗規(guī)則,即collation_connection

DATABASE_COLLATION:event創(chuàng)建時的數(shù)據(jù)庫字符集校驗規(guī)則

EVENT的權(quán)限管理

1 設(shè)置event_scheduler系統(tǒng)變量,需要super_priv權(quán)限

2 創(chuàng)建,修改和刪除event需要該user用戶EVENT權(quán)限,該權(quán)限是schema級別的

3 對應(yīng)于event的具體內(nèi)容,需要對應(yīng)的權(quán)限。比如event里有對某張表的insert操作,那么該user需要對該表的insert操作,不然LAST_EXECUTED一直會是NULL

EVENT的狀態(tài)查詢

通過以下命令查看DB啟動以來的event的相關(guān)信息統(tǒng)計

mysql> showglobal status like '%event%';

+--------------------------+-------+

|Variable_name | Value |

+--------------------------+-------+

|Com_alter_event | 0 |

|Com_create_event | 2 |

|Com_drop_event | 2 |

|Com_show_binlog_events | 0 |

|Com_show_create_event | 191 |

|Com_show_events | 40 |

|Com_show_relaylog_events | 0 |

+--------------------------+-------+

7 rows in set(0.00 sec)

使用建議

1 如果主庫已經(jīng)執(zhí)行過,從庫上務(wù)必要保證event不會執(zhí)行(除非故意在slave上創(chuàng)建的event)

2 創(chuàng)建,刪除等操作嚴(yán)禁直接操作mysql.event表,而是通過create等正規(guī)語法實現(xiàn),不然會導(dǎo)致元數(shù)據(jù)混亂,各種莫名其妙的問題隨之產(chǎn)生,比如event不執(zhí)行或者重復(fù)執(zhí)行。這時一般只有重啟DB才能解決 了。

3 創(chuàng)建的event涉及到海量數(shù)據(jù)變更的話,要做好充分測試,確保不影響現(xiàn)網(wǎng)服務(wù)

4 如果需要備份帶有event的DB,mysqldump時需要加上--event參數(shù)

以上這篇老生常談mysql event事件調(diào)度器(必看篇)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • mysql的計劃任務(wù)與事件調(diào)度實例分析
  • MySQL計劃任務(wù)(事件調(diào)度器) Event Scheduler介紹
  • MySQL定時任務(wù)(EVENT事件)如何配置詳解
  • 帶你了解MySQL中的事件調(diào)度器EVENT
  • mysql事件之修改事件(ALTER EVENT)、禁用事件(DISABLE)、啟用事件(ENABLE)、事件重命名及數(shù)據(jù)庫事件遷移操作詳解
  • mysql定時任務(wù)(event事件)實現(xiàn)詳解
  • MySQL binlog中的事件類型詳解
  • 詳解MySQL用事件調(diào)度器Event Scheduler創(chuàng)建定時任務(wù)
  • 逐步講解MySQL中定時事件計劃的創(chuàng)建
  • MySQL的事件調(diào)度器使用介紹
  • mysql事件的開啟和調(diào)用
  • MySQL 使用事件(Events)完成計劃任務(wù)

標(biāo)簽:吉安 長沙 江門 武漢 東莞 南昌 合肥 潛江

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《老生常談mysql event事件調(diào)度器(必看篇)》,本文關(guān)鍵詞  老生常談,mysql,event,事件,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《老生常談mysql event事件調(diào)度器(必看篇)》相關(guān)的同類信息!
  • 本頁收集關(guān)于老生常談mysql event事件調(diào)度器(必看篇)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    甘孜县| 新源县| 剑河县| 社会| 南皮县| 托克托县| 本溪| 沾益县| 封丘县| 南川市| 高碑店市| 昌都县| 准格尔旗| 天峨县| 秀山| 海伦市| 商水县| 兴义市| 宣化县| 和龙市| 新密市| 上虞市| 连云港市| 常德市| 南岸区| 凯里市| 紫金县| 云南省| 固镇县| 丰镇市| 锦屏县| 墨玉县| 龙陵县| 太康县| 兴城市| 肃北| 潮安县| 芜湖县| 高唐县| 恩施市| 汉川市|