Trong sản xuất, mỗi quy trình Rails sẽ chạy truy vấn đó một lần cho mỗi bảng / mô hình mà nó gặp phải. Đó là một lần cho mỗi rails s
, không theo yêu cầu:nếu bạn thấy nó lặp đi lặp lại, tôi sẽ điều tra xem các quy trình của bạn có được khởi động lại thường xuyên vì lý do nào đó hay không.
Để loại bỏ hoàn toàn các truy vấn thời gian chạy đó, bạn có thể tạo tệp bộ nhớ cache giản đồ trên máy chủ của bạn:
RAILS_ENV=production rails db:schema:cache:dump
(Rails 4:RAILS_ENV=production bin/rake db:schema:cache:dump
)
Lệnh đó sẽ thực hiện các truy vấn ngay lập tức và sau đó ghi kết quả của chúng vào một tệp bộ đệm, mà các quy trình Rails trong tương lai sẽ trực tiếp tải thay vì kiểm tra cơ sở dữ liệu. Đương nhiên, sau đó bạn sẽ cần phải tạo lại bộ nhớ cache sau khi có bất kỳ thay đổi lược đồ cơ sở dữ liệu nào trong tương lai.