mysql - 如何从MySQL中删除大数据?

标签 mysql sql large-data

我的表中有 50 GB 的数据,如果备份后记录早于特定日期,则必须将其删除。

目前我按照以下步骤操作:

  1. 备份完整的表。
  2. 使用 where 子句运行删除查询以删除不需要的数据,如下所示:

    DELETE FROM <some-table-name> WHERE `creation_time` <= '<some-valid-time>'
    

当前方法的问题是:

  1. 速度慢得令人痛苦。
  2. 当只需要增量数据时,数据的冗余存储;由于备份是对整个表进行的,但仅删除了选择性记录。
  3. 删除后,磁盘空间不会返回给操作系统(直到优化完成)。

我想过将该表分成更小的表以供每周/每月使用,这样可以轻松备份和删除,但一起查询它们将非常困难且缓慢。

请建议一些明智且有效的方法来做到这一点。

最佳答案

使用creation_time作为partitioning key ,按周或按月进行分区。 Dropping old partitions is incredibly fast .

关于mysql - 如何从MySQL中删除大数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22267939/

相关文章:

php - 我可以在准备好的语句中参数化表名吗?

java - JPA 查找仅给定子唯一键的祖 parent 实体

php - 计算列中的所有值

sql - mysql - 从一个表中选择所有内容,并从另一个表中选择一列,其中找到 $var

mysql - 计算两列sql之间的平均值

sql - 30/60/90天求和查询

java - 创建 RESTEasy 端点时如何限制大型正文请求?

c++ - 如何对大于 RAM 的数据执行 k-means?

hadoop - Windows 上的 Mahout+Hadoop

php - 错误: INSERT INTO fails mysql