Link Search Menu Expand Document
Start for Free

Query Log Database

This page discusses the Query Log Database which preserves information about queries which have been executed by Stardog over time.

Page Contents

Overview

The Query Log database allows users to see the history of queries executed along with metadata such as query execution time, user, database, etc. Stardog has extensive audit logging capabilities that includes a logger to identify slow queries. However these logs are only accessible to the infrastructure operators and is not in a form easy to analyze.

The Query Log Database stores that information as RDF and makes it queryable with SPARQL similar to the Data Catalog database. The feature has to be enabled by setting the server’s option query.log.enabled to true. After that the server will automatically log all SPARQL queries at predefined intervals (see the setting below).

Query Log Database works with the Stardog cluster out of the box. Each cluster node executes and logs queries independently but changes to the Query Log Database are replicated to all nodes (like changes to any user database).

Updates to the Query Log Database are batched to minimize the overhead of logging queries and replicating the log in the cluster.

Query Log Database provides built-in functionality to truncate old query log events to prevent the database size from growing continuously.

Permissions

Read access to this database must be granted manually. It is the responsibility of the Stardog administrator.

Examples

This basic query may be used to fetch the last 20 queries executed against the querylog database

prefix : <tag:stardog:api:query:>
select * { 
  ?query a :Query;
     :user ?user;
     :type ?query_type;
     :db ?db;
     :start ?start_time;
     :end ?end_time;
     :query ?query_str.
     OPTIONAL {?query :status ?status.}
     OPTIONAL {?query :plan ?query_plan.}
     OPTIONAL {?query :reasoning ?reasoning.}
     OPTIONAL {?query :ip ?user_ip.}
}
ORDER BY DESC(?start_time)
LIMIT 20

RDF Vocabulary for Query Log Database

Predicate Description
tag:stardog:api:query:user User who ran the query
tag:stardog:api:query:type Type of the query
tag:stardog:api:query:db Database the query ran against
tag:stardog:api:query:start Start datetime of the query
tag:stardog:api:query:end End time of the query
tag:stardog:api:query:query The query string
tag:stardog:api:query:plan The optimized query plan (optional plan might be empty)
tag:stardog:api:query:reasoning Reasoning schema (optional not there if disabled)
tag:stardog:api:query:ip The user IP address (optional)
tag:stardog:api:query:status Query status: “Finished”, “TimedOut” or “Killed” (optional)

Settings

Setting Description Default
query.log.enabled Enable the query log feature false
query.log.auto.create.db Create the Query Log db automatically on start-up true
query.log.database Name of the Query Log database “querylog”
query.log.update.interval Interval at which queries are flushed to disk “10s”
query.log.prune.interval Interval at which queries are pruned from the query log database “30m”
query.log.optimize.interval Interval at which the Query Log database is optimized “3d”
query.log.prune.max.size Maximum size of the Query Log database. Oldest queries are deleted first 10.000
query.log.prune.max.age Maximum age of queries in the Query Log database. Older queries are going to be deleted first “30d”

Currently query.log.enabled is both a database and a server’s option. If set to true for the server, queries are logged for all databases unless it’s set to false for a specific database. All other options are server-wide.