Skip to content

Instantly share code, notes, and snippets.

@dawidof
Forked from merqlove/optimization.rake
Created February 6, 2023 17:29
Show Gist options
  • Save dawidof/cf7159b691905bde6d4594248f694381 to your computer and use it in GitHub Desktop.
Save dawidof/cf7159b691905bde6d4594248f694381 to your computer and use it in GitHub Desktop.
PostgreSQL optimization tasks for ActiveRecord
namespace :optimization do
desc "Provide DB vacuum for production environment"
task :vacuum => :environment do
begin
tables = ActiveRecord::Base.connection.tables
tables.each do |table|
ActiveRecord::Base.connection.execute("VACUUM FULL ANALYZE #{table};")
end
rescue Exception => exc
Rails.logger.error("Database VACUUM error: #{exc.message}")
end
end
desc "Provide DB reindex for production environment"
task :reindex => :environment do
begin
tables = ActiveRecord::Base.connection.tables
tables.each do |table|
ActiveRecord::Base.connection.execute("REINDEX TABLE #{table};")
end
rescue Exception => exc
Rails.logger.error("Database REINDEX error: #{exc.message}")
end
end
desc "Reset PRIMARY KEY sequences "
task :resetpk => :environment do
tables = ActiveRecord::Base.connection.tables
tables.each do |table|
ActiveRecord::Base.connection.reset_pk_sequence!(table)
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment