1
0
Fork 0
arangodb/Documentation/Books/Manual/Appendix/JavaScriptModules/Queries.md

3.0 KiB

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:

@startDocuBlockInline QUERY_01_properyOfQueries
@EXAMPLE_ARANGOSH_OUTPUT{QUERY_01_properyOfQueries}
var queries = require("@arangodb/aql/queries");
queries.properties();
queries.properties({slowQueryThreshold: 1});
@END_EXAMPLE_ARANGOSH_OUTPUT
@endDocuBlock QUERY_01_properyOfQueries

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):

@startDocuBlockInline QUERY_02_listQueries
@EXAMPLE_ARANGOSH_OUTPUT{QUERY_02_listQueries}
~var queries = require("@arangodb/aql/queries");
var theQuery = 'FOR sleepLoooong IN 1..5 LET sleepLoooonger = SLEEP(1000) RETURN sleepLoooong';
var tasks = require("@arangodb/tasks");
|tasks.register({
|  id: "mytask-1",
|  name: "this is a sample task to spawn a slow aql query",
|  command: "require('@arangodb').db._query('" + theQuery + "');"
});
|~ while (true) {
|~   require("internal").wait(1);
|~   if (queries.current().filter(function(query) {
|~                           return query.query === theQuery;
|~                         }).length > 0) {
|~     break;
|~   }
~}
queries.current();
@END_EXAMPLE_ARANGOSH_OUTPUT
@endDocuBlock QUERY_02_listQueries

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:

@startDocuBlockInline QUERY_03_listSlowQueries
@EXAMPLE_ARANGOSH_OUTPUT{QUERY_03_listSlowQueries}
~var queries = require("@arangodb/aql/queries");
queries.slow();
@END_EXAMPLE_ARANGOSH_OUTPUT
@endDocuBlock QUERY_03_listSlowQueries

Clear slow queries

Clear the list of slow AQL queries:

@startDocuBlockInline QUERY_04_clearSlowQueries
@EXAMPLE_ARANGOSH_OUTPUT{QUERY_04_clearSlowQueries}
~var queries = require("@arangodb/aql/queries");
queries.clearSlow();
queries.slow();
@END_EXAMPLE_ARANGOSH_OUTPUT
@endDocuBlock QUERY_04_clearSlowQueries

Kill

Kill a running AQL query:

@startDocuBlockInline QUERY_05_killQueries
@EXAMPLE_ARANGOSH_OUTPUT{QUERY_05_killQueries}
~var queries = require("@arangodb/aql/queries");
~var tasks = require("@arangodb/tasks");
~var theQuery = 'FOR sleepLoooong IN 1..5 LET sleepLoooonger = SLEEP(1000) RETURN sleepLoooong';
|var runningQueries = queries.current().filter(function(query) {
|   return query.query === theQuery;
});
queries.kill(runningQueries[0].id);
@END_EXAMPLE_ARANGOSH_OUTPUT
@endDocuBlock QUERY_05_killQueries