LabKey Server monitors the queries that it runs against the underlying database. For performance and memory usage reasons, it does not retain every query that has ever run, but it attempts to hold on to the most recently executed queries, the longest-running queries, and the most frequently run queries. In the vast majority of cases, all of the queries of interest are retained and tracked.
This information can be very useful for tracking down performance problems caused by slow-running database queries.
To view the query log:
- Select (Admin) > Site > Admin Console.
- Under Diagnostics, click Queries.
You can sort the list of queries by clicking the column headers:
|Count||The number of times that the server has executed the query since it started, or statistics were reset.|
|Total||The aggregate time of all of the invocations of the query, in milliseconds.|
|Avg||The average execution time, in milliseconds.|
|Max||The longest execution time for the query, in milliseconds.|
|Last||The last time that the query was executed.|
|Traces||This column will show the number of different call stacks from the application code that have invoked the query. If capture of stack traces was enabled on your server at the time of the query, clicking the link shows the actual stack traces, which can be useful for developers to track down any issues.|
|SQL||The query itself. Note that this is the actual text of the query that was passed to the database via the JDBC driver. It may contain substitution syntax.|
Clicking on a link in the Traces
column will show a details page. It includes the raw text of the query, as well as one example of actual parameter values that were passed. Note that other invocations of the query may have used other parameter values, and that different parameter values can have significant impact on the runtime performance.
From the details page, you can scroll down and click Show Execution Plan
to get the execution plan of the query as reported by the database itself.