Repository is archived
No release in over 3 years
Low commit activity in last 3 years
Fast batch deletes for Active Record and Postgres
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

 Project Readme

delete_in_batches

🔥 Fast batch deletes for Active Record and Postgres

Build Status

Installation

Add this line to your application’s Gemfile:

gem 'delete_in_batches'

How to Use

Delete rows in batches

Tweet.where(user_id: 1).delete_in_batches

Important: Be sure to test your query before running it in production

Change the batch size

Tweet.where(user_id: 1).delete_in_batches(batch_size: 50000) # defaults to 10000

Sleep between batches

Tweet.where(user_id: 1).delete_in_batches(sleep: 0.01)

Show progress

Tweet.where(user_id: 1).delete_in_batches do
  puts "Another batch deleted"
end

Works with associations

user.tweets.delete_in_batches

To delete all rows in a table, TRUNCATE is fastest.

ActiveRecord::Base.connection.execute("TRUNCATE tweets")

History

View the changelog

Note: This project originally had the description “the fastest way to delete 100k+ rows with ActiveRecord” but a single DELETE statement will likely be faster. See this discussion for more details.

Contributing

Everyone is encouraged to help improve this project. Here are a few ways you can help:

To get started with development:

git clone https://github.com/ankane/delete_in_batches.git
cd delete_in_batches
bundle install
bundle exec rake test