2013-06-03 2 views
0

내 프로젝트에서 mongodb를 사용하여 시간을 단축합니다. SQL과 NoSQL의 데이터를 가져 오는 데 걸리는 시간을 비교하면서 SQL은 각 가져 오기 형식 데이터베이스에 대해 50ms가 걸리지 만 NoSQL 처음으로 약 180ms, 다른 페치를 위해 15ms가 걸리므로, NoSQL에서 처음으로 가져 오는 시간을 줄이는 방법.MongoDB - SQL보다 첫 번째 가져 오기에 더 많은 시간이 걸림

+0

데이터 양, 문서 수 및 쿼리 (문서를 가져 오는 방법)에 대해 더 자세히 알려 줄 수 있습니까? –

+0

속도를 높이는 방법을 알려 주시면 실행중인 검색어를 알려주십시오. – Sammaye

+0

@amit_saxena 내 컬렉션에는 108 개의 레코드가 있습니다. 아래의 쿼리를 사용하여 레코드를 가져 왔습니다. 'IMongoQuery query = 새로운 QueryDocument(); query = Query.And (query, Query.EQ ("Field1", 1)); MongoCollection collectionAC = MongoDBs.GetCollection ("CollectionName"); var Log = collectionAC.FindAs (쿼리) .SetFields (Fields.Exclude (dyFields)). ToList(); ' – siva

답변

0

이 쿼리는 귀하의 RAM에 작업 집합을로드하기 때문에 첫 번째 쿼리는 아마도 더 많은 시간이 걸리는
http://docs.mongodb.org/manual/core/indexes/

+0

@Gavruk 내가 지정한 것입니다. 고유 한 색인 생성 : 이미. 내 쿼리는 처음으로 가져 오는 데에만 시간이 걸립니다. – siva

+0

아마도 데이터가 메모리에로드되지 않았을 수 있습니다. 첫 번째 쿼리 후 MongoDB가 데이터를 메모리에로드하고 다음 쿼리가 더 빨리 작동합니다. –

0

빠르게 실행하기 위해 컬렉션에 대한 인덱스를 만들어보십시오. 작업 집합에 대한 자세한 내용은 여기를 찾을 수 있습니다

http://docs.mongodb.org/manual/faq/storage/#what-is-the-working-set

당신이 당신의 실제 사용자의 데이터베이스를 공격하기 전에이 부하를 미리 할 수 ​​있습니다이 문제를 방지하려면. 내가 생각할 수있는 한 가지 방법은 매 시간마다이 쿼리를 수행하여 매번 작업 집합을 메모리로로드하여 이후의 더 빠른 쿼리를 수행하는 시간별 (또는 원하는 모든 빈도) cron입니다.

+0

안녕하세요 @amit, 설정 파일에 'dbpath, logpath 및 logappend'설정을 추가해야합니까? 내 설정에서. db가 작업 세트를 RAM에로드하도록하기 위해해야 ​​할 일. – siva

+0

내가 말했듯이, 비슷한 쿼리를 실행하고 작업 세트를 RAM에로드하는주기적인 cronjob을 가질 수 있습니다. –

+0

안녕하세요 @amit, 내 페이지 (즉, current_page .aspx)에 대한 선택이 처음으로 더 많은 시간이 걸리는 경우에도 다른 페이지로드 (예 : page_1.aspx에서 동일한 쿼리가 주어진)에서 동일한 쿼리를 작성했다고 말했듯이 page_1.aspx에서 완료되었습니다. 무슨 문제가 될지, 내 기준을 진행하는 시간을 안내 해주십시오. – siva

관련 문제