Queries Module

const queries = require('@arangodb/aql/queries')

The query module provides the infrastructure for working with currently running AQL queries via arangosh.

Properties

queries.properties() Returns the servers current query tracking configuration; we change the slow query threshold to get better results:

arangosh> var queries = require("@arangodb/aql/queries");
arangosh> queries.properties();
arangosh> queries.properties({slowQueryThreshold: 1});
arangosh> queries.properties({slowStreamingQueryThreshold: 1});
Show execution results

Currently running queries

We create a task that spawns queries, so we have nice output. Since this task uses resources, you may want to increase period (and not forget to remove it... afterwards):

arangosh> var theQuery = 'FOR sleepLoooong IN 1..5 LET sleepLoooonger = SLEEP(1000) RETURN sleepLoooong';
arangosh> var tasks = require("@arangodb/tasks");
arangosh> tasks.register({
........>  id: "mytask-1",
........>  name: "this is a sample task to spawn a slow aql query",
........>  command: "require('@arangodb').db._query('" + theQuery + "');"
........> });
arangosh> queries.current();
Show execution results

The function returns the currently running AQL queries as an array.

Slow queries

The function returns the last AQL queries that exceeded the slow query threshold as an array:

arangosh> queries.slow();
[ ]

Clear slow queries

Clear the list of slow AQL queries:

arangosh> queries.clearSlow();
{ 
  "code" : 200 
}
arangosh> queries.slow();
[ ]

Kill

Kill a running AQL query:

arangosh> var runningQueries = queries.current().filter(function(query) {
........>   return query.query === theQuery;
........> });
arangosh> queries.kill(runningQueries[0].id);
{ 
  "code" : 200 
}