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 可扩展到大环境,同时保持相当低的延迟。
我设置了带有 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 可扩展到大环境,同时保持相当低的延迟。