mysql数据库怎样实现亿级数据快速清理
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,这篇文章给大家分享的是有关mysql数据库怎样实现亿级数据快速清理的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。今天收到磁盘报警异常,50G的磁盘被撑爆了,分析解决过程如下
千家信息网最后更新 2025年01月20日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数据库怎样实现亿级数据快速清理"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
数据
数据库
语句
磁盘
空间
索引
老表
内容
日期
更多
篇文章
还是
报警
查询
不错
实用
巨大
很大
相同
前提
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
阿里云网络安全拓扑图
什么是数据库映像
版本控制管理服务器有什么
易双网络技术怎么样
数据库约束条件不大于0怎么写
服务器开启全部端口会怎么样
软件开发投融资分析
达梦数据库未来前景
cacti 数据库修复
邦企网络技术有限公司
数据库系统操作题
网络安全法相关的执法案例
高速公路网络技术环境
单位网络安全存在的问题措施
软件开发人天报价 标准
网络技术人员交流论坛
网上指纹数据库
淮北银行软件开发定制
软件开发怎么分层
网络安全反诈骗主题绘画
天津市网络安全周
元氏软件开发有限公司
宁夏dsn服务器地址
php链接数据库的代码
服务器租金记什么科目
我的世界pc国际服打不开服务器
网络安全学科评估结果完整版
单位网络安全存在的问题措施
电视台网络安全培训ppt
无法访问服务器80端口