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语句就可以实现,这样按主键删除应该是把一个页上的数据都删掉,空间也许可以复用。

  • 相关阅读:
    关于GIS从业人员的定位
    《企业应用架构模式》读书笔记(4)
    各大网络、软件巨头涉足Web GIS
    流水帐(2005.5)
    Xtreme Suite 和 Toolkit 9.6发布
    一个算法问题
    推荐2个最近使用的软件
    linux之pmap命令
    linux 文件系统简介
    百度脚本笔试题两道
  • 原文地址:https://www.cnblogs.com/DBABlog/p/12926936.html
Copyright © 2011-2022 走看看