Performance RavenDB-写入/保存性能慢?
我开始将一个简单的ASP.NET MVC web应用程序从SQL移植到RavenDB。我注意到SQL上的页面比RavenDB上的页面快 使用Miniprofiler深入查看,问题似乎在于执行以下操作所需的时间:session.SaveChanges(150-220ms)。在RavenDB中保存的代码如下所示:Performance RavenDB-写入/保存性能慢?,performance,ravendb,Performance,Ravendb,我开始将一个简单的ASP.NET MVC web应用程序从SQL移植到RavenDB。我注意到SQL上的页面比RavenDB上的页面快 使用Miniprofiler深入查看,问题似乎在于执行以下操作所需的时间:session.SaveChanges(150-220ms)。在RavenDB中保存的代码如下所示: var btime = new TimeData() { Time1 = DateTime.Now, TheDay = new DateTime(2012, 4, 3), UserId =
var btime = new TimeData() { Time1 = DateTime.Now, TheDay = new DateTime(2012, 4, 3), UserId = 76 };
session.Store(btime);
session.SaveChanges();
身份验证模式:当RavenDB作为服务运行时,我假设它使用“Windows身份验证”。当部署为IIS应用程序时,我只使用了默认值,即“Windows身份验证”
后台:数据库计算机与用作web服务器的开发计算机是分开的。这些数据库在同一台数据库计算机上运行。测试数据非常小,比如说100行。查询很简单,返回一个大小为48字节的12个属性的对象。使用fiddler对RavenDB运行WCAT测试在数据库机器上产生了更高的利用率(vs SQL)和更少的页面。我尝试将Raven作为服务和IIS应用程序运行,但没有发现明显的区别
编辑 我想确保a)我的一台机器或b)我创建的解决方案没有问题。因此,决定尝试使用Michael Fris创建的另一个解决方案在Appharbor上测试它:,只需将Miniprofiler添加到该解决方案中即可。Michael是Apharbor最棒的家伙之一,如果你想看的话,你可以下载代码 来自Appharbor的结果 您可以(目前):
编辑:再次阅读您的问题并查看背景部分,您明确定义了测试条件,使其成为SQL Server的最佳方案,同时也是RavenDB效率最低的方法之一。对于这种大小的数据,如果是真实世界中的使用,几乎可以肯定这是一个文档。尝试停止该计算机上运行的SQL Server实例,并再次监视RavenDB的性能。如果在这种情况下花费的时间非常少,您可以考虑问题所在。您正在执行哪种操作?代码是什么样子的?RavenDB运行的身份验证模式是什么?@UNNI-我不确定您是否在开玩笑,但我确实尝试过停止SQL Server实例。这没什么区别。@Ayenda-请看我的编辑。结果表明,保存比查询花费的时间要长得多。谢谢Joe。这很令人沮丧。RavenDB将其自身提升为“高性能-RavenDB对于每种类型的数据模型来说都是一个非常快速的持久化层”。也许它应该说“高读性能-尽管持久化相当缓慢”。从根本上说,我真的很惊讶于这个问题得到的回应如此之少。我本以为社区对RavenDB更感兴趣。不幸的是,我不同意总结的大部分内容。我认为今天的RavenDB有些问题。我不知道这是一个设计问题还是一个bug,但它不仅仅是“这就是我们所期望的”。用1/4秒的时间写入/持久化哪怕是最小的对象都是疯狂的。实际上,这是网络延迟、身份验证聊天和查询的总和——这不是你在AppHarbor的RavenHQ上部署web应用的方式吗?另外,不要使用SQL Server和