【问题标题】:ArangoDB blocking AQL queriesArangoDB 阻塞 AQL 查询
【发布时间】:2015-05-28 14:57:31
【问题描述】:

我们在安装 anrango 时遇到了一个新问题。如果我们发送一个复杂的 AQL 查询,比如遍历多个集合以查找特定信息,然后跟踪边缘等,整个数据库都会阻塞。我们看到我们的三个 CPU 内核中的一个为 100%,另外两个在 0%-1% 左右。当 AQL 查询运行时,数据库不会对任何其他请求做出反应,并且 Web 界面也无法访问。这意味着整个处理将暂停,直到一个查询完成。

这里有两个问题: 第一:查询需要很长时间(图形查询) 第二:当一个查询在工作时,数据库没有反应。

对于这个问题有什么想法/解决方案吗?您成功使用过的最大的数据库/图表有哪些?

谢谢,塞卡纳

【问题讨论】:

  • 我知道有百万边的装置。查询是只读的?您是否并行使用任何更新查询/请求?
  • 是的,我们并行使用请求和更新查询。悲伤是个坏主意吗?
  • 视情况而定。您使用什么样的读取查询?遍历?
  • @secana 这仍然是一个问题还是找到解决您问题的方法?
  • @13abylon 不幸的是没有。我发现唯一的“解决方案”是使用本地缓存和批量插入/请求减少对数据库的请求数量。

标签: arangodb


【解决方案1】:

ArangoDB 2.8 包含死锁检测。因此,如果您的查询阻塞锁定,ArangoDB 现在将引发异常。

ArangoDB 2.8 还提供了fast graph traversals,大大提高了图形性能。

另一个好的解决方案是使用replication slave 将读取分离到第二个实例。

使用 RocksDB 作为存储引擎(自 3.2 起可用)不再有集合级锁,这意味着大多数查询可以并行执行而不会阻塞:https://docs.arangodb.com/3.4/Manual/Architecture/StorageEngines.html

【讨论】:

  • “我们看到我们的三个 CPU 内核中的一个处于 100% 状态,另外两个约为 0%-1%。” -> 5 年后,似乎什么都没有改变。我在 RocksDB 和 DB 版本 3.7.11 上看到了同样的问题。
猜你喜欢
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多