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

歡迎訪問 生活随笔!

生活随笔

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

数据库

mysql数据清洗_mysql数据库如何实现亿级数据快速清理

發布時間:2025/4/16 数据库 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql数据清洗_mysql数据库如何实现亿级数据快速清理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天收到磁盤報警異常,50G的磁盤被撐爆了,分析解決過程如下:

1. 進入linux服務器,查看mysql文件夾中各個數據庫所占的磁盤空間大小

看到了嗎,光olderdb就占了25G

2. 用SQLyog登錄mysql數據庫,查看數據庫各個表的占用空間情況

SELECT CONCAT(table_schema,'.',table_name) AS 'aaa',

table_rows AS 'Number of Rows',

CONCAT(ROUND(data_length/(1024*1024*1024),6),' G') AS 'Data Size',

CONCAT(ROUND(index_length/(1024*1024*1024),6),' G') AS 'Index Size' ,

CONCAT(ROUND((data_length+index_length)/(1024*1024*1024),6),' G') AS'Total'

FROM information_schema.TABLES

WHERE table_schema LIKE 'olderdb';

3. 查詢主鍵索引

SHOW INDEX FROM orbit

采取策略

前提:目前需要刪除80%的數據

① delete語句

我們知道delete語句的刪除速度與索引量成正比,此表中的索引量已經很大了,而且數據量非常之巨大,若采用常規delete語句刪除,必定會話費幾天的時間。

Delete語句刪除不會釋放出磁盤空間,所以肯定還是會出現報警,所以此種方式不可取。

② drop掉表

新建結構相同的表,命名“cc”,'將需要保存的數據插入到此表中,然后drop掉老表。

Sql語句如下:

基于老表新建新表

CREATE TABLE cc LIKE orbit ;

插入數據(幾百萬的數據量一定要分批插入,一次30萬-40萬為最佳,畢竟mysql的數據處理能力有限)

按日期查詢后插入(每天大概會產生30多萬數據量,所以采用日期插入)

INSERT INTO cc SELECT * FROM orbit WHERE xttime > '2018-04-16 00:00:00' AND xttime<='2018-04-17 00:00:00';

結果如下:

可以看到50多萬的數據量用了不到5分鐘,還是比較快的。

清理后數據表空間得以釋放

然后drop掉老表

DROP TABLE orbit

目測只用了3秒左右

重命名新表“cc”

ALTER TABLE cc RENAME TO orbit

總結

以上所述是小編給大家介紹的mysql數據庫如何實現億級數據快速清理 ,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

總結

以上是生活随笔為你收集整理的mysql数据清洗_mysql数据库如何实现亿级数据快速清理的全部內容,希望文章能夠幫你解決所遇到的問題。

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