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

86 lines
3.0 KiB
Plaintext

!CHAPTER Module "queries"
The query module provides the infrastructure for working with currently running AQL queries via arangosh.
!SUBSECTION 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
!SUBSECTION Currently running queries
We [create a task](Tasks.md) 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('internal').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.
!SUBSECTION 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
!SUBSECTION 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
!SUBSECTION 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