如何从MySQL中删除大数据?

时间:2014-03-08 10:12:07

标签: mysql sql large-data

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

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

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

    DELETE FROM <some-table-name> WHERE `creation_time` <= '<some-valid-time>'
    
  3. 当前方法的问题是:

    1. 这很痛苦。
    2. 当仅需要增量数据时,冗余存储数据;由于备份是针对整个表格进行的,但仅删除了选择性记录。
    3. 删除后,磁盘空间不会返回给操作系统(直到优化完成)。
    4. 我想把这个表分成每周/每月的小表,以便轻松备份和删除,但一起查询它们将非常困难和缓慢。

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

1 个答案:

答案 0 :(得分:3)

使用creation_time作为partitioning key,制作每周或每月分区。 Dropping old partitions is incredibly fast