【问题标题】:How to remove large data from MySQL?如何从 MySQL 中删除大数据?
【发布时间】:2014-04-11 15:41:37
【问题描述】:

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

目前我遵循以下步骤:

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

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

当前方法的问题是:

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

我曾考虑将该表分解为每周/每月的较小表,这样可以轻松备份和删除,但将它们一起查询将非常困难且速度慢。

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

【问题讨论】:

标签: mysql sql large-data


【解决方案1】:

使用creation_timepartitioning key,化妆每星期或每个月的分区。 Dropping old partitions is incredibly fast.

【讨论】:

    猜你喜欢
    • 2020-03-25
    • 1970-01-01
    • 2012-10-06
    • 1970-01-01
    • 2013-07-29
    • 1970-01-01
    • 2017-05-15
    • 2013-12-30
    • 2015-07-21
    相关资源
    最近更新 更多