Skip to content
HuginnDB

New in 1.20 · MySQL + MongoDB

Is it slow now,
or was it slow
yesterday too?

HuginnDB Pulse reads the counters your server already keeps and puts them next to the query you are writing: queries per second, connection pressure, cache hit rate, the statements it has spent the most time on, its biggest tables, who is connected, and which indexes nobody reads.

shop · mysqlpulse

Queries / s

412

Connections

112 / 151

Running

6

Cache hit

93.4 %

  • 112 of 151 connections in use (74 %).
  • Buffer pool served only 93 % of its reads from memory.

Time spent

StatementRunsAverage
SELECT `id`, `total` FROM `orders` WHERE `customer_id` = ?1.2 M0.8 ms
SELECT COUNT(*) FROM `order_items` WHERE `sku` LIKE ?no index48 K412 ms
UPDATE `inventory` SET `stock` = ? WHERE `sku` = ?210 K1.4 ms
An illustration of the interface, drawn in this page’s style. See the real screenshots

Two engines, and the app says which

Pulse reads statistics the engine itself keeps, so it works wherever those statistics exist. MySQL and MongoDB expose them. The other three drivers do not — and rather than draw a panel full of zeroes, the app says so in as many words.

“Pulse cannot measure this engine yet” is what you get on PostgreSQL, SQLite and SQL Server: an explicit state, not an empty chart. Everything else in HuginnDB keeps working on all five drivers exactly as before.

Measured today

  • MySQL
  • MongoDB

Not yet

  • PostgreSQL
  • SQLite
  • SQL Server

Seven views, four of them in the side panel

The pulse icon in the right activity bar docks Pulse next to your workspace, following whichever connection is selected — or pinned to one, if you would rather it stayed put. The dock panel is deliberately compact; the ↗ button in any section header opens Pulse in a window of its own, wide enough for the full tables and the three views that do not fit in a side panel.

  • Status

    Queries per second, connection pressure, threads running, and buffer-pool or WiredTiger cache hit rate, each with its own live chart. It refreshes every five seconds — and only while the panel is actually on screen. Collapse it, switch away or minimise the app and the polling stops with it.

    Dock panel

  • Alerts

    Derived from those numbers over the last interval, not from a lifetime average that flatters a box which has been up for six weeks: approaching the connection ceiling, a cache hit rate slipping, temporary tables spilling to disk, connection attempts being refused.

    Dock panel

  • Time spent

    The statements the server has spent the most time on, each with how many times it ran, its average and slowest duration, rows examined against rows sent, and a red badge when it resolved without using any index. Where a runnable example was kept alongside the statement, one click shows the plan the server would use — without running it for real.

    Dock panel

  • Storage

    The connection’s biggest tables or collections, ranked, split into data, indexes and free space — the space a rebuild would hand back.

    Dock panel

  • Sessions

    Every session or operation open on the server right now. On MySQL, a session waiting on a lock shows which other session is blocking it. It is a snapshot with its own refresh button rather than a five-second poll: a full session list costs more than it is worth to re-read that often.

    Expanded window

  • Indexes

    Every index across your biggest tables, ranked by how often it has actually been read since the counters were last reset. One reading “unused” has seen zero reads, which is worth a look — and is not the same claim as safe to remove. Pulse only ever makes the first one.

    Expanded window

  • History

    The same live numbers, but over the last 24 hours, 7 days or 30 days, so the question can be “was this slow yesterday too?” instead of only “is it slow right now?”. This one needs history to have actually been recorded.

    Ranges24 h7 d30 d

    Expanded window

Where the numbers come from

No agent to install, no exporter to run, no extra port to open. Pulse issues the same statements and commands you could type yourself, over the connection you already have, and writes nothing back.

MySQL

  • SHOW GLOBAL STATUS
  • SHOW GLOBAL VARIABLES
  • SHOW TABLE STATUS
  • SHOW FULL PROCESSLIST
  • performance_schema.events_statements_summary_by_digest
  • performance_schema.data_lock_waits
  • sys.schema_index_statistics

MongoDB

  • serverStatus
  • profile: -1
  • system.profile
  • $collStats
  • $currentOp
  • $indexStats
  • explain

What a server hands over depends on the privileges of the user you connect as, and two of the views need something switched on: MySQL reads its per-statement figures from performance_schema, and MongoDB reads them from the database profiler, which is off until you turn it on. Where a reading is refused, Pulse leaves the number out and names what it could not read — a missing metric and a zero are different answers.

History is opt-in, one connection at a time

Everything above is live only: close the window and it is gone. Turn the sampler on for a connection in Preferences → Pulse and HuginnDB reads that connection’s vital signs in the background and appends them to a small database of its own on your machine, entirely separate from anything the connection itself stores. Samples older than 48 hours are thinned to one point every five minutes, and anything past the retention window is deleted outright.

Off by default, and per connection: turning it on for one server never starts watching another.

Local history file
pulse.db
Live refresh, while on screen
5 s
Background sample, per connection
60 s
History kept for
30 d
Full resolution for
48 h → 5 min
Disk budget
20 MB
shop · mysqlstorage
StorageDataIndexesFree
  • order_items4.2 GB

  • orders1.1 GB

  • customers312 MB

An illustration of the interface, drawn in this page’s style. See the real screenshots

Or ask an assistant why it is slow

Everything Pulse shows is also on HuginnDB’s MCP connector, so a client that is already connected can ask “why is this server slow”, or “what happened to it last week”, and get your real numbers back instead of a guess.

  • pulse_health
  • pulse_metrics
  • pulse_top_queries
  • pulse_explain
  • pulse_storage
  • pulse_sessions
  • pulse_index_usage

All seven are reads. There is no write tool in this family at any write policy — an assistant can measure the server through Pulse and can never change it.

How the MCP connector works

The app ships a full Pulse guide next to its own documentation: docs/PULSE.md