日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL定时归档

發布時間:2024/10/5 数据库 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL定时归档 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

背景:在很多業務場景中,每過一段時間就需要對大表進行歸檔操作以保障系統對性能穩定,但是這種操作往往會留下很多表空間碎片,所以每隔一段時間也需要對表空間進行清理。

mysql中optimize table 是比較常用的清理磁盤命令,但是這個命令對緩存區有大小要求,如果一次歸檔過多數據,往往耗時久還非常有可能無法成功。

所以只剩下了alter table這個命令,但是這個命令也非常慢:因為原理是先復制表在重建表。那這段時間我們必須保證一直看著?

  自MySQL5.1.6起,增加了一個非常有特色的功能-事件調度器(Event Scheduler),可以用做定時執行某些特定任務(例如:刪除記錄、對數據進行匯總、數據備份等等),來取代原先只能由操作系統的計劃任務來執行的工作。更值得一提的是MySQL的事件調度器可以精確到每秒鐘執行一個任務,而操作系統的計劃任務(如:Linux的cron或Windows下的任務計劃)只能精確到每分鐘執行一次。對于一些對數據實時性要求比較高的應用(例如:股票、賠率、比分等)就非常適合。

由于執行磁盤清理命令的時候往往會鎖表,所以咱還得挑一個晚上每人的時候進行:

  事件調度器有時也可以稱為臨時觸發器(temporal triggers),因為事件調度器是基于特定時間周期觸發來執行某些任務,而觸發器(Triggers)是基于某個表所產生的事件觸發的,區別也就在這里。

  1、在使用這個功能之前必須確保event_scheduler已開啟,可執行  

SET GLOBAL event_scheduler = 1;---或我們可以在配置my.cnf文件 中加上 event_scheduler = 1或SET GLOBAL event_scheduler = ON;來開啟,也可以直接在啟動命令加上“--event_scheduler=1”,例如:mysqld ... --event_scheduler=1注:將事件計劃關閉:SET GLOBAL event_scheduler = 0;

  2、要查看當前是否已開啟事件調度器,可執行如下SQL:
 

 SHOW VARIABLES LIKE 'event_scheduler';或SELECT @@event_scheduler;或SHOW PROCESSLIST;注:(1)關閉事件任務:?ALTER?EVENT eventName?ON?COMPLETION PRESERVE DISABLE;(2)開啟事件任務:ALTER?EVENT eventName?ON?COMPLETION PRESERVE ENABLE;(3)查看事件任務:SHOW EVENTS ;

二、創建事件

CREATE EVENT [IFNOT EXISTS] event_nameONSCHEDULE schedule[ONCOMPLETION [NOT] PRESERVE][ENABLE | DISABLE][COMMENT 'comment']DO sql_statement;

如:2021年03月14日12點整清空test表:

CREATE EVENT e_test1 ON SCHEDULE AT TIMESTAMP '2021-03-14 12:00:00' DO TRUNCATE TABLE aaa;

更多的請查看著篇文章:https://www.cnblogs.com/javahr/p/9664203.html

?

?

?

?

?

總結

以上是生活随笔為你收集整理的MySQL定时归档的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。