Queries Module
const queries = require('@arangodb/aql/queries')
The query module provides the infrastructure for working with currently running AQL queries via arangosh.
queries.properties()
Returns the servers current query tracking configuration; we change the slow query threshold to get better results:
Permalink
arangosh> var queries = require ("@arangodb/aql/queries" );
arangosh> queries.properties();
arangosh> queries.properties({slowQueryThreshold : 1 });
arangosh> queries.properties({slowStreamingQueryThreshold : 1 });
{
"code" : 200 ,
"enabled" : true ,
"trackSlowQueries" : true ,
"trackBindVars" : true ,
"maxSlowQueries" : 64 ,
"slowQueryThreshold" : 10 ,
"slowStreamingQueryThreshold" : 10 ,
"maxQueryStringLength" : 4096
}
{
"code" : 200 ,
"enabled" : true ,
"trackSlowQueries" : true ,
"trackBindVars" : true ,
"maxSlowQueries" : 64 ,
"slowQueryThreshold" : 1 ,
"slowStreamingQueryThreshold" : 10 ,
"maxQueryStringLength" : 4096
}
{
"code" : 200 ,
"enabled" : true ,
"trackSlowQueries" : true ,
"trackBindVars" : true ,
"maxSlowQueries" : 64 ,
"slowQueryThreshold" : 1 ,
"slowStreamingQueryThreshold" : 1 ,
"maxQueryStringLength" : 4096
}
Currently running queriesPermalink
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):
Permalink
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();
{
"id" : "mytask-1" ,
"name" : "this is a sample task to spawn a slow aql query" ,
"created" : 1652869692.5729103 ,
"type" : "timed" ,
"offset" : 0 ,
"command" : "(function (params) { require('@arangodb').db._query('FOR sleepLoooong IN 1..5 LET sleepLoooonger = SLEEP(1000) RETURN sleepLoooong'); } )(params);" ,
"database" : "_system"
}
[
{
"id" : "66822" ,
"database" : "_system" ,
"user" : "root" ,
"query" : "FOR sleepLoooong IN 1..5 LET sleepLoooonger = SLEEP(1000) RETURN sleepLoooong" ,
"bindVars" : {
},
"started" : "2022-05-18T10:28:12Z" ,
"runTime" : 1.0177488790004645 ,
"state" : "executing" ,
"stream" : false
}
]
The function returns the currently running AQL queries as an array.
The function returns the last AQL queries that exceeded the slow query threshold as an array:
Clear the list of slow AQL queries:
Permalink
arangosh> queries.clearSlow();
arangosh> queries.slow();
Kill a running AQL query:
Permalink
arangosh> var runningQueries = queries.current().filter(function (query ) {
........> return query.query === theQuery;
........> });
arangosh> queries.kill(runningQueries[0 ].id);