繁体   English   中英

删除 rails 中的数百万条记录

[英]deleting millions of records in rails

我们的 RoR 4 应用程序有数百万条记录需要定期删除。 目前,删除是作为后台作业进行的:

 while fruit.apples.count > 0
      # create the sql query to delete 1000 feeds from the channel
      sql = "DELETE FROM apples WHERE fruit_id=#{fruit_id} LIMIT 1000"
      # execute the sql query
      ActiveRecord::Base.connection.execute(sql)
      # wait a bit before the next delete
      sleep 0.1
 end

因为我每隔几秒钟就进行一次计数,它已经增加了 mysql 服务器的 CPU 时间。 所以想知道我是否可以使用 delete_all/destroy_all 删除一百万条记录,或者有没有更好的方法来实现这一点。

您可以使用 TRUNCATE 而不是 DELETE。 TRUNCATE 删除整个表并重新创建一个空表。 所以这要快得多。 TRUNCATE 还会重置表中 AUTO INCREMENT 字段的值

TRUNCATE TABLE yourTable;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM