mirror of https://gitee.com/bigwinds/arangodb
86 lines
3.0 KiB
Plaintext
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
|
|
|
|
|
|
|
|
|