Mysql大表資料清理

2021-09-29 12:34:15 字數 678 閱讀 5353

假設大表表名:t_log

delete操作會記錄mysql日誌,大資料量的清理會耗費大量時間,所以一般得用其他方式。

1、如果大表資料對我們來說不重要,完全可以直接清理,那麼可以用truncate

truncate table t_log;

truncate的操作不記錄mysql日誌,所以資料是不能恢復的。 

2、如果需要保留部分資料

建立表並直接保留需要的資料

create table t_log_2019 as select * from t_log where create_time>'2019-01-01 00:00:00';

刪除資料

truncate table t_log;

恢復保留的資料

insert into t_log select * from t_log_2019;

刪除臨時表

drop table t_log_2019;

3、當前表資料需要全部保留,或者後續再刪除

建立乙個同結構的表

create table t_log_2019 like t_log;

直接通過變更表名的方式處理:

rename t_log to t_log_bak,t_log_2019 to t_log;

然後對於t_log_bak,不管你想刪還是留都可以慢慢處理

mysql 清理表空間 MySQL 清除表空間碎片

碎片產生的原因 1 表的儲存會出現碎片化,每當刪除了一行內容,該段空間就會變為空白 被留空,而在一段時間內的大量刪除操作,會使這種留空的空間變得比儲存列表內容所使用的空間更大 2 當執行插入操作時,mysql會嘗試使用空白空間,但如果某個空白空間一直沒有被大小合適的資料占用,仍然無法將其徹底占用,就...

mysql定時器定時清理表資料

1.首先先檢視mysql是否開啟定時任務開關 2.value為on則已開啟,off則關閉 如果是off,就先開啟 set global event scheduler on 3.然後建立我們想要的定時器 delimiter drop event if exists deletelog create ...

mysql 大表 驅動 MySQL小表驅動大表

在了解之前要先了解對應語法 in 與 exist。in後的括號的表示式結果要求先輸出一列字段。與之前的搜尋字段匹配,匹配到相同則返回對應行。mysql的執行順序是先執行子查詢,然後執行主查詢,用子查詢的結果按條匹配主查詢。exist後的括號裡則無輸出要求,exist判斷後面的結果集中有沒有行,有行則...