Hier zwei kleine Rake-Tasks zur DB-Optimierung.
Aufruf:
rake db:optimize_tables bzw.
rake db:optimize_databases
namespace :db do
desc "tabellen optimeren"
task :optimize_tables => :environment do
tables=ActiveRecord::Base.connection.select_values("show tables;")
tables.each do |table|
puts "optimiere #{table}..."
ActiveRecord::Base.connection.select_values("optimize table #{table};")
puts "done"
end
end
desc "alle datenbanken optimeren"
task :optimize_databases => :environment do
dbs=ActiveRecord::Base.connection.select_values("show databases;")
dbs.each do |db|
puts "optimiere tabellen von #{db}..."
unless db=="information_schema"
tables=ActiveRecord::Base.connection.select_values("show tables from #{db};")
tables.each do |table|
puts "optimiere #{table}..."
ActiveRecord::Base.connection.select_values("optimize table #{db}.#{table};")
puts "done"
end
puts "done"
end
end
end
end