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
Hide execution results
- {
- "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 queries
We create a task that spawns queries, so we have nice output. Since this taskuses 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
Hide execution results
- {
- "id" : "mytask-1",
- "name" : "this is a sample task to spawn a slow aql query",
- "created" : 1578451110.881699,
- "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" : "383",
- "query" : "FOR sleepLoooong IN 1..5 LET sleepLoooonger = SLEEP(1000) RETURN sleepLoooong",
- "bindVars" : {
- },
- "started" : "2020-01-08T02:38:30Z",
- "runTime" : 1.0614311695098877,
- "state" : "executing",
- "stream" : false
- }
- ]
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();
Show execution results
Hide execution results
- [ ]
Clear slow queries
Clear the list of slow AQL queries:
- arangosh> queries.clearSlow();
- arangosh> queries.slow();
Show execution results
Hide execution results
- {
- "code" : 200
- }
- [ ]
Kill
Kill a running AQL query:
- arangosh> var runningQueries = queries.current().filter(function(query) {
- ........> return query.query === theQuery;
- ........> });
- arangosh> queries.kill(runningQueries[0].id);
Show execution results
Hide execution results
- {
- "code" : 200
- }