我的编程空间,编程开发者的网络收藏夹
学习永远不晚

mysql数据库怎样实现亿级数据快速清理

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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数据库怎样实现亿级数据快速清理”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

mysql数据库怎样实现亿级数据快速清理

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

mysql怎么快速清空表数据

可以使用TRUNCATE TABLE语句来快速清空表数据,语法如下:TRUNCATE TABLE table_name;注意:TRUNCATE TABLE语句会将表数据一次性删除,不会触发表的DELETE触发器,也不会记录在日志中,所以执
mysql怎么快速清空表数据
2024-04-20

mysql上亿数据秒级查询怎么实现

要实现MySQL上亿数据的秒级查询,需要考虑以下几个方面:1. 数据分库分表:将数据分散存储在多个数据库和表中,以减少单个数据库或表的数据量,提高查询性能。可以根据某个字段进行分库分表,如用户ID、时间等。2. 索引优化:通过合理地创建索引
2023-10-27

MySQL线上数据库怎么清理数据

这篇文章将为大家详细讲解有关MySQL线上数据库怎么清理数据,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。01 场景分析 今天下午,开发的同事提来一个需求,需要在线上要删除一些数据记录,简单看了看数据的分
2023-06-14

怎样快速地迁移MySQL中的数据

要快速地迁移MySQL中的数据,可以采取以下步骤:1. 创建目标数据库:在迁移数据之前,先创建好目标数据库,确保目标数据库的表结构与源数据库一致。2. 导出源数据库数据:使用mysqldump命令可以将源数据库中的数据导出为SQL文件。例如
2023-09-22

怎么快速生成MySQL数据库关系图

要快速生成MySQL数据库关系图,您可以使用以下方法:1. 使用数据库建模工具:可以使用一些数据库建模工具,例如MySQL Workbench、Navicat等,这些工具提供了可视化设计数据库模型的功能,可以根据已有的数据库表结构自动生成关
2023-08-12

nodejs环境怎么快速操作mysql数据库

这篇文章给大家分享的是有关nodejs环境怎么快速操作mysql数据库的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。安装依赖npm install dmhsq-mysql-db使用示例快速操作mysql 错误处理
2023-06-14

mysql数据库怎么实现

mysql数据库实现步骤:安装mysql服务器;创建数据库;创建用户并授予权限;连接到数据库;创建表;插入数据;查询数据;修改数据;删除数据;备份数据库。MySQL数据库实现如何实现MySQL数据库?实现MySQL数据库涉及以下步骤:
mysql数据库怎么实现
2024-04-22

MySQL用truncate命令快速清空一个数据库中的所有表

1. 先执行select语句生成所有truncate语句 语句格式: select CONCAT('truncate TABLE ',table_schema,'.',TABLE_NAME, ';') from INFORMATION_SC
2022-05-25

编程热搜

目录