RavenDB - 写入/保存性能慢?

Mik*_*son 7 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 = 76 };
session.Store(btime);
session.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

身份验证模式:当RavenDB作为服务运行时,我假设它使用"Windows身份验证".当部署为IIS应用程序时,我只使用了默认值 - 即"Windows身份验证".

背景:数据库机器与作为Web服务器的开发机器分开.数据库在同一数据库计算机上运行.测试数据非常小 - 比方说100行.查询很简单,返回一个具有12个48字节大小的属性的对象.使用fiddler对RavenDB运行WCAT测试会在数据库计算机上产生更高的利用率(与SQL相比),并且页面数量会少得多.我尝试将Raven作为服务和IIS应用程序运行,但没有看到明显的区别.


编辑

我想确保a)我的一台机器或b)我创建的解决方案不是问题.所以,决定尝试使用Michael Friis创建的另一个解决方案在Appharbor上进行测试:RavenDN示例应用程序,只需将Miniprofiler添加到该解决方案中.迈克尔是Apharbor很棒的人之一,如果你想看看它,你可以在这里下载代码.

Appharbor的结果

你可以在这里试试(现在):

  1. 阅读:(7-12ms,少数异常值为100 + ms).

  2. 写/保存:(197-312ms)*WOW需要很长时间才能保存*.要测试保存,只需创建一个新的"thingy"并保存它.你可能想要至少两次这样做,因为第一个通常需要更长时间,因为应用程序预热.

除非我们都做错了,否则RavenDB的保存速度非常慢 - 保存速度比读取慢10-20倍.鉴于它异步重新索引,这似乎非常缓慢.

有没有办法加快速度或预期?

Joe*_*Joe 3

首先 - Ayende 是 RavenDB 背后的“人”(他写的)。我不知道他为什么不解决这个问题,尽管即使在谷歌小组中,他似乎也插话过一次提出一些尖锐的问题,但很少回来提供完整的答案。也许他正在努力让 RavenHQ 起步?!?

其次 - 我们遇到了类似的问题。以下是可能是原因的 Google 网上论坛讨论的链接:

RavenDB 身份验证和 401 响应

一个合理的问题可能是:“如果这些建议解决了问题,为什么 RavenDB 不能开箱即用?” 或者至少提供有关如何获得良好写入性能的文档。

我们对上面线程中提出的建议进行了一段时间的研究,响应时间确实有所改善。但最后,我们切换回 MySQL,因为它经过了充分的测试,我们很早就遇到了这个问题(幸运的是),这引起了我们可能会遇到更多问题的担忧,最后,因为我们没有时间:

  1. 全面测试它是否解决了我们在 RavenDB 服务器上看到的性能问题
  2. 调查并测试使用 UnsafeAuthenticatedConnectionSharing 和预身份验证的影响。