Identifying Historical Slow Queries Using System Tables
SYSTEM.QUERYSTATS
To know which of your finished queries took an excessive amount of time, examine the logs in the SYSTEM.QUERYSTATS
table. The SYSTEM.QUERYSTATS
table is also referred to as the Slow Query Log. By default, NuoDB stores the ten slowest queries that took more than ten seconds to execute. This can be modified by changing MAX_QUERY_COUNT
and MIN_QUERY_TIME
values in SYSTEM.PROPERTIES
. Use the SET
command (see SET) to change the default settings.
To find your slowest queries, run a simple select from SYSTEM.QUERYSTATS
. (We use SET OUTPUT VERTICAL
here to make the output more readable.)
SET OUTPUT VERTICAL;
SELECT * FROM system.querystats;
==================================== Row #1 ====================================
SQLSTRING: select * from t where x=?;
COUNT: 1
RUNTIME: 13010424
USER: CLOUD
SCHEMA: USER
NUMPARAM: 1
PARAMS: 0/string/2
NODEID: 1
NROWS: 1
UNIQUEID: 4
TIMESTAMP: 2013-04-23 12:29:53.512637
EXPLAIN:
==================================== Row #2 ====================================
SQLSTRING: select s from t2 join t3 on t2.s=t3.s;
COUNT: 1
RUNTIME: 14013823
USER: CLOUD
SCHEMA: USER
NUMPARAM: 0
PARAMS:
NODEID: 2
NROWS: 1
UNIQUEID: 2
TIMESTAMP: 2013-04-23 12:52:54.830913
EXPLAIN:
This will give you the SQL string for the query, the number of times the query has executed, the execution time for the query in microseconds (exaggerated in this example for illustration purposes), information about the user, schema and any parameters as well as other information. TIMESTAMP
is the time at which the query started. SYSTEM.QUERYSTATS
is a Pseudo System Table.
Because SYSTEM.QUERYSTATS
is a Pseudo System Table, when a NuoDB Transaction Engine (TE) shuts down, the slow queries that were executed against that TE will no longer be reported in the QUERYSTATS
table.
QUERYSTATS
Columns
Column | Description |
---|---|
SQLString |
SQL query string |
Count |
Number of times the query executed |
Runtime |
Execution time in microseconds; this is the last execution time and not an average |
User |
User who executed the query |
Schema |
Schema against which the query was run |
NumParam |
Number of parameters in the query |
Params |
Information about each parameter including location, type and value |
NodeID |
Internal ID for TE for this query |
NRows |
Number of rows returned by the query |
Timestamp |
When the query started |
Explain |
Shows the execution plan of the executed statement See |