繁体   English   中英

小批量与整个输入集的查询执行时间

[英]Query execution time with small batches vs entire input set

我正在使用 ArangoDB 3.9.2 进行搜索任务。 数据集中的项目数为 100.000。 当我将整个数据集作为输入列表传递给引擎时 - 执行时间约为 10 秒,这非常快。 但是,如果我以小批量的方式逐个传递数据集 - 每批 100 个项目,则执行时间会迅速增长。 在这种情况下,处理完整的数据集大约需要 2 分钟。 你能解释一下,为什么会这样? 数据集是一样的。

我正在使用来自 python-arango lib ver 0.2.1 的 python 驱动程序“ArangoClient”

PS:我遇到了与 Neo4j 类似的问题,但使用 HTTP API 提交的事务解决了这个问题。 ArangoDB 有类似的东西吗?

每次调用远程系统(Neo4J 或 ArangoDB 或任何数据库)时,建立连接、发送数据以及执行命令后断开连接都会产生开销。

您正在做的是尝试为您的实现找到“最佳位置”,即您发送的数据类型的最有效批量大小、查询的复杂性、硬件的性能等。

我建议做的是编写一个测试脚本,以不同的批次大小发送数据,以帮助您确定适合您的用例的最佳设置。

我已经在我设计的许多系统中采用了这种方法,并且每个实现的最佳批量大小都是独一无二的。 这完全取决于你在做什么。

如果您使用 100、1000、2000、5000 和 10000 的批量大小,请查看总体加载时间的结果。

通过这种方式,您将得出最适合您的答案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM