亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

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

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

瀏覽:123日期: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 數據庫
相關文章:
主站蜘蛛池模板: 哪里可以免费看毛片 | 久久久久久不卡 | 日韩手机看片福利精品 | 黄色片网站大全 | 日韩欧美一区二区在线观看 | 欧美日韩色视频在线观看 | 国产欧美激情一区二区三区 | 2022国产情侣真实露脸在线 | 国产或人精品日本亚洲77美色 | 欧洲1区二区三区二页 | 国产一区2区 | 一级作爱视频 | 国产精品午夜久久 | 在线亚洲欧洲福利视频 | 国产精品对白刺激久久久 | 2020久久精品国产免费 | 久久国产免费观看 | 一级特级黄色片 | 韩国亚洲伊人久久综合影院 | 高清潢色大片 | 欧美日韩国产超高清免费看片 | 九九视频高清视频免费观看 | 你懂的网站在线观看网址 | 国产成人18黄网站免费网站 | 青草视频网 | 99欧美在线| 青青草手机在线观看 | pans全部视频在线观看 | 精品夜夜春夜夜爽久久 | 丰满的大乳老师三级在线观看 | 在线a人片免费观看国产 | 午夜在线社区视频 | 亚洲欧美日本综合一区二区三区 | 欧美成人v视频免费看 | 国产在线日韩在线 | 免费看片黄色 | 国产精品www夜色影视 | 亚1洲二区三区四区免费 | 日本高清色视频在线观看免费 | 24小时中文乱码字幕在线观看 | 又黄又爽视频 |