mysql按月歸檔日誌表

2021-09-19 03:05:52 字數 1271 閱讀 1477

由於日誌表越來越大,資料將近1億,查資料非常慢,因此使用事件每月28日呼叫儲存過程自動建立歸檔表,將上月資料按照create_time欄位和id欄位插入歸檔表並刪除原表相應資料。

delimiter ;;

create definer=`root`@`localhost` procedure `clear_log`()

begin

#獲取當上月的表名

set @currentym =left(date_sub(current_date,interval 1 month),7);

set @logtable=concat('log_',left(@currentym,4),right(@currentym,2));

#判斷是否需要建表,沒有則建立

set @stmt :=concat("create table if not exists ",@logtable," like log;");

prepare stmt from @stmt;

execute stmt;

#日誌遷移

set @dateone=concat(left(date_sub(current_date,interval 1 month),7),"-01");

set @datemonthone=concat(left(curdate(),8),"01");

set @stmt :=concat("insert into ",@logtable," select * from log where create_time>'",@dateone,"' and create_time<'",@datemonthone,"' order by id;");

prepare stmt from @stmt;

execute stmt;

#刪除log表中對應資料

delete from log where create_time>@dateone and create_time<@datemonthone order by id;

end;;

delimiter ;

delimiter ;;

create definer=`root`@`localhost` event `schedule_clear_log` on schedule every 1 month starts '2019-04-28 22:30:00' on completion not preserve enable do call clear_log()

;;delimiter ;

Mysql 日誌表定時歸檔處理

資料庫有一張表資料量很大,真正web專案只用到乙個月內的資料,因此把乙個月前的舊資料定期歸檔。1 建立乙個新錶,表結構和索引與舊表一模一樣 create table table new like table old 2 新建儲存過程,查詢30天的資料並歸檔進新資料庫,然後把30天前的舊資料從舊表裡刪...

mysql 歸檔日誌 Oracle歸檔日誌總結

1.開啟歸檔日誌 sqlplus as sysdba sql shutdown immediate sql startup mount 開啟控制檔案,不開啟資料檔案 sql alter database archivelog 將資料庫切換為歸檔模式 sql alter database open 將...

上下篇部落格,按月歸檔

def blog detail request,blog pk context blog get object or 404 blog,pk blog pk context previous blog blog.objects.filter created time gt blog.created ...