2011-07-28 2 views
7

가능한 중복 :이이 요청 된 경우, 나는 주위를 둘러 보았다하지만 정말 내가 찾던 것을 발견 didnt한다 루비의 배열 크기에 제한이 있습니까?

죄송합니다
Array size too big - ruby

.

ruby와 mysql을 사용하여 mysql 테이블의 단일 열을 기반으로 배열을 만듭니다. 우리는 더 많은 사용자를 잡 시작했을 때 이것은, 지금까지 잘 근무하고있다

users = [] #declare array 
users.clear #clear array so that it remains so fresh and so clean on each restart 

# Update the list of users to follow 
res = dbh.query("SELECT user FROM usernameDB") 
while row = res.fetch_row do 
    users << row[0] #adds each user to the array 
end 

: 그래서 예를 들면, 나는 사용자 이름의 열을 말한다. 이제 코드가 알려지지 않은 오류를줍니다.

문제를 해결하기 위해 대부분의 내용을 주석 처리하고 단지 몇 개의 사용자 이름으로 배열을 작성했으며 모든 것이 다시 작동했습니다. 그래서 내 질문에, 숫자 또는 루비 배열의 항목에 대한 제한이 있습니까?

감사합니다.

+2

'알 수없는 오류'를 신고 할 수 있습니까? – knut

+0

비슷한 문제가 있습니다. 내가 ActiveRecord 쿼리에서 데이터 배열을 구축하고 특정 크기가 실패하거나 시간이 초과되었습니다. 다른 사람들이 언급했듯이 배열이 너무 크지는 않습니다. 다른 일이 있어야합니다. 내 배열의 전체 길이는 수백만이 아니라 수천에서 끝나야합니다 .... – Drew

답변

4

Ruby는 소프트웨어 제한이 없지만 프로세스가 지원할 수있는 한계가 있습니다. Ruby 서버를 실행하는 일반 홈 서버가있는 경우 배열이 너무 커질 때까지 배열을 처리 할 수 ​​있습니다. 그 시점에서 '늪지', 지연, 충돌 등이 시작됩니다. 반면에, 매우 강력한 회사 서버가 있다면 훨씬 더 큰 배열을 처리 할 수 ​​있지만 배열이 너무 커서 처리 할 하드웨어와 메모리가 처리되면 결국에는 충돌/지연 될 수 있습니다.

서버의 하드웨어 및 소프트웨어에 따라 다르므로 구체적인 수치가 없습니다.

+0

dreamhost에서 실행 중입니다. 죄송합니다 그 대답이 틀린 경우, 나는 일반적으로 루비에 약간의 술집입니다. – bradleygriffith

+0

문제 없습니다. Dreamhost가 서버용으로 어떤 자원을 갖고 있는지에 따라 다릅니다. 나는 너가 관대 한 크기 배열을 만들 수 있었다고 생각한다. 그러나 많은 많은 항목을 포함하고있는 무엇이라도 너무 많을지도 모른다. 그냥 짐작하고 확인하십시오. Dreamhost에서 서버 자원이 어디로 가고 있는지 묻는 이메일을 받으면 저를 지명하지 마십시오! :) – dwmcc

2

다른 게시물을보세요. Array size too big - ruby. 6 억 명은 너무 크지 만 5 억 명이 성공했습니다.

배열의 크기는 어느 정도입니까? 문제는 당신이 기억이 부족할 수 있습니다!

+0

436 개의 사용자 이름 배열을 만들기 위해 436 개의 행이 있습니다. – bradleygriffith

+3

436 개의 사용자 이름이 없습니다. 계속해서 다른 일이 일어나야합니다. – Mchl

+0

그렇게 나쁘지 않습니다. SELECT TOP 50을 사용하여 쿼리에서 반환 된 결과의 수를 50 개로 제한하면 여전히 충돌이 발생합니까? – danmcardle

관련 문제