9159金沙游艺场-奥门金沙游艺场-[欢迎您]

9159金沙游艺场为您呈现最新的面貌!,目前注册送体验金,欢迎您将成为影视娱乐行业新的风向标,是亚洲的优质娱乐先锋。

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

日期:2020-04-19编辑作者:服务器

今天收到磁盘报警异常,50G的磁盘被撑爆了,分析解决过程如下:

  1. 进入linux服务器,查看mysql文件夹中各个数据库所占的磁盘空间大小

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

  1. 用SQLyog登录mysql数据库,查看数据库各个表的占用空间情况

    SELECT CONCAT(table_schema,'.',table_name) AS 'aaa', table_rows AS 'Number of Rows', CONCAT(ROUND(data_length/(102410241024),6),' G') AS 'Data Size', CONCAT(ROUND(index_length/(102410241024),6),' G') AS 'Index Size' , CONCAT(ROUND((data_length+index_length)/(102410241024),6),' G') AS'Total' FROM information_schema.TABLES WHERE table_schema LIKE 'olderdb';

  2. 查询主键索引

    SHOW INDEX FROM orbit

采取策略

前提:目前需要删除80%的数据

① delete语句

我们知道delete语句的删除速度与索引量成正比,此表中的索引量已经很大了,而且数据量非常之巨大,若采用常规delete语句删除,必定会话费几天的时间。

Delete语句删除不会释放出磁盘空间,所以肯定还是会出现报警,所以此种方式不可取。

② drop掉表

新建结构相同的表,命名“cc”,'将需要保存的数据插入到此表中,然后drop掉老表。

Sql语句如下:

基于老表新建新表

CREATE TABLE cc LIKE orbit ;

插入数据

按日期查询后插入

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数据库如何实现亿级数据快速清理 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

本文由9159金沙游艺场-奥门金沙游艺场-[欢迎您]发布于服务器,转载请注明出处:mysql数据库如何实现亿级数据快速清理

关键词:

安详严整Mysql中国和日本期相当的大小的点子

假如有个表product有个字段add_time,它的数据类型为datetime,有人可能会这样写sql: 代码如下 select * from product where add_ti...

详细>>

Linux下如何实现Mysql定时任务9159金沙游艺场

假设前提:每天晚上10点到早上5点,每10分钟定时执行存储过程。 实现方式: 第一种是利用Mysql本身实现,制定even...

详细>>

17安装配置方法图文教程【9159金沙游艺场】

前言 前面安装过mysql5.6,时隔三个月,开发那边反馈需要在MySQL中处理JSON类型的数据,查看文档,JSON是在5.7支持的新...

详细>>

28安装配备情势图像和文字化教育程

mysql5.6.28安装配备情势 1.种类基本消息查阅,尝试yum安装 $ sudo -s# df -lhFilesystem Size Used Avail Use% Mounted on/dev/vda1 79G 1.6...

详细>>