【问题标题】:RavenDB Server Mode PerformanceRavenDB 服务器模式性能
【发布时间】: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次,第一次调用很长,但其他的更好。
  • 代码已添加!谢谢!

标签: c# ravendb


【解决方案1】:

最后,高响应时间是由于网络中发送的数据包的大小(限制为 1514 字节)。我们花了很多时间来组装所有的数据包。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多