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

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

MySQL定時器常用案例

瀏覽:3日期:2023-07-20 19:52:12
目錄MySQL-定時器介紹開啟定時器定時器常用案例周期性周期一次性MySQL-定時器介紹

在開發過程中經常會遇到這樣一個問題:每天或者每月必須定時去執行一條sql語句或更新或刪除或執行特定的sql語句。而遇到這樣的問題我想很多人會說,我直接在程序代碼里寫一個定時器不就行了,對你說的沒問題,但是有些時候只是數據層面的問題,那么我們在程序里寫一個定時器就有點浪費了,

比如:

定時清理臟數據在每月的月底統計這個月的業務,將統計后的值放入統計表中分段定時導出批量數據,進行數據遷移定時整理其他系統推送來的數據,然后將整理后的數據放入本系統業務表中…自行研究

可以看出來,mysql定時器作用其實挺大的,只是很多人都把它忽略了而已,但是缺陷也很明顯就是只能處理mysql內已有的數據,這個就看你自己了具體怎么使用了.

注意: mysql定時器是從mysql5.1開始的,如果你的mysql版本低于5.1,那就不能使用mysql定時器

開啟定時器

在使用定時器前必須檢查一下,mysql的定時器是否開啟的, 默認是關閉的.

查詢定時器是否開啟OFF 關閉 , ON開啟

show VARIABLES like 'event_scheduler'

開啟mysql定時器

SET GLOBAL event_scheduler = 1;

然后我們在查詢下就是ON了,到這里我們mysql定時器開啟成功了

注意: 如果mysql服務器重啟這個還是會關閉的,

永久解決辦法:找到mysql根目錄下my.ini文件,打開并在[mysqld]標記下方添加一句event_scheduler = ON即可。注意: 不要添加到[mysql]標記下,而是[mysqld]標記下,不然會配置無效。

重啟mysql 之后就會永久生效

使用sql語句創建定時器

為啥不使用Navicat創建定時器呢?, 反正我自我感覺的話,SQL比較踏實,使用Navicat創建定時器總是出現各種問題,我也不知道是不是軟件的問題,還是我自己的問題,反正用sql從來就沒有出現問題過.如果是簡單的定時器創建的話那么使用Navicat 創建也行,沒要求的…

先介紹下常用關鍵字的意思先別管怎么用的,后面參照案例代碼就懂了:

常用的語法關鍵字:

NOT PRESERVE 任務完成后清除定時器, (默認)PRESERVE 任務完成后不清除定時器EVERY 周期執行STARTS ENDS 在某個時間段執行AT 某個時間點執行ENDS 結束定時器時間INTERVAL 間隔(時間)

常用的單位關鍵字:HOUR : 小時SECOND 秒MINUTE : 分鐘DAY : 天MONTH: 月

定時器語法結構:

DROP EVENT IF EXISTS 定時器名稱 ;CREATE EVENT user_event ON SCHEDULE xx -- 定時器從什么開始執行的 (必須)ENDS CURRENT_TIMESTAMP xx -- 定時器開始后在什么時候結束 (非必選) ON COMPLETION xx -- 定時器清除策略 (默認就行)DO sql語句 -- 定時器執行的內容,只允許一條sql語句以分號結束 (必須)

大致就是這樣,別糾結,后面會舉幾個例子你參照參照就行了.

這里有一個地方需要注意:DO 后面能執行的sql語句,只要mysql中有的都能執行,但是每一個定時器只能執行一個sql,如果多條sql的話,建議使用存儲過程,然后在使用定時器執行存儲過程就行了

定時器常用案例周期性

定時器,一直執行

從現在開始每隔x天執行一次

DROP EVENT IF EXISTS user_event ;CREATE EVENT user_eventON SCHEDULE EVERY 9 DAY STARTS NOW()DO call user_procedure();

每天凌晨1點執行

