使用RavenDB进行调试的速度非常慢

时间:2013-04-16 02:54:47

标签: ravendb

我正在使用RavenDB版本2.0.3.0。附加调试器后,涉及RavenDB的所有操作都会非常慢。每个查询都需要几秒钟才能完成。

如果我在调试器刚坐在那里时按下暂停,我总是看到它挂起了以下呼叫追踪:

  

Lucene.Net.dll!Lucene.Net.QueryParsers.FastCharStream.Refill()第91行C#       Lucene.Net.dll!Lucene.Net.QueryParsers.FastCharStream.ReadChar()第53行C#       Lucene.Net.dll!Lucene.Net.QueryParsers.QueryParserTokenManager.JjMoveNfa_3(int startState,int curPos)第604行+ 0x1b字节C#       Lucene.Net.dll!Lucene.Net.QueryParsers.QueryParserTokenManager.JjMoveStringLiteralDfa0_3()第94行+ 0xd字节C#       Lucene.Net.dll!Lucene.Net.QueryParsers.QueryParserTokenManager.GetNextToken()第1379行+ 0x9字节C#       Lucene.Net.dll!Lucene.Net.QueryParsers.QueryParser.Jj_ntk()第1929行+ 0x1d字节C#       Lucene.Net.dll!Lucene.Net.QueryParsers.QueryParser.Clause(字符串字段)行1373 + 0x1d字节C#       Lucene.Net.dll!Lucene.Net.QueryParsers.QueryParser.Query(字符串字段)行1301 + 0xc字节C#       Lucene.Net.dll!Lucene.Net.QueryParsers.QueryParser.TopLevelQuery(字符串字段)行1287 + 0xc字节C#       Lucene.Net.dll!Lucene.Net.QueryParsers.QueryParser.Parse(string query)第223行+ 0xf字节C#       Raven.Database.dll!Raven.Database.Indexing.QueryBuilder.BuildQuery(字符串查询,Raven.Abstractions.Data.IndexQuery indexQuery,Raven.Database.Indexing.RavenPerFieldAnalyzerWrapper analyzer)第56行+ 0xe字节C#       Raven.Database.dll!Raven.Database.Indexing.Index.IndexQueryOperation.GetLuceneQuery(string query,Raven.Abstractions.Data.IndexQuery indexQuery)Line 1120 + 0x1d bytes C#       Raven.Database.dll!Raven.Database.Indexing.Index.IndexQueryOperation.GetLuceneQuery()第1081行+ 0x28字节C#       Raven.Database.dll!Raven.Database.Indexing.Index.IndexQueryOperation.Query()803行+ 0x26字节C#       [外部代码]       Raven.Database.dll!Raven.Database.DocumentDatabase.Query.AnonymousMethod__8e(Raven.Database.Storage.IStorageActionsAccessor actions)第1220行+ 0x145字节C#       Raven.Database.dll!Raven.Database.DocumentDatabase.Query(字符串索引,Raven.Abstractions.Data.IndexQuery查询)第1237行C#       Raven.Database.dll!Raven.Database.Queries.DynamicQueryRunner.ExecuteActualQuery(Raven.Abstractions.Data.IndexQuery查询,Raven.Database.Data.DynamicQueryMapping map,System.Tuple touchTemporaryIndexResult,string realQuery)第82行+ 0x32b字节C#       Raven.Database.dll!Raven.Database.Queries.DynamicQueryRunner.ExecuteDynamicQuery(string entityName,Raven.Abstractions.Data.IndexQuery query)第49行+ 0x15字节C#       Raven.Database.dll!Raven.Database.Queries.DynamicQueryExtensions.ExecuteDynamicQuery(Raven.Database.DocumentDatabase self,string entityName,Raven.Abstractions.Data.IndexQuery indexQuery)第19行+ 0x11字节C#       Raven.Client.Embedded.dll!Raven.Client.Embedded.EmbeddedDatabaseCommands.Query(字符串索引,Raven.Abstractions.Data.IndexQuery查询,字符串[]包含,bool metadataOnly,bool indexEntriesOnly)第389行+ 0x47字节C#       Raven.Client.Lightweight.dll!Raven.Client.Document.AbstractDocumentQuery> .ExecuteActualQuery()第535行+ 0x50字节C#       Raven.Client.Lightweight.dll!Raven.Client.Document.AbstractDocumentQuery> .InitSync()第518行C#       Raven.Client.Lightweight.dll!Raven.Client.Document.AbstractDocumentQuery> .QueryResult.get()Line 505 C#       Raven.Client.Lightweight.dll!Raven.Client.Linq.RavenQueryProviderProcessor.ExecuteQuery()第1425行+ 0x1b字节C#       Raven.Client.Lightweight.dll!Raven.Client.Linq.RavenQueryProviderProcessor.Execute(System.Linq.Expressions.Expression表达式)行1398 + 0x3d字节C#

如果我在没有连接调试器的情况下运行,一切都运行良好且快速......我在昨天之前从未遇到过这个问题。

我正在使用带有DataDir =〜\ App_Data \ RavenDB的EmbeddableDocumentStore。

我尝试删除RavenDB目录,但即使使用全新的数据库,Raven仍然一样慢。

知道什么是错的或我如何排除故障?

2 个答案:

答案 0 :(得分:1)

如果您使用的是IntelliTrace,请将其关闭。 在例外设置中,标记Just My Code并且不要停止处理的例外。

答案 1 :(得分:0)

我们有一段时间遇到同样的问题,直到我们发现我们正在为每个请求创建索引(由于DocumentStore的IoC注册错误)。

我们确保每个应用程序init调用一次该行,并且缓慢消失:

IndexCreation.CreateIndexes(typeof(MyIndex).Assembly, store);