Performance dashboard: running queries / index suggestions / slow queries (if extension loaded)

Author: rathbomaCreated Sep 11, 2026Updated Sep 11, 2026
Labelsenhancementaccepted :+1:

This should be a new tab type with three sub-tabs for each item to inspect.

  1. Running queries - just shows queries that are running and lets a user kill them (if they have perms). Useful for killing slow running analytics queries.
  2. Index suggestions - databases track which queries are running without indexes and doing full table scans, we're surfacing this information.
  3. Slow queries - which queries SUCK and need to be improved.

Some implementation notes:

  • A lot of web frameworks (like rails) include a stacktrace as a comment when they run queries, we should surface this for slow queries so the user can see the cause. I'm not sure if all frameworks do this.
  • Some of these require plugins, in those cases we should check for the plugin, then block the tab if we detect the plugin is not installed, we can point them to installation instructions.
  • Some of this is done by projects like https://github.com/ankane/pghero, so we can learn from them

Availability for major database engines

Feature support by database

Database Running Queries + Kill Index Health Advisor Slow Query Stats
PostgreSQL pg_stat_activity + pg_cancel_backend/pg_terminate_backend pg_stat_user_indexes, pg_indexes for duplicates ⚠️ Needs pg_stat_statements extension enabled
MySQL / MariaDB information_schema.PROCESSLIST + KILL ⚠️ Usage stats need Performance Schema on; no built-in missing-index advisor ⚠️ Needs Performance Schema or slow query log enabled
SQLite ❌ Embedded, single-process — no concept of other connections to view/kill ⚠️ Can list indexes (PRAGMA index_list) but no usage stats to find unused/duplicate ❌ No stats subsystem — no built-in query timing history
Redis CLIENT LIST / CLIENT KILL ❌ Not a relational/indexed store — doesn't apply ✅ Built-in SLOWLOG
SQL Server sys.dm_exec_requests/sys.sysprocesses + KILL <spid> sys.dm_db_index_usage_stats + missing-index DMVs — best native support ⚠️ Needs Query Store enabled (or sys.dm_exec_query_stats)
MongoDB db.currentOp() / db.killOp() ⚠️ $indexStats gives usage but no missing/duplicate detection ⚠️ Needs profiler enabled (db.setProfilingLevel)

Slow-query setting scope

Database Setting Scope Restart required? Beekeeper can toggle it?
PostgreSQL pg_stat_statements Server-level — must be in shared_preload_libraries ✅ Yes ❌ No — config file + restart is outside Beekeeper's reach; can only detect it's missing and tell the user
MySQL/MariaDB Performance Schema (performance_schema variable) Server-level — read-only variable, startup-only ✅ Yes ❌ No
MySQL/MariaDB (alternative) slow_query_log / long_query_time Global, dynamic — SET GLOBAL ... ❌ No ⚠️ Yes, but affects all connections server-wide and needs SUPER/SYSTEM_VARIABLES_ADMIN — not something to flip silently
SQL Server Query Store Database-level, dynamic — ALTER DATABASE ... SET QUERY_STORE = ON ❌ No ⚠️ Yes, persists for that DB going forward, needs db_owner-ish permission
MongoDB Profiler (db.setProfilingLevel) Per-database, dynamic, in-memory — not persisted across mongod restart ❌ No ⚠️ Yes, needs dbAdmin-ish role; in a replica set/sharded cluster has to be set per-node

Source: beekeeper-studio/beekeeper-studio