Post

Speeding Up Grafana with SQLite WAL Mode

Speeding Up Grafana with SQLite WAL Mode

Grafana was feeling sluggish. Enabled SQLite WAL mode and noticed immediate improvement.

The Change

In Grafana config, enable WAL (Write-Ahead Logging) for SQLite:

1
2
[database]
wal = true

Restart Grafana.

What is WAL?

Write-Ahead Logging is an SQLite optimization:

  • Normal mode: Writes lock the entire database
  • WAL mode: Writes go to a separate log file, readers aren’t blocked

Result: Better concurrency, especially for read-heavy workloads.

Why It Helps Grafana

Grafana does lots of concurrent reads:

  • Dashboard queries
  • Alerting checks
  • User sessions
  • Plugin data

Without WAL, writes (like saving dashboards) block all these reads.

With WAL, reads continue uninterrupted.

The Trade-off

WAL adds a second file (database.db-wal) alongside your database. Slightly more disk I/O.

But for most Grafana setups, the performance gain is worth it.

When to Use

Use WAL if:

  • Multiple concurrent users
  • Frequent dashboard updates
  • Read-heavy workload

Skip it if:

  • Single user
  • Mostly static dashboards
  • Using MySQL/Postgres instead of SQLite

For production Grafana with SQLite backend, WAL should be default.

This post is licensed under CC BY 4.0 by the author.