Очистка кеша ActiveRecord - PullRequest
       3

Очистка кеша ActiveRecord

21 голосов
/ 18 сентября 2010

Я строю приложение командной строки, используя ActiveRecord 3.0 (без направляющих). Как очистить кэш запросов, поддерживаемый ActiveRecord?

Ответы [ 4 ]

31 голосов
/ 21 июля 2014

В первом приближении:

ActiveRecord::Base.connection.query_cache.clear
2 голосов
/ 18 сентября 2010

Взгляните на метод clear_query_cache в http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/QueryCache.html

0 голосов
/ 07 июня 2018

Мы используем:

ActiveRecord::Base.connection.query_cache.clear
(ActiveRecord::Base.connection.tables - %w[schema_migrations versions]).each do |table|
  table.classify.constantize.reset_column_information rescue nil
end

Но я не уверен, что даже этого достаточно.

0 голосов
/ 17 января 2018

Часто, когда вы видите кеширование запросов к базе данных, ваша БД выполняет кеширование, а не ActiveRecord, что означает, что вам нужно очистить кеш и буферы на уровне БД, а не на уровне ActiveRecord.

Например,, чтобы очистить кэш и буферы Postgres на Mac, вы должны сделать sudo purge, который заставляет дисковый кэш очищаться и очищаться.

Чтобы очистить кэш и буферы Postgres в Linux, вы выключаете postgresсбросьте кэши и снова запустите postgres:

service postgresql stop
sync
echo 3 > /proc/sys/vm/drop_caches
service postgresql start

Дополнительная информация:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...