1. 程式人生 > >mysql 清除大數據表單

mysql 清除大數據表單

方法 命名 SQ 服務 l數據庫 create ble and web

背景:mysql數據庫中有個日誌表記錄高達800多萬,影響了mysql的正常業務訪問,現需要清理三個月之前的所有數據,大概600多萬

方法一:傳統delete from xxx,傳統,普通,效率底下,高數據清理容易搞垮數據庫。

方法二:truncate,這個操作會把表中所有的數據給清除掉。(如果是要清空數據的話這個效率最高)。

方法三:間接法。步驟如下:

1.創建t_req_log同結構的新表 t_req_log_new 。

create table t_req_log_new like t_req_log 或通過原表建表語句創建也行。

2.訪問人數較少時,停web服務(不然會操作還會寫日誌到該表中)。

3.執行sql將t_req_log表近三個月的數據導入到t_req_log_new新表中。
insert into t_req_log_new
select * from t_req_log where time between ‘2018-02-01 00:00:00‘ and NOW();

4.同時重命名兩張表,間接實現數據刪除操作,將 t_req_log_new改為原始表名替換原始表。

RENAME TABLE t_req_logTO t_req_log_old, t_req_log_new TO t_req_log;

5.刪除舊表 (看情況刪不刪除)。

drop table t_req_log_old

6.重啟服務器,觀察日誌。

以上操作會比delete刪除快n多倍。

可間隔一段時間執行一次,也可在數據庫中做一個事物,自動每日刪除

mysql 清除大數據表單