arangodb - Foxx arangodb 遇到内存限制
问题描述
我有一个简单的查询在 foxx 中运行
For u in collection
Filter u.someIndexedSparseFiler !=null
Return {_id:u._id}
这将返回数百万以上的结果。在日志中,arango 有一条到达有限内存堆的消息并终止进程。
reached heap-size limit of #3 interrupting V8 execution (heap size limit 3232954528, used 3060226424) during V8 internal collection
即使我将标志--javascript.v8-max-heap 3000添加到启动中。它仍然在相同的错误中运行。我应该怎么办?有没有比这更好的方法
解决方案
我不确定您为什么会出现内存不足错误,但看起来您返回的数据超出了 V8 堆大小。someIndexedSparseFiler
另一种可能性是某些东西导致引擎错过/忽略索引,导致引擎在评估属性之前加载每个文档。
评估数百万个文档(或大量大型文档)不仅会消耗大量磁盘/内存 I/O,而且还可能需要大量 RAM。尝试使用解释功能返回查询分析 - 它应该告诉您出了什么问题。
为了比较,我的查询...
FOR u IN myCollection
FILTER u.someIndexedSparseFiler != null
RETURN u._id
...当我单击“解释”时返回:
Query String (82 chars, cacheable: true):
FOR u IN myCollection
FILTER u.someIndexedSparseFiler != null
RETURN u._id
Execution plan:
Id NodeType Est. Comment
1 SingletonNode 1 * ROOT
7 IndexNode 5 - FOR u IN myCollection /* persistent index scan, projections: `_id` */
5 CalculationNode 5 - LET #3 = u.`_id` /* attribute expression */ /* collections used: u : myCollection */
6 ReturnNode 5 - RETURN #3
Indexes used:
By Name Type Collection Unique Sparse Selectivity Fields Ranges
7 idx_1667363882689101824 persistent myCollection false true 100.00 % [ `someIndexedSparseFiler` ] *
Optimization rules applied:
Id RuleName
1 move-calculations-up
2 move-filters-up
3 move-calculations-up-2
4 move-filters-up-2
5 use-indexes
6 remove-filter-covered-by-index
7 remove-unnecessary-calculations-2
8 reduce-extraction-to-projection
请注意,它列出了我的稀疏索引Indexes used:
。另外,尝试更改!=
to ==
,您会看到现在它忽略了索引!这是因为优化器知道稀疏索引永远不会有null
值,所以它会跳过它。
如果您不熟悉它,“解释”功能在调整查询和创建索引时非常有用(实际上是必不可少的)。另外,请记住索引应该与您的查询匹配;在这种情况下,索引应该只有一个属性,否则“选择性”商可能太低,引擎将忽略它。
推荐阅读
- progressive-web-apps - PWA - 如何指定版本?
- c# - 如何在c#中比较两个数组并计算相等的项目
- python - 在 Python 中,在循环中使用三个函数,其中第三个函数的输出是所有三个函数的新输入
- python-3.x - 将 CSS 与 Bottle 连接起来
- excel - Excel VBA 在特定单元格中添加值
- android - 如何在同一个 Realm 查询中查询两个字段?
- python - 如何将 gizeh 矢量动画叠加到具有透明度的电影视频上?
- docker - docker-compose 命令在什么范围内运行
- opengl - libgdx ScreenShot 照片损坏
- yii2 - 如何更改mpdf的位置