DROP EVENT IF EXISTS user_event ;CREATE EVENT user_eventon schedule EVERY 1 DAY STARTS date_add(date( ADDDATE(curdate(),1)),interval 1 hour) DO call user_procedure();

每個月的一號凌晨1 點執行

DROP EVENT IF EXISTS 定時器名稱 ;CREATE EVENT user_eventON schedule every 1 month starts date_add(date_add(date_sub(curdate(),interval day(curdate())-1 day),interval 1 month),interval 1 hour)DO call user_procedure();

每個季度一號的凌晨1點執行

DROP EVENT IF EXISTS user_event ;CREATE EVENT user_eventON schedule every 1 quarter starts date_add(date_add(date(concat(year(curdate()),'-',elt(quarter(curdate()),1,4,7,10),'-',1)),interval 1 quarter),interval 1 hour)DO call user_procedure();

每年1月1號凌晨1點執行

DROP EVENT IF EXISTS user_event ;CREATE EVENT user_eventON schedule every 1 quarter starts date_add(date_add(date(concat(year(curdate()),'-',elt(quarter(curdate()),1,4,7,10),'-',1)),interval 1 quarter),interval 1 hour)DO call user_procedure(); 周期一次性

定時器執行很多次后在滿足某個條件,定時器結束

從現在開始每天執行一次,5天后停止執行

DROP EVENT IF EXISTS user_event ;CREATE EVENT user_event ON SCHEDULE EVERY 1 DAY ENDS CURRENT_TIMESTAMP + INTERVAL 5 DAYDO call user_procedure();

從現在開始5天后開始執行,一個月后停止執行

DROP EVENT IF EXISTS user_event ;CREATE EVENT user_eventON SCHEDULE EVERY 1 DAY STARTS CURRENT_TIMESTAMP + INTERVAL 5 DAY ENDS CURRENT_TIMESTAMP + INTERVAL 1 MONTHDO call user_procedure();

一次性

滿足指定條件時只會執行一次定時器,然后定時器被清除

在未來指定時間點執行一次

DROP EVENT IF EXISTS user_event ;CREATE EVENT user_event ON SCHEDULE AT TIMESTAMP '2021-09-24 18:26:00' ON COMPLETION NOT PRESERVEDO call user_procedure();

在2021-09-24 18:26:00時候執行user_procedure()存儲過程一次之后,該定時器被系統清除

從現在開始1小時后執行一次

DROP EVENT IF EXISTS user_event ;CREATE EVENT user_event ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR ON COMPLETION NOT PRESERVEDO call user_procedure();

開啟和關閉指定定時器

alter event user_event on completion preserve enable; -- 開啟定時任務alter event user_event on completion preserve disable; -- 關閉定時任務

查看當前用戶的定時任務

注意: 建議在創建定時器的時候使用,root用戶,這樣到時候統一管理也比較方便

能查看到定時器調用的sql

select * from information_schema.`EVENTS`;

能查看到定時器的狀態ENABLED(定時器使開啟狀態)DISABLED (定時器使關閉狀態)

select * from mysql.event;

