【发布时间】:2015-03-22 15:16:33
【问题描述】:
我正在尝试从我的 RavenDB 数据库中获取数据。我创建了一个静态索引,并尝试使用推荐的 DLL Raven.Client.Lightweight 通过我的 web 服务执行我的请求。此步骤需要 3 秒才能获取数据。
但如果我通过 RavenDB 接口执行相同的查询,我会在 10 毫秒内获得数据(见少)。
你知道为什么在服务器模式下执行时间很慢吗?
谢谢!
编辑:这里有一些代码: 我在我的网络服务的 global.asax 中初始化我的文档:
public class Global : System.Web.HttpApplication
{
public static DocumentStore store;
protected void Application_Start(object sender, EventArgs e)
{
store = new DocumentStore { Url = Settings.Default.Url };
store.Initialize();
store.Conventions.AllowQueriesOnId = true;
}
}
我的要求: 公共静态类 ServiceBusiness { 私有静态 IDocumentSession Session = GetSession("programs");
public void MyTestMethod (string MyParamId, string PageNume, string NbItems)
{
List<Content> contents = new List<Content>();
using (var Session = Global.store.OpenSession("MyDb"))
{
contents = Session.Query<Content>("Test")
.Where(x => x.Programs.Any(y => y.Products.Any(z => z.Values.Any(w => w.Id == MyParamId))))
.Skip((int.Parse(PageNum) - 1) * int.Parse(NbItems))
.Take(int.Parse(NbItems))
.ToList();
}
}
}
【问题讨论】:
-
您是否尝试过连续运行这些测试 10 次或更多次并取平均值?如果不是,您看到的延迟可能是 .NET 加载 DLL(和其他),因此不是一个很好的比较。
-
我现在尝试做 2 个不同的测试:
-
您如何在您的网络服务中初始化 DocumentStore?一些代码将有助于识别可能出现的问题。
-
我现在尝试做 2 个不同的测试。每次第一次调用该方法时,索引字段的值都不同:在 RavenDB 的控制台或调试模式下,结果总是相同的,执行时间总是小于 1 秒,服务的执行时间需要更多时间。第二个测试:我调用了同一个查询x次,第一次调用很长,但其他的更好。
-
代码已添加!谢谢!