测试ravendb数据库查询速度的最佳方法

测试ravendb数据库查询速度的最佳方法,ravendb,performance-testing,Ravendb,Performance Testing,我在互联网上搜索了一段时间,但没有找到任何测试RavenDb查询速度的例子 我试图归档的是比较两个session.query,并找出其中哪一个性能速度最好。我该怎么做//谢谢 编辑: 我正在构建一个mvc Notes应用程序,用户可以创建帐户并保存笔记。假设我有这两门课: public class SingleNote : ContentPage { public string Header { get; set; } public string Note { get; set;

我在互联网上搜索了一段时间,但没有找到任何测试RavenDb查询速度的例子

我试图归档的是比较两个session.query,并找出其中哪一个性能速度最好。我该怎么做//谢谢

编辑:

我正在构建一个mvc Notes应用程序,用户可以创建帐户并保存笔记。假设我有这两门课:

public class SingleNote : ContentPage
{
    public string Header { get; set; }
    public string Note { get; set; }
    public string Category { get; set; }
}
还有这个:

public class LoginViewModel
{
    [Required]
    [Display(Name = "Username")]
    public string UserName { get; set; }

    [Required]
    [DataType(DataType.Password)]
    [Display(Name = "password")]
    public string Password { get; set; }
}
最好在LoginViewDel中放置一个用户singleNotes列表并将所有用户备注存储在该列表中,还是在SingleNote ravenDocument中放置一个引用该用户的属性

然后我试图实现的是对不同类型的查询进行测试,看看哪种查询的性能/速度最好

因此,对于相关问题:我是否可以对此进行一些测试,并比较这两个查询,看看其中哪一个查询的性能速度最好:

案例1:我将拥有文档的prop字符串users放在SingleNote类中 这里的风险是我必须查询集合“SingleNotes”中的所有文档。这将导致搜索许多文档。这会成为一个问题吗

var listOfSpecificUsersDocuments =
        RavenSession.Query<SingleNote>()
                .Where(o => o.UserThatOwnsTheDoc == User.Identity.Name)
                .ToList();`
var userDocumentWitchIncludesAListOfSingleNotes = RavenSession.Load<LoginViewModel>("UserName/1");
var-listofSpecificUserDocuments=
RavenSession.Query()
.Where(o=>o.UserThatOwnsDoc==User.Identity.Name)
.ToList()`
案例2:我在LoginView模型中放置了prop
List SingleNotes

在本例中,我将每个注释都存储在UserDocument中。这里的风险是,如果“SingleNotes”列表被删除,文档大小可能会变得非常大。这会成为一个问题吗

var listOfSpecificUsersDocuments =
        RavenSession.Query<SingleNote>()
                .Where(o => o.UserThatOwnsTheDoc == User.Identity.Name)
                .ToList();`
var userDocumentWitchIncludesAListOfSingleNotes = RavenSession.Load<LoginViewModel>("UserName/1");
var userdocumentwitchincludesalitofssinglenotes=RavenSession.Load(“用户名/1”);

我想说,您感兴趣的不是性能测试,而是压力测试。假设您完成了性能分析,发现其中一种方法是“更快”,那么“更快”实际上意味着什么呢?如果您的“更快”解决方案在负载下出现故障,这当然没有任何意义

您希望进行的测试类型非常重要,需要付出真正的努力才能实现。您需要查看用户的总体体验,而不是孤立地查看性能。您需要规划一个场景(或一系列可以并发运行的场景),以模拟真实场景中的系统行为

以Twitter为例,一个“简单”的压力测试可能涉及1000个用户注册、800个登录、400条100条推文、200条1000条推文,以及所有1000个搜索用户以跟踪100个其他用户的链接。同时执行所有这些操作。监控系统各部分的性能,一个动作是否会对其他动作造成损害?系统的破裂点是什么时候

回到你的问题上来,这里的解决方案是构建两种可能的解决方案。然后对应用程序的MVC端使用标准负载测试仪。这将向您展示您可以通过良好的体验支持多少并发用户,降低体验速度,并最终关闭。对于合法的测试,请确保您的应用程序部署到真实的服务器上,并且使用质量相当的生产服务器运行IIS。(也就是说,不要使用Windows 8,请使用Windows Server 2012。IIS在用户版上已降级,以防止其用作服务器)

在文档世界而不是关系世界中重新学习对象建模的一些简单建议。您正在寻求对事务边界进行建模。如果X改变了,Y也需要改变吗?这些文件可能位于同一文档中
LoginViewModel
是否需要一个
列表
,或者在用户登录时重新措辞?我是否需要在每一时刻都列出所有相关注释?如果答案是肯定的,我需要他们在任何时候,这是一个明确的迹象,它属于同一份文件。如果答案是“视情况而定”或“有时”,则意味着它不属于同一文档。如果您试图做的事情感觉“困难”,那么很明显您的文档模型不好。建模良好的非关系系统通常可以通过单个
Load
语句或单个
Query
响应任何单个请求。如果您需要使用单个
LoadStartingWith
无法解决的多个加载,则可能存在错误,如果您使用多个查询,则类似