gpt4 book ai didi

RavenDB - 最快的插入性能 - 基准是什么?

转载 作者:行者123 更新时间:2023-12-04 18:48:30 25 4
gpt4 key购买 nike

我正在开发一个原型(prototype),使用 RavenDB,供我的公司评估。我们将有许多线程每隔几秒钟插入数千行,并且许多线程同时读取。我已经完成了我的第一个简单的插入测试,在更进一步之前,我想确保我正在使用推荐的方法来获得 RavenDB 插入的最佳性能。

我相信有一个批量插入选项。我还没有对此进行调查,因为我不确定这是否有必要。我正在使用 .NET API,我的代码现在看起来像这样:

Debug.WriteLine("Number of Marker objects: {0}", markerList.Count);

StopwatchLogger.ExecuteAndLogPerformance(() =>
{
IDocumentSession ravenSession = GetRavenSession();
markerList.ForEach(marker => ravenSession.Store(marker));
ravenSession.SaveChanges();
}, "Save Marker data in RavenDB");

StopwatchLogger 只是简单地调用该操作,同时在其周围放置一个秒表:
internal static void ExecuteAndLogPerformance(Action action, string descriptionOfAction)
{
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();

action();

stopwatch.Stop();

Debug.WriteLine("{0} -- Processing time: {1} ms", descriptionOfAction, stopwatch.ElapsedMilliseconds);
}

这是几次运行的输出。请注意,我正在写入 RavenDB 的本地实例(构建 701)。我知道网络上的性能会更差,但我首先在本地进行测试。

一次运行:
标记对象数量:671
在 RavenDB 中保存 Marker 数据——处理时间:1308 毫秒

另一个运行:
标记对象数量:670
在 RavenDB 中保存 Marker 数据——处理时间:1266 毫秒

另一个运行:
标记对象数量:667
在 RavenDB 中保存 Marker 数据——处理时间:625 毫秒

另一个运行:
标记对象数量:639
在 RavenDB 中保存 Marker 数据——处理时间:639 毫秒

哈。在 639 毫秒内处理 639 个对象。那有什么几率呢?无论如何,这是每毫秒一次插入,即每秒 1000 次。

Marker 对象/文档没有太多内容。这是一个已经保存的示例:
{
"ID": 14740009,
"SubID": "120403041588",
"ReadTime": "2012-04-03T13:51:45.0000000",
"CdsLotOpside": "163325",
"CdsLotBackside": "163325",
"CdteLotOpside": "167762",
"CdteLotBackside": "167762",
"EquipmentID": "VA_B"
}

这是预期的表现吗?

是否有更好的方法(最佳实践)插入以提高速度?

在我可以定位的地方是否有可用的插入基准?

最佳答案

首先,我宁愿确保您在单个批处理中保存的项目数量不会太大。没有硬性限制,但是它会损害性能,并且如果事务大小变得太大,最终会崩溃。使用像 1024 items 这样的值是安全的,但这实际上取决于文档的大小。

每秒 1000 个文档远低于使用单个 RavenDB 实例实际可以达到的数量。您应该并行插入,并且可以使用配置选项进行某种调整。例如,您可以增加以 Raven/Esent/开头的设置定义的值。将日志和索引放到不同的硬盘上也是一个好主意(比如在 sql server 中)。根据您的具体情况,您可能还希望在执行插入时暂时禁用索引。

但是,在大多数情况下,您不想关心这一点。如果您需要非常高的插入性能,您可以使用多个分片实例,理论上每秒插入次数不受限制(只需添加更多实例)。

关于RavenDB - 最快的插入性能 - 基准是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9999150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com