0
我正在考慮使用ArangoDB來開發我的一個新項目,但我一直無法找到有關其可擴展性的很多信息。如何估算ArangoDB計數函數的執行時間
具體而言,我正在尋找一些關於計數功能的信息。有一種可靠的方法(可能是一個公式)來估計一個集合中與簡單布爾值相匹配的文檔數量需要多長時間?
集合中的所有文檔將具有相同的字段,但具有不同的值。我怎樣才能確定計算幾億份文件需要多長時間?
我正在考慮使用ArangoDB來開發我的一個新項目,但我一直無法找到有關其可擴展性的很多信息。如何估算ArangoDB計數函數的執行時間
具體而言,我正在尋找一些關於計數功能的信息。有一種可靠的方法(可能是一個公式)來估計一個集合中與簡單布爾值相匹配的文檔數量需要多長時間?
集合中的所有文檔將具有相同的字段,但具有不同的值。我怎樣才能確定計算幾億份文件需要多長時間?
只需創建一個集合users
並根據需要插入儘可能多的隨機文檔。
FOR i IN 1..1100000
INSERT {
name: CONCAT("test", i),
year: 1970 + FLOOR(RAND() * 55),
gender: i % 2 == 0 ? 'male' : 'female'
} IN users
然後做計數:
FOR user IN users
FILTER user.gender == 'male'
COLLECT WITH COUNT INTO number
RETURN {
number: number
}
如果您在生產中使用此查詢,請務必添加一個索引了。在我的機器上,它將執行時間縮短大於100倍(0.043秒/1.1毫米文檔)。
用EXPLAIN檢查您的查詢以進一步估計執行的「昂貴」程度。
Query string:
FOR user IN users
FILTER user.gender == 'male'
COLLECT WITH COUNT INTO number
RETURN {
number: number
}
Execution plan:
Id NodeType Est. Comment
1 SingletonNode 1 * ROOT
8 IndexRangeNode 550001 - FOR user IN users /* hash index scan */
5 AggregateNode 1 - COLLECT WITH COUNT INTO number /* sorted*/
6 CalculationNode 1 - LET #4 = { "number" : number } /* simple expression */
7 ReturnNode 1 - RETURN #4
Indexes used:
Id Type Collection Unique Sparse Selectivity Est. Fields Ranges
8 hash users false false 0.00 % `gender` [ `gender` == "male" ]
Optimization rules applied:
Id RuleName
1 use-index-range
2 remove-filter-covered-by-index
只是做它,並算它... –