我使用2个Db服务器和2个协调器设置简单群集。 当我执行简单的选择查询时,即使使用最少的数据与单机设置相比,我也会发现性能显着下降。
FOR key IN @keys
FOR user IN User FILTER user.UserId == key
RETURN user
我有UserId的哈希索引设置。即使集合中有100个用户,而@keys
包含2个密钥,这个查询在单机配置上需要大约300毫秒到大约4毫秒。
Users
集合有_key
设置的4个分片。
答案 0 :(得分:2)
群集涉及更多网络连接,因此网络延迟更多。必须对数据进行解序/序列化(包括解析等)。必须以集中的方式管理碎片等。
根据您的查询(即,依赖于其承载的排序结果的子查询),查询的部分必须在整个群集中分布,其中包括涉及甚至更多通信的多次往返。
群集旨在为您提供更高的吞吐量和更多计算资源的访问权限,而不是单个服务器环境可以提供的低延迟。
只要一台机器可以扩展到您的工作负载,集群就不是正确的解决方案。这将随着我们即将推出的3.0版本而改变,其中新的同步复制除了可扩展性之外还为您提供容错和高可用性。目前,您可以将查询加载分发到多台计算机using replication。
Read more about ArangoDB Cluster performance in Max Blog article扩展到一个大环境,同时保持合理的低延迟。