首页 文章

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

提问于
浏览
5

我正在使用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(字符串查询)第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(字符串查询,Raven.Abstractions.Data.IndexQuery indexQuery)第1120行0x1d字节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 bytes C#Raven.Database.dll!Raven.Database.DocumentDatabase.Query(string index,Raven.Abstractions.Data.IndexQuery query)Line 1237 C#Raven.Database.dll!Raven.Database.Queries.DynamicQueryRunner.ExecuteActualQuery(Raven.Abstractions .Data.IndexQuery查询,R aven.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.Abstr actDocumentQuery> .QueryResult.get()第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 回答

  • 1

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

    我们确保每个应用程序初始化一次调用此行,并且缓慢消失:

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

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

相关问题