MySQL定時任務,清理表數(shù)據方式
MySQL定時清理表數(shù)據
針對一些每天都會產生大量數(shù)據的表,比如說報警、日志表等,數(shù)據量太大占用了較多的空間,可以選擇定時清理這些表,只保留一段時間內的數(shù)據
對某個表只保留一個月內的數(shù)據
查看是否開啟MySQL定時任務
# 顯示為ON則已開啟 SHOW VARIABLES LIKE 'event_scheduler';

顯示為ON表示已經開啟
若未開啟,可以手動開啟
在my.cnf(windows下是my.ini)添加配置 event_scheduler=ON
添加完畢后,重啟MySQL服務即可
也可以通過語句方式開啟,但是這種方式只在當前啟動的實例有效,重啟MySQL服務后就會失效
set global event_scheduler=1;
創(chuàng)建存儲過程
CREATE PROCEDURE `del_data_count`(IN date_inter INT) BEGIN DELETE FROM alarminfo WHERE (TO_DAYS(NOW()) - TO_DAYS(alarmTime))>=date_inter; # 當前系統(tǒng)時間減去表的時間字段名 END
創(chuàng)建事件
# 創(chuàng)建事件 CREATE EVENT `del_tbl_expired_data` # 表示創(chuàng)建時間定時周期,以及開始時間,該處表示從明天1點從開始,每天執(zhí)行一次該任務 ON SCHEDULE EVERY '1' DAY STARTS DATE_ADD(DATE_ADD(CURDATE(), INTERVAL 1 DAY), INTERVAL 1 HOUR) # 表示創(chuàng)建后并不開始生效 ON COMPLETION PRESERVE DISABLE # 執(zhí)行存儲過程,刪除30天之前的數(shù)據 DO CALL del_data_count (30);
相關語句:
# 查看已有定時事件任務 SHOW EVENTS; # 開啟事件 alter event event_name on completion preserve enable; # 關閉事件 alter event event_name on completion preserve disable;
MySQL定時自動刪除數(shù)據表
描述
自MySQL5.1.6起,增加了一個非常有特色的功能–事件調度器(EventScheduler),可以用做定時執(zhí)行某些特定任務(例如:刪除記錄、對數(shù)據進行匯總等等),來取代原先只能由操作系統(tǒng)的計劃任務來執(zhí)行的工作。
更值得一提的是MySQL的事件調度器可以精確到每秒鐘執(zhí)行一個任務,而操作系統(tǒng)的計劃任務(如:Linux下的CRON或Windows下的任務計劃)只能精確到每分鐘執(zhí)行一次。
對于一些對數(shù)據實時性要求比較高的應用(例如:股票、賠率、比分等)就非常適合。
開啟事件調度器
1、確認是否開啟
SHOW VARIABLES LIKE 'event_scheduler';
2、開啟命令
SET GLOBAL event_scheduler = ON;
創(chuàng)建事件<創(chuàng)建后默認開啟>
CREATE EVENT [IF NOT EXISTS] event_name ON SCHEDULE schedule ?[ON COMPLETION [NOT] PRESERVE] [ENABLE | DISABLE] [COMMENT 'comment'] ?DO sql_statement;?
例如:
1.每分鐘(60S)清空一次記錄表
use database_name; create event table_truncate on schedule every 60 second do truncate table operator_record_log;
2.每30天(2592000S)清空30天前的所有記錄,僅保留近30天數(shù)據
use database_name; create event table_truncate on schedule every 2592000 second do delete from operator_record_log where create_date < DATE_SUB(CURDATE(),INTERVAL 30 DAY);
3.指定時間將表清空
use database_name; create event table_truncate on schedule at timestamp '2022-01-01 00:00:00' do truncate table operator_record_log;
4.每天定時清空
use database_name; create event table_truncate on schedule every 1 day starts '2022-01-01 00:00:00' do truncate table operator_record_log;
關閉事件
alter event event_name disable;
開啟事件
alter event event_name enable;
刪除事件
drop event if exists event_name;
查看事件
show events;
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
MySql command line client命令操作大全
這篇文章主要介紹了MySql command line client命令操作大全,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧2024-01-01
Mysql清空表數(shù)據庫命令truncate和delete詳解
這篇文章主要介紹了Mysql數(shù)據庫清空表truncate和delete的相關知識,本文給大家講解的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-06-06
MySQL Community Server 8.0.11安裝配置方法圖文教程
這篇文章主要為大家詳細 介紹了MySQL Community Server 8.0.11安裝配置方法圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-05-05
php后臺經常提示無法連接mysql 刷新后又可以訪問的解決方法
這幾天有一臺MySQL數(shù)據庫服務器出現(xiàn)了頻繁的掉線情況,通過排查,并沒有排查出哪個網站被攻擊,百思不得其解中的時候,群里有個朋友說是因為微軟KB967723造成的,網上搜索了一下,果然很多人都是這樣的問題,都是windows系統(tǒng)下安裝的MySQL造成的2011-05-05

