-1

4 백만 개의 데이터 행이있는 테이블을 채운 레일 애플리케이션을 만들고 있습니다. 내보기에 페이지를 표시하려고 할 때 데이터가 표시되지 않습니다! 서버 로그에서 나는 오류를 볼 수 있습니다수백만 개의 데이터 행이있는 테이블이있는 레일스 애플리케이션의 세그먼트 오류

/Users/Rakib/.rvm/gems/[email protected]/gems/activerecord-3.2.6/lib/active_record/connection_adapters/postgresql_adapter.rb:607: [BUG] Segmentation fault 

은 마지막에 다음과 같은 메시지를 보여줍니다

[NOTE] 
You may have encountered a bug in the Ruby interpreter or extension libraries. 
Bug reports are welcome. 
For details: http://www.ruby-lang.org/bugreport.html 

Abort trap: 6 

나는 데이터의 적은 양의 같은 테이블을 시도하고 완벽하게 일했다. 단일 테이블에 엄청난 양의 데이터가 있기 때문입니까? 이 문제를 어떻게 해결할 수 있습니까? 어떤 종류의 도움이나 제안이라도 대단히 감사하겠습니다.

+0

4 백만 건을 한꺼번에 표시하려고합니까? – nowk

+0

예,이 페이지의 모든 데이터 행을 다른 곳에서 사용해야하기 때문에 그렇습니다! –

+0

나는 당신이 약간의 SQL을 배우고 데이터베이스 외부에서 즉시 4e6 행으로 작업하려고 할 때가 좋지 않은 시간을 갖는 복잡한 방법 일 것이라고 생각한다. 당신이 정확히하려고하는 것은 ActiveRecord 객체를 400 만 개 배열해야한다고 생각하게 만드는 것입니까? –

답변

2

메모리가 부족할 가능성이 큽니다.

수백만 개의 행을 한꺼번에로드하지 않고 청크로로드하고 대상에 복사 한 다음 청크를 버리고 다음 청크를로드 한 다음 반복합니다.

PostgreSQL cursorthe FETCH command을 사용하면이 작업을 수행 할 수 있습니다. 일부 클라이언트 라이브러리는 결과 세트를 반복 할 때 프로토콜 레벨 커서를 사용할 수 있습니다. 루비의 Pg 보석 수 있는지 모르겠다.

ActiveRecord를 사용하는 경우 다시 고려하십시오. 대량 거래에서 수백만 행을 관리하는 것은 제정신이 아닙니다. 가능한 경우 낮은 레벨의 SQL 조작으로 수행하십시오.

+0

네, SQL을 사용하여 데이터를 가져옵니다. 좋은 아이디어를 주셔서 감사합니다. +1 :-) –

관련 문제