<tbody id="86a2i"></tbody>


<dd id="86a2i"></dd>
<progress id="86a2i"><track id="86a2i"></track></progress>

<dd id="86a2i"></dd>
<em id="86a2i"><ruby id="86a2i"><u id="86a2i"></u></ruby></em>

    <dd id="86a2i"></dd>

    MySQL定時清理表數據

    針對一些每天都會產生大量數據的表,比如說報警、日志表等,數據量太大占用了較多的空間,可以選擇定時清理這些表,只保留一段時間內的數據

    對某個表只保留一個月內的數據

    查看是否開啟MySQL定時任務

    # 顯示為ON則已開啟
    SHOW VARIABLES LIKE 'event_scheduler';

    MySQL定時任務,清理表數據方式

    顯示為ON表示已經開啟

    若未開啟,可以手動開啟

    在my.cnf(windows下是my.ini)添加配置 event_scheduler=ON

    添加完畢后,重啟MySQL服務即可

    也可以通過語句方式開啟,但是這種方式只在當前啟動的實例有效,重啟MySQL服務后就會失效

    set global event_scheduler=1;

    創建存儲過程

    CREATE PROCEDURE `del_data_count`(IN date_inter INT)
    BEGIN
    DELETE FROM alarminfo
    WHERE
    (TO_DAYS(NOW()) - TO_DAYS(alarmTime))>=date_inter; # 當前系統時間減去表的時間字段名
    END

    創建事件

    # 創建事件
    CREATE EVENT `del_tbl_expired_data`
    # 表示創建時間定時周期,以及開始時間,該處表示從明天1點從開始,每天執行一次該任務
    ON SCHEDULE EVERY '1' DAY STARTS DATE_ADD(DATE_ADD(CURDATE(), INTERVAL 1 DAY), INTERVAL 1 HOUR)
    # 表示創建后并不開始生效
    ON COMPLETION PRESERVE DISABLE
    # 執行存儲過程,刪除30天之前的數據
    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定時自動刪除數據表

    描述

    自MySQL5.1.6起,增加了一個非常有特色的功能–事件調度器(EventScheduler),可以用做定時執行某些特定任務(例如:刪除記錄、對數據進行匯總等等),來取代原先只能由操作系統的計劃任務來執行的工作。

    更值得一提的是MySQL的事件調度器可以精確到每秒鐘執行一個任務,而操作系統的計劃任務(如:Linux下的CRON或Windows下的任務計劃)只能精確到每分鐘執行一次。

    對于一些對數據實時性要求比較高的應用(例如:股票、賠率、比分等)就非常適合。

    開啟事件調度器

    1、確認是否開啟

    SHOW VARIABLES LIKE 'event_scheduler';

    2、開啟命令

    SET GLOBAL event_scheduler = ON;

    創建事件<創建后默認開啟>

    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天數據

    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;

    以上為個人經驗,希望能給大家一個參考,也希望大家多多支持。

    原文地址:https://www.cnblogs.com/lonecloud/p/11044182.html

    相關文章:

    免费一级a片在线播放视频|亚洲娇小性XXXX色|曰本无码毛片道毛片视频清|亚洲一级a片视频免费观看
    <tbody id="86a2i"></tbody>

    
    
    <dd id="86a2i"></dd>
    <progress id="86a2i"><track id="86a2i"></track></progress>

    <dd id="86a2i"></dd>
    <em id="86a2i"><ruby id="86a2i"><u id="86a2i"></u></ruby></em>

      <dd id="86a2i"></dd>