관리 백엔드에 ActiveAdmin을 사용하는 프로젝트에서 작업하고 있습니다.ActiveAdmin 자동으로 전체 연결 테이블로드
저는 두 가지 모델, has_many Products가있는 책 모델이 있습니다. ActiveAdmin에서 제품 인덱스보기에 액세스하려고하면 전체 책 테이블을 메모리에로드하려고 시도합니다 (데이터베이스에 약 150 만 권의 책이 있음). CPU 사용량은 최대 100 %까지 증가하고 메모리 사용량은 기가 바이트로 증가합니다. MySQL의 로깅 켜기
는이보기가 호출 될 때 발생하는 것을 확인 :
17 Query SELECT `books`.* FROM `books`
를 지금까지 내가이 제품을로드하려는 시도하기 전에 어떻게 말할 수 있습니다.
class Product < ActiveRecord::Base
belongs_to :book
end
class Book < ActiveRecord::Base
has_many :products
end
내가 또한 가장 기본적인 형태로 AA 정의를 감소 :
은 내가 그들의 맨손으로 뼈까지 모델 박탈이 문제를 파악하려면
ActiveAdmin.register Product do
end
ActiveAdmin을이 정상입니까 ? 그것은 바람직한 행동처럼 보이지 않습니다.
그냥했다 :
대답은 그래서 같은 제품에 대한 AA 정의의 일부 사용자 지정 필터를 포함하는 것이 었습니다 같은 문제, 10 억 개의 레코드가 어리석은 드롭 다운을 위해 끌어 올려지고 있습니다. -_- 필자는 필터의 나머지 부분을 수동으로 다시 입력해야한다는 것을 귀찮게합니다. 분명히 모든 사용자 정의 또는 사용자 지정이 아니지만 무엇이든간에 - 충돌은 백엔드! –