ArangoDb集群查询性能问题

ArangoDb cluster query performance issue

我设置了带有 2 个数据库服务器和 2 个协调器的简单集群。 当我执行一个简单的 select 查询时,我发现即使使用最少的数据与单台机器设置相比,性能也会显着下降。

FOR key IN @keys 
FOR user IN User FILTER user.UserId == key 
RETURN user

我为 UserId 设置了哈希索引。即使在 collection 和 @keys 中有 100 个用户包含 2 个键,此查询也需要 ~300ms,而在单机配置上需要 ~4ms。

Users collection 有 4 个分片由 _key 设置。

集群涉及更多的网络连接,因此网络延迟也更多。数据必须是 de/serialized(涉及解析等)。分片等必须集中管理。

根据您的查询(即依赖于其承载者的排序结果的子查询),部分查询必须分布在集群中,并且需要多次往返,涉及更多的通信。

集群旨在为您提供更高的吞吐量和访问更多的计算资源,而不是单个服务器环境可以提供的低延迟。

只要一台机器可以根据您的工作量进行扩展,集群就不是合适的解决方案。这将随着我们即将推出的 3.0 版本而改变,其中新的同步复制除了可扩展性之外,还为您提供容错和高可用性。目前您可以将查询负载分配到多台机器 using replication.

Read more about ArangoDB Cluster performance in Max Blog article 可扩展到大环境,同时保持相当低的延迟。