我目前在简单的仪表板应用程序的概念验证中使用RavenDB,该应用程序提供对系统中传入事件的聚合视图。让我们说例如用户可以看到按小时(一天),一天,一个月或一年的粒度。
我有300万个现有事件要导入&索引和我正在寻找最佳/最佳性能的方法,在经过一些不成功的尝试之后这样做。
请注意,这个问题与生成数据和索引后应用程序的性能无关,该部分非常好。
所以我有:
如果索引不存在,我可以毫无问题地导入数据,但是如果索引存在,我会在约45分钟的索引处理后始终获得OutOfMemoryExceptions。
可以调整索引过程以及合适的值吗?
或者乐意让它建议以不同的方式解决问题。
答案 0 :(得分:1)
我发现将导入过程分成批次(比如说一次一个月的所有数据),使用raven中存在的索引导入,然后等待,直到不再有任何过时的索引产生最稳定的结果。
我使用GetStatistics()。StaleIndexes结合Thread.Sleep让进程在批处理之间等待。我仍然将会话批量大小保留为每个会话1024个文档。