到此這篇關于MySQL-定時器的文章就介紹到這了,更多相關mysql定時器內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: MySQL 數據庫
主站蜘蛛池模板: 济南拼接屏_山东液晶拼接屏_济南LED显示屏—维康国际官网 | 柴油发电机组_柴油发电机_发电机组价格-江苏凯晨电力设备有限公司 | HV全空气系统_杭州暖通公司—杭州斯培尔冷暖设备有限公司 | 水厂自动化|污水处理中控系统|水利信息化|智慧水务|智慧农业-山东德艾自动化科技有限公司 | 袋式过滤器,自清洗过滤器,保安过滤器,篮式过滤器,气体过滤器,全自动过滤器,反冲洗过滤器,管道过滤器,无锡驰业环保科技有限公司 | RTO换向阀_VOC高温阀门_加热炉切断阀_双偏心软密封蝶阀_煤气蝶阀_提升阀-湖北霍科德阀门有限公司 | 光环国际-新三板公司_股票代码:838504 | 湿地保护| 冷柜风机-冰柜电机-罩极电机-外转子风机-EC直流电机厂家-杭州金久电器有限公司 | 科客,主见不成见| 不锈钢发酵罐_水果酒发酵罐_谷物发酵罐_山东誉诚不锈钢制品有限公司 | 雾度仪_雾度计_透光率雾度仪价格-三恩时(3nh)光电雾度仪厂家 | 悬浮拼装地板_篮球场木地板翻新_运动木地板价格-上海越禾运动地板厂家 | 十二星座查询(性格特点分析、星座运势解读) - 玄米星座网 | 郑州大巴车出租|中巴车租赁|旅游大巴租车|包车|郑州旅游大巴车租赁有限公司 | 诺冠气动元件,诺冠电磁阀,海隆防爆阀,norgren气缸-山东锦隆自动化科技有限公司 | 机制砂选粉机_砂石选粉机厂家-盐城市助成粉磨科技有限公司 | 耐腐蚀泵,耐腐蚀真空泵,玻璃钢真空泵-淄博华舜耐腐蚀真空泵有限公司 | 深圳高新投三江工业消防解决方案提供厂家_服务商_园区智慧消防_储能消防解决方案服务商_高新投三江 | 小小作文网_中小学优秀作文范文大全| 成都顶呱呱信息技术有限公司-贷款_个人贷款_银行贷款在线申请 - 成都贷款公司 | 深圳诚暄fpc首页-柔性线路板,fpc柔性线路板打样生产厂家 | 5L旋转蒸发器-20L-50L旋转蒸发器-上海越众仪器设备有限公司 | 京马网,京马建站,网站定制,营销型网站建设,东莞建站,东莞网站建设-首页-京马网 | 澳威全屋定制官网|极简衣柜十大品牌|衣柜加盟代理|全屋定制招商 百度爱采购运营研究社社群-店铺托管-爱采购代运营-良言多米网络公司 | 电动葫芦|手拉葫芦|环链电动葫芦|微型电动葫芦-北京市凌鹰起重机械有限公司 | 扫地车厂家-山西洗地机-太原电动扫地车「大同朔州吕梁晋中忻州长治晋城洗地机」山西锦力环保科技有限公司 | 定做大型恒温循环水浴槽-工业用不锈钢恒温水箱-大容量低温恒温水槽-常州精达仪器 | 塑料造粒机「厂家直销」-莱州鑫瑞迪机械有限公司 | 福兰德PVC地板|PVC塑胶地板|PVC运动地板|PVC商用地板-中国弹性地板系统专业解决方案领先供应商! 福建成考网-福建成人高考网 | 东风体检车厂家_公共卫生体检车_医院体检车_移动体检车-锦沅科贸 | 快干水泥|桥梁伸缩缝止水胶|伸缩缝装置生产厂家-广东广航交通科技有限公司 | 河南橡胶接头厂家,河南波纹补偿器厂家,河南可曲挠橡胶软连接,河南套筒补偿器厂家-河南正大阀门 | 致胜管家软件服务【在线免费体验】| 桐城新闻网—桐城市融媒体中心主办 | 首页|光催化反应器_平行反应仪_光化学反应仪-北京普林塞斯科技有限公司 | 阴离子聚丙烯酰胺价格_PAM_高分子聚丙烯酰胺厂家-河南泰航净水材料有限公司 | 磁力抛光机_磁力研磨机_磁力去毛刺机-冠古设备厂家|维修|租赁【官网】 | 衬塑设备,衬四氟设备,衬氟设备-淄博鲲鹏防腐设备有限公司 | 火锅底料批发-串串香技术培训[川禾川调官网] | 防火门|抗爆门|超大门|医疗门|隔声门-上海加汇门业生产厂家 |