Mimir v1.0.2

❤️ (@Sully) ❤️ (@Sully)
Edited Last Month by ❤️ (@Sully)

Mimir v1.0.2

A faster, more durable, more operable release. This one is all about the hot paths and the production lifecycle: reads scale across cores, writes do less work per commit, durability is now a knob, and the server shuts down cleanly.

Highlights

⚡ Reads scale under load

The transaction manager's global mutex is now a read/write lock. Taking a snapshot and checking row visibility are read-only operations, so concurrent readers no longer serialize on one lock.

  • +20% point-read throughput at 8 concurrent clients (51k → 62k reads/s, 4-core box)
  • Mimir beats MariaDB single-threaded and matches it at 4 concurrent clients on the same Unix socket

✍️ Writes do half the work per commit

Commits used to write every dirty page to the WAL and immediately copy it into the main database file - two fsyncs and double the I/O. Now a commit just appends to the WAL; committed pages are folded into the main file by a periodic bounded checkpoint (every ~8 MB of log), which also truncates the WAL.

  • ~18% faster inserts (255 → 210 µs single-client)
  • Half the per-commit write volume; the WAL stays bounded
  • Crash recovery now replays all complete commit groups in the log — a hard crash still loses nothing committed

🛑 Graceful shutdown

On SIGTERM/SIGINT the server stops accepting connections, drains the in-flight statement, checkpoints the WAL into the main file, and exits cleanly. The next start finds an empty log and opens instantly — no replay. A hard kill -9 is still fully recoverable.

🔇 Quieter logs

Successful per-connection auth dropped from INFO to DEBUG, so the default log level stays quiet under normal load. Failed auth is logged at WARN so real problems still stand out.

🏗️ Smaller, faster binary

Release/static builds now use -O2 (was -Os). Still a single static ~320 KB musl binary with no shared-library dependencies.

Replies (0)

No replies yet.

Log in to reply.