mysql数据库怎样实现亿级数据快速清理
发表于:2024-09-30 作者:千家信息网编辑
千家信息网最后更新 2024年09月30日,这篇文章给大家分享的是有关mysql数据库怎样实现亿级数据快速清理的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。今天收到磁盘报警异常,50G的磁盘被撑爆了,分析解决过程如下
千家信息网最后更新 2024年09月30日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安全错误
数据库的锁怎样保障安全
外贸软件开发多少钱
数据库如学
java获取远程服务器文件路径
电脑上的时间同步服务器
服务器不使用磁盘阵列
深圳航空网络技术部
网络技术教案解析
cs服务器如何提高fps
上海先进网络技术产业化
大型需求不明确的软件开发模型
软件开发职校排名
网络安全宣传周经验材料
合理设置代理服务器能提速吗
软件开发要求人员
在迷你世界里如何弄服务器
山东语音网络技术市场价
哪个交友软件开发
网络安全需要学数据结构吗
数据库bcnf范式练习
孤舟求生联机版什么服务器
创建数据库视图时卡住
服务器不使用磁盘阵列
生产服务器安全配置
服务器外接网络是什么意思
北斗导航终端软件开发
关于网络安全的手抄报五年级的
深友笨鸟网络技术有限公司
网络技术可以从事什么工作
吉林市布谷网络技术有限公司
新天地网络技术有限公司