zoukankan      html  css  js  c++  java
  • MySQL10亿+表数据进行批量删除操作

    因为开发人员上线的定时删除数据的程序没有执行,坑啊~ 导致了数据库表数据量达到10亿+。

    开发人员的需求是只需保留一个月的数据即可,数据都是一些java日志。所以提了需求删除数据的数据库变更。

    表数据统计如下:

    因为该表的id为自增主键,也可以通过最大最小id进行行数的估算。

    统计表大小,索引加数据文件一共600多G

    本次的数据变更需求为删除11月17号之前的数据,即日志数据只需保留一个月即可。研发人员提供的SQL如下:即要删除6亿行数据,真的是一次大的变动。

    delete from java_decision_detail_log where id < 694859879;

    考虑到一次批量删除6亿数据是一个超大事务,执行完成后造成主从延迟。

    索引考虑打散执行。

    脚本如下,每次删除100万行数据,

    这样删除在操作系统上看数据文件的大小没有减小反而增加,空间没有回收,如果想要回收需要进行重建或者alter语句就可以实现,这样按主键删除应该是把一个页上的数据都删掉,空间也许可以复用。

  • 相关阅读:
    制作OSGB数据索引
    汤臣一品
    Python 库/模块的安装、查看
    ezdxf包下autocad的开发
    python3.7安装pylint
    航拍全景图补天
    电脑百科
    使用Excel批量提取文件名
    利用爬虫实现网上的图片自动下载
    MarkDown&思维导图
  • 原文地址:https://www.cnblogs.com/DBABlog/p/12926936.html
Copyright © 2011-2022 走看看