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(string field) Line 1373 + 0x1d bytes C# Lucene.Net.dll!Lucene.Net.QueryParsers.QueryParser.Query(string field) Line 1301 + 0xc bytes C# Lucene.Net.dll!Lucene。Net.QueryParsers.QueryParser.TopLevelQuery(string field) Line 1287 + 0xc bytes C# Lucene.Net.dll!Lucene.Net.QueryParsers.QueryParser.Parse(string query) Line 223 + 0xf bytes C# Raven.Database.dll!Raven. Database.Indexing.QueryBuilder.BuildQuery(string query, Raven.Abstractions.Data.IndexQuery indexQuery, Raven.Database.Indexing.RavenPerFieldAnalyzerWrapper 分析器) 第 56 行 + 0xe 字节 C# Raven.Database.dll!Raven.Database.Indexing.Index.IndexQueryOperation .GetLuceneQuery(string query, 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) Line 1220 + 0x145 bytes C# Raven.Database.dll!Raven.Database.DocumentDatabase.Query(string index, Raven.Abstractions.Data. IndexQuery 查询)第 1237 行 C# Raven.Database.dll!Raven.Database.Queries.DynamicQueryRunner.ExecuteActualQuery(Raven.Abstractions.Data.IndexQuery 查询,Raven.Database.Data.DynamicQueryMapping 映射,System.Tuple touchTemporaryIndexResult,字符串 realQuery)第 82 行+ 0x32b 字节 C# Raven.Database.dll!Raven.Database.Queries.DynamicQueryRunner.ExecuteDynamicQuery(string entityName, Raven.Abstractions.Data.IndexQuery 查询) 第 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(string index, Raven.Abstractions.Data.IndexQuery query, string[] 包括, 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() 第 505 行 C# Raven.Client.Lightweight.dll!Raven.Client.Linq。 RavenQueryProviderProcessor.ExecuteQuery() 第 1425 行 + 0x1b 字节 C# Raven.Client.Lightweight.dll!Raven.Client.Linq.RavenQueryProviderProcessor。执行(System.Linq.Expressions.Expression 表达式)第 1398 行 + 0x3d 字节 C#

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

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

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

知道出了什么问题或如何排除故障吗?

4

2 回答 2

1

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

于 2013-04-16T05:20:19.917 回答
0

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

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

IndexCreation.CreateIndexes(typeof(MyIndex).Assembly, store);
于 2014-11-27T09:01:35.630 回答