电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

MySQL 使用事件(Events)完成計劃任務

瀏覽:133日期:2023-10-02 15:57:50

事件可以指定單次或以一定的間隔執行 SQL 代碼。通常是將復雜的 SQL 語句使用存儲過程封裝好,然后周期性地調用存儲過程完成一定的任務。

事件無需建立服務端連接,而是通過一個獨立的事件調度器線程完成初始化。事件沒有輸入參數也沒有返回值,這是因為沒有連接也就不存在輸入和輸出了。啟用后,可以通過服務端日志查看執行的指令,但是很難知道具體來自哪個事件。也可以查詢 INFORMATION_SCHEMA.EVENTS 表了解事件的狀態,例如最近一次執行的時間。

與存儲過程類似,事件也需要考慮類似的問題。首先,事件增加了 MySQL 服務端額外的工作。雖然事件本身的負荷很小,但是事件調用的 SQL 語句可能對性能產生嚴重的影響。另外,事件也會有存儲過程那樣基于語句的復制帶來的那一類問題。事件比較好的應用是做諸如周期性的維護任務、重建緩存、數據統計、保存監測和診斷的狀態值等任務。

下面的例子創建了一個事件,調用存儲過程每周對指定的數據庫運行數據表優化:

CREATE EVENT optimize_somedb ON SCHEDULE EVERY 1 WEEKDO CALL optimize_tables(’somedb’);

可以指定事件是否需要重復執行。在某些情況下是沒問題的,但是有些情況則不行。以上面的例子為例,你也許是想在所有的副本上運行 OPTIMIZE TABLE 指令。但是,需要知道的是如果是全部副本都同時執行這個操作的話,這會影響整個服務端性能(例如鎖表)。 而且,周期性事件可能會花很長事件才能完成,甚至有可能下一個事件還沒結束新的事件就又開始執行了。MySQL 不會阻止這樣的情況,因此需要自己寫代碼實現相同任務的互斥。可以使用加鎖的方式達到這一目的:

CREATE EVENT optimize_somedb ON SCHEDULE EVERY 1 WEEKDO BEGINDECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN END; IF GET_LOCK(’somedb’, 0) THEN DO CALL optimize_tables(’some_db’); END IF; DO RELEASE_LOCK(’somedb’);END

看起來“多余”的 continue handler 可以保證即便是發生了異常也會釋放鎖。

雖然事件與連接無關,但是卻是與線程有關的。MySQL 服務端有一個主事件調度線程,可以通過在服務端配置中開啟:

SET GLOBAL event_handler := 1;

一旦啟用,這個線程會執行指定調度的事件。可以通過查看服務端的錯誤日志來了解事件執行的信息。

雖然事件調度器是單線程的,但是事件本身是可以并發執行的。每次事件執行的時候服務端會創建新的進程。在事件內部,可以調用 CONNECTION_ID()獲取一個唯一的值(雖然實際沒有連接),實際返回的就是線程 id。進程和線程在事件執行完后會銷毀。可以通過 SHOW PROCESSLIST 查看,在 Command 列中會顯示為 Connect。

雖然,進程創建了實際執行事件的線程,但線程在事件完成后會銷毀,并不會放入緩存中,因此 Threads_created 這個狀態計數器并不會看到增加。

結語:事件與應用程序、或操作系統級的定時任務相比,由于沒有了 SQL 連接建立的過程,因此效率會更高,而且開銷不大。適用于需要周期性運行的 SQL 腳本任務,例如數據表優化、生成統計報表數據等等。但是,需要注意,事件本身可能存在并發問題,這個可以通過加鎖解決。同時,如果事件需要重復執行,最好是不要執行過于復雜耗時的任務。

以上就是MySQL 使用事件(Events)完成計劃任務的詳細內容,更多關于MySQL 用事件完成計劃任務的資料請關注好吧啦網其它相關文章!

標簽: MySQL 數據庫
相關文章:
主站蜘蛛池模板: 热工多功能信号校验仪-热电阻热电偶校验仿真仪-金湖虹润仪表 | 无负压供水设备,消防稳压供水设备-淄博创辉供水设备有限公司 | 二手色谱仪器,十万分之一分析天平,蒸发光检测器,电位滴定仪-湖北捷岛科学仪器有限公司 | 石英粉,滑石粉厂家,山东滑石粉-莱州市向阳滑石粉有限公司 | 上海电子秤厂家,电子秤厂家价格,上海吊秤厂家,吊秤供应价格-上海佳宜电子科技有限公司 | 金蝶帐无忧|云代账软件|智能财税软件|会计代账公司专用软件 | 隔爆型防爆端子分线箱_防爆空气开关箱|依客思 | 水上浮桥-游艇码头-浮动码头-游船码头-码瑞纳游艇码头工程 | 重庆轻质隔墙板-重庆安吉升科技有限公司 | 车件|铜件|车削件|车床加工|五金冲压件-PIN针,精密车件定制专业厂商【东莞品晔】 | 山东集装箱活动房|济南集装箱活动房-济南利森集装箱有限公司 | 铝合金线槽_铝型材加工_空调挡水板厂家-江阴炜福金属制品有限公司 | 代理记账_免费注册公司_营业执照代办_资质代办-【乐财汇】 | 河南凯邦机械制造有限公司| 神超官网_焊接圆锯片_高速钢锯片_硬质合金锯片_浙江神超锯业制造有限公司 | 防渗土工膜|污水处理防渗膜|垃圾填埋场防渗膜-泰安佳路通工程材料有限公司 | 早报网| 五轴加工中心_数控加工中心_铝型材加工中心-罗威斯 | 新能源汽车电池软连接,铜铝复合膜柔性连接,电力母排-容发智能科技(无锡)有限公司 | 上海物流公司,上海货运公司,上海物流专线-优骐物流公司 | 低浓度恒温恒湿称量系统,强光光照培养箱-上海三腾仪器有限公司 | 翅片管换热器「型号全」_厂家-淄博鑫科环保 | 庭院灯_太阳能景观灯_草坪灯厂家_仿古壁灯-重庆恒投科技 | 自动化生产线-自动化装配线-直流电机自动化生产线-东莞市慧百自动化有限公司 | 大型冰雕-景区冰雕展制作公司,3D创意设计源头厂家-[赛北冰雕] | 江苏齐宝进出口贸易有限公司| 苏州柯瑞德货架-仓库自动化改造解决方案 | 塑料薄膜_PP薄膜_聚乙烯薄膜-常州市鑫美新材料包装厂 | 温控器生产厂家-提供温度开关/热保护器定制与批发-惠州市华恺威电子科技有限公司 | 润滑脂-高温润滑脂-轴承润滑脂-食品级润滑油-索科润滑油脂厂家 | 免费个人pos机申请办理-移动pos机刷卡-聚合收款码办理 | 冷凝水循环试验箱-冷凝水试验箱-可编程高低温试验箱厂家-上海巨为(www.juweigroup.com) | 乐考网-银行从业_基金从业资格考试_初级/中级会计报名时间_中级经济师 | 房车价格_依维柯/大通/东风御风/福特全顺/江铃图片_云梯搬家车厂家-程力专用汽车股份有限公司 | 双舌接地线-PC68数字式高阻计-ZC36|苏海百科 | 高速混合机_锂电混合机_VC高效混合机-无锡鑫海干燥粉体设备有限公司 | 岩棉切条机厂家_玻璃棉裁条机_水泥基保温板设备-廊坊鹏恒机械 | 智能终端_RTU_dcm_北斗星空自动化科技| 广东恩亿梯电源有限公司【官网】_UPS不间断电源|EPS应急电源|模块化机房|电动汽车充电桩_UPS电源厂家(恩亿梯UPS电源,UPS不间断电源,不间断电源UPS) | 微信聊天记录恢复_手机短信删除怎么恢复_通讯录恢复软件下载-快易数据恢复 | 蓝莓施肥机,智能施肥机,自动施肥机,水肥一体化项目,水肥一体机厂家,小型施肥机,圣大节水,滴灌施工方案,山东圣大节水科技有限公司官网17864474793 |