mirror of https://gitee.com/bigwinds/arangodb
68 lines
3.8 KiB
Markdown
68 lines
3.8 KiB
Markdown
---
|
|
layout: default
|
|
description: Query statistics
|
|
---
|
|
Query statistics
|
|
================
|
|
|
|
A query that has been executed will always return execution statistics. Execution statistics
|
|
can be retrieved by calling `getExtra()` on the cursor. The statistics are returned in the
|
|
return value's `stats` attribute:
|
|
{% arangoshexample examplevar="examplevar" script="script" result="result" %}
|
|
@startDocuBlockInline 06_workWithAQL_statementsExtra
|
|
@EXAMPLE_ARANGOSH_OUTPUT{06_workWithAQL_statementsExtra}
|
|
|db._query(`
|
|
| FOR i IN 1..@count INSERT
|
|
| { _key: CONCAT('anothertest', TO_STRING(i)) }
|
|
| INTO mycollection`,
|
|
| {count: 100},
|
|
| {},
|
|
| {fullCount: true}
|
|
).getExtra();
|
|
|db._query({
|
|
| "query": `FOR i IN 200..@count INSERT
|
|
| { _key: CONCAT('anothertest', TO_STRING(i)) }
|
|
| INTO mycollection`,
|
|
| "bindVars": {count: 300},
|
|
| "options": { fullCount: true}
|
|
}).getExtra();
|
|
@END_EXAMPLE_ARANGOSH_OUTPUT
|
|
@endDocuBlock 06_workWithAQL_statementsExtra
|
|
{% endarangoshexample %}
|
|
{% include arangoshexample.html id=examplevar script=script result=result %}
|
|
The meaning of the statistics attributes is as follows:
|
|
|
|
* *writesExecuted*: the total number of data-modification operations successfully executed.
|
|
This is equivalent to the number of documents created, updated or removed by `INSERT`,
|
|
`UPDATE`, `REPLACE` or `REMOVE` operations.
|
|
* *writesIgnored*: the total number of data-modification operations that were unsuccessful,
|
|
but have been ignored because of query option `ignoreErrors`.
|
|
* *scannedFull*: the total number of documents iterated over when scanning a collection
|
|
without an index. Documents scanned by subqueries will be included in the result, but not
|
|
no operations triggered by built-in or user-defined AQL functions.
|
|
* *scannedIndex*: the total number of documents iterated over when scanning a collection using
|
|
an index. Documents scanned by subqueries will be included in the result, but not
|
|
no operations triggered by built-in or user-defined AQL functions.
|
|
* *filtered*: the total number of documents that were removed after executing a filter condition
|
|
in a `FilterNode`. Note that `IndexRangeNode`s can also filter documents by selecting only
|
|
the required index range from a collection, and the `filtered` value only indicates how much
|
|
filtering was done by `FilterNode`s.
|
|
* *fullCount*: the total number of documents that matched the search condition if the query's
|
|
final top-level `LIMIT` statement were not present.
|
|
This attribute may only be returned if the `fullCount` option was set when starting the
|
|
query and will only contain a sensible value if the query contained a `LIMIT` operation on
|
|
the top level.
|
|
* *peakMemoryUsage*: the maximum memory usage of the query while it was running. In a cluster,
|
|
the memory accounting is done per shard, and the memory usage reported is the peak
|
|
memory usage value from the individual shards.
|
|
Note that to keep things light-weight, the per-query memory usage is tracked on a relatively
|
|
high level, not including any memory allocator overhead nor any memory used for temporary
|
|
results calculations (e.g. memory allocated/deallocated inside AQL expressions and function
|
|
calls). The attribute *peakMemoryUsage* is available from v3.4.3.
|
|
* *nodes*: _(optional)_ when the query was executed with the option `profile` set to at least *2*,
|
|
then this value contains runtime statistics per query execution node. This field contains the
|
|
node id (in `id`), the number of calls to this node `calls` and the number of items returned
|
|
by this node `items` (Items are the temporary results returned at this stage). You can correlate
|
|
this statistics with the `plan` returned in `extra`. For a human readable output you can execute
|
|
`db._profileQuery(<query>, <bind-vars>)` in the arangosh.
|