close
Now openYour first database is free. Create a free account, or try the live demo.
ReinDBby Bandlei

PostgreSQL · MySQL · MariaDB · SQL Server · Oracle

Keep your database on course. See what changed, with evidence.

ReinDB learns what normal looks like for each database, flags what drifts from it and shows the evidence. When a statement regresses, it writes the fix as a script your DBA can test.

0objects installed by ReinDB. It reads the statistics your database already keeps.
4engines: PostgreSQL, MySQL / MariaDB, SQL Server and Oracle, self-managed or on Amazon RDS and Aurora
5kinds of drift flag, ranked by the database time they cost
18read-only tools for AI agents, over MCP or REST

DBA tuning tip

Before you tune

Ask what changed before you change anything. A deploy, a data load, fresh statistics, a new parameter: most regressions have a date.

Guide §1.4From our free 109-page guide, Rein In Your Database, for PostgreSQL, MySQL, SQL Server and Oracle.Download the guide PDF

Seven pages, one question bar

Ask, Now, Drift, Baselines, Environment, Reports and Pre-check, each a tab in the app, with the question bar on every one. Pick a tab to see it on the built-in demo database (synthetic data).

The Now page: open flags, load against its usual for the hour, the most drifted statement, lock waits and storage, then what is running right now.
Now: current activity against the usual for this hour, live sessions, blocking and deadlocks.

Everything a DBA checks first, done every hour

DRIFT

Baselines and drift flags

Hourly measurements per statement, compared with a 14-day median for the same hour of day. Regressions, new heavy statements, execution spikes, plan changes (with pg_stat_monitor) and database-wide drift, each NEW, ONGOING or RESOLVED.

monitor.py · exit 4 = alert
ASK

Questions in plain English

“Load over the last 3 days”, “WAL since yesterday”, “what flags fired this week?”, or a statement id. Ask from any page. Built-in rules or your approved model read the question, a badge says which, and the chart and caption always come from the data.

shareable answer links
DIAGNOSE

Why one statement is slow

Missing indexes found in the plan, temp spills, disk-bound reads, rows examined per row returned, N+1 query patterns, planning and JIT overhead, and unstable run times.

Analyze button · analyze_statement
FIX

Fix scripts a DBA can test

CREATE INDEX CONCURRENTLY, ALTER TABLE … ALGORITHM=INPLACE, LOCK=NONE, WITH (ONLINE = ON), forcing a good plan back with Query Store, per-role settings, invisible indexes before drops. Every line commented out, every step with its undo. Never runs by itself.

fix_<id>.sql
REVIEW

Settings and maintenance

Cache hit ratio, dead rows and vacuum, never-analyzed tables, unused indexes, forced checkpoints, buffer pool misses, redo capacity, connection headroom, checked against this database’s own numbers.

database_fix.sql
SETUP

Tells you what to turn on

The connection test lists every statistic ReinDB reads as OK, missing or optional, with the exact command, my.cnf line or parameter-group setting to enable it. A grants script for each engine.

grants_postgres · mysql · sqlserver · oracle.sql
MANAGED

Fixes for RDS and Aurora

On a managed database a fix never says ALTER SYSTEM. It names the parameter group setting to change, with the console steps, the aws rds command and whether it needs a reboot. Settings Aurora manages itself are marked as such.

parameter groups · aws rds
LIVE NOW

What is happening right now

One click reads the database this moment: running and idle-in-transaction sessions, who blocks whom, what sessions wait on and replica lag. Cheap read-only queries with a 5-second limit; owners only on real databases.

Live now · live_now
LOCKS

Blocking and deadlocks

Who waited on whose lock, on which table, for how long, and the session holding it. Each deadlock with its tables, both statements and the one that was rolled back, from the PostgreSQL log, InnoDB status, SQL Server’s system_health session or Oracle’s trace files.

blocking · deadlocks
HEALTH

Replicas, transactions, waits, space

Replica lag and replication slots holding WAL, transactions left open or idle, wait events against their usual for the hour, and when the disk fills at the current growth.

replication · long_running · storage
BASELINES

Any period against any baseline

Today against yesterday or a week ago, this week against last, in one click. Or any range from 6 hours to 30 days against the usual for those hours, or a saved baseline like “before release 4.2”, statement by statement. Copy a link to share the exact view.

Baselines page
REPORTS

Reports of your own

Workload, Top SQL, waits, I/O, capacity and stored code as standard reports, or mix them into your own (a morning check, a release check) with its range and baseline, saved for the team. Suggestions start you off, the ones that fit this week’s findings first.

Reports · My reports
EVENTS

Deploys on every chart

Mark deploys, maintenance and config changes on the page, or from your deploy script or CI job with one curl. Each shows on every chart, so a change in the numbers sits next to its likely cause.

/api/events/push
WEEKLY

A Monday report by email

Each database’s week against the week before: load, slowest statements, waits, blocking, flags and the week’s events, with the full report attached as a page that prints to PDF.

weekly report email
AGENTS

Tools for your AI platform

Eighteen read-only tools over MCP or REST with an OpenAPI description, input validation, literal redaction and an audit log of every call.

mcp_server.py

Four engines, one way of working

The same pages, questions, flags and fix scripts on every engine. ReinDB reads the statistics each engine already keeps, with the smallest read-only grant it offers, on your own servers or on Amazon RDS and Aurora.

POSTGRESQL

Built on pg_stat_statements

Time, buffer and disk reads, temp spill and WAL per statement. Uses pg_stat_monitor, pg_wait_sampling, pg_qualstats and track_io_timing when they are there. On Aurora, where WAL lives in AWS’s storage layer, ReinDB points to CloudWatch for it.

  • 12–18 · 19 preview
  • RDS · Aurora
  • pg_monitor role
MYSQL

Built on performance_schema

Statement digests with rows examined against rows returned, full scans and joins, on-disk temp tables and lock time. Explains a sample statement and reads index usage and waits when enabled.

  • 5.7–9.7 · MariaDB 10.5+
  • RDS
  • SELECT on performance_schema
SQL SERVER

Built on the DMVs and Query Store

Statement statistics from the plan cache, waits, sessions, locks and index usage, with Query Store for plan history: when a plan regresses, the fix script forces the good one back. Deadlocks with both statements from the system_health session. Nothing to install or restart.

  • 2022
  • RDS
  • VIEW SERVER PERFORMANCE STATE
ORACLE

Built on the V$ views, no pack needed

V$SQLSTATS, waits, sessions and the DBA_ views, snapshotted by ReinDB itself, so no AWR and no Diagnostics Pack. If you license the Pack, tick it and ReinDB reads ASH and AWR too; it never assumes. Connects without an Oracle Client.

  • 19c · 26ai
  • RDS
  • SELECT on V$ and DBA_ views

How ReinDB works

Measure, compare, flag, explain, fix.

A read-only user and a schedule are all it needs. ReinDB installs nothing in the database, and the website and agent tools read the stored history; only the hourly monitor and the Analyze button connect, read-only.

Collect

Differences between hourly reads of each engine’s statement statistics (pg_stat_statements, performance_schema, SQL Server’s plan cache, Oracle’s V$SQLSTATS), plus database-wide counters. Restarts and statistics resets detected.

Baseline

Median and spread of each measure over 14 days, by hour of day, so the 9 AM batch peak is normal, not an alert.

Flag

Regressions, new heavy statements, spikes, plan changes and database-wide drift, sized by the extra time they cost.

Explain

Plain-English captions and answers computed from the measurements. A model, if you use one, only chooses what to show.

Fix

Statement and plan analysis of the worst regressions and a step-by-step test script with undo, for change control.

Built for strict security boundaries

Read-only sessions with statement time limits, and the smallest grants each engine offers (pg_monitor; SELECT on performance_schema; VIEW SERVER PERFORMANCE STATE; SELECT on the V$ and DBA_ views). TLS with certificate verification by default. Literals in SQL are redacted before anything reaches a model. Every question and tool call is written to an audit log. Hosted sign-in uses scrypt password hashing, lockouts, single-use reset links and encrypted database credentials. If ReinDB may not connect at all, a one-file Python collector runs on your side instead: it runs only read-only statements, sends the raw numbers over HTTPS, and holds none of ReinDB’s analysis.

Ask a question… get real answers

The question bar is on every page. Every answer shows how the question was understood, whether built-in rules or a model read it, and is computed from stored numbers, so a model cannot invent a figure. Answers are links: send one to whoever needs to see it.

ReinDB answering 'show drift for the last week as a graph' with a caption and a week-long load chart against the usual for each hour.
“Show drift for the last week as a graph”
ReinDB answering a question about one statement with its text and milliseconds per execution over 14 days.
One statement over 14 days: time per execution, with its text

Pre-check code before it ships

Developers paste a query, a stored procedure or a schema change and get Pass, Review or Risky before it reaches production. ReinDB finds the production statement it replaces and how often that runs, plans the new code with EXPLAIN, checks it for full scans, missing indexes and code that runs row by row, flags schema changes that lock busy tables, and names the quietest hour to deploy. Pasted code is never run: only EXPLAIN, without ANALYZE, in a read-only transaction.

ReinDB Pre-check judging a pasted query Risky: a full scan of a 4.2 million row table, and the production statement it replaces at 3,600 calls an hour.
A changed query judged against the statement it replaces (demo data).

On the phone in your pocket

ReinDB installs from the browser on iPhone, Android and desktops, with no app store. Turn on alerts and a new regression arrives as a notification that names the database, never the SQL or the numbers; tap it and the chart opens.

Three phones showing the ReinDB dashboard, a week of drift answered in plain English, and one statement's time per execution.
The installed app on a phone (demo data).

How often ReinDB measures

Hourly by default, or every 30 or 15 minutes per database, and always compared with the same hour on earlier days. Monday 9 AM is judged against other 9 AMs, not against 3 AM. You control when it stops and when it stays quiet.

EVERY HOUR, 30 OR 15 MIN

The full measurement

Time and reads for every statement (with temp spill and WAL where the engine records them), database-wide counters including log and redo volume, table activity, waits and size. Each run measures the time since the last one, flags what drifted, and analyzes the worst statements. Shorter intervals show more detail in a 6-hour view and alert sooner.

EVERY MINUTE

A light sample

Who is blocking whom, what sessions wait on, replica lag and long or idle-in-transaction sessions. One cheap query each, so short lock waits between hourly runs are not missed. Optional.

ON DEMAND

Live now

One click reads the database at that moment, with a 5-second limit. For live connections; a collector never lets ReinDB connect.

YOUR CONTROLS

Pause and quiet hours

Pause a database during maintenance or before retiring it; its history is kept. Quiet hours hold alerts overnight or at weekends and send one summary when they end. Measuring never stops for quiet hours, so the baseline stays whole.

Add a database, see the first week of drift

Add a database with the read-only user and ReinDB tests the connection and every statistic it reads before saving. Within a week it knows what normal looks like for each hour of the day.

Adding a database: the form and a connection test with every item OK and one optional item with its command.
Add a database: ReinDB tests the connection and every statistic it reads before saving. TLS by default.

Hosted, onsite, or in your own cloud

The same ReinDB three ways. Ask about onsite and in-cloud

HOSTED BY BANDLEI

Sign in at app.bandlei.com

Nothing to install. ReinDB connects to your database over TLS with a read-only user, from one fixed address you allow through the firewall or security group. Live now reads it on demand. Your first database is free; Starter is $49/month. See pricing.

  • no install
  • TLS
  • read-only
ONSITE

On your own server

For databases that never leave your network. One Linux or Windows server or VM inside your network runs the website and the hourly checks; statistics and history stay on it. Annual license.

  • Linux
  • Windows
  • air-gapped
IN YOUR CLOUD

Next to RDS, Aurora, Cloud SQL

Deployed into your own AWS or Google Cloud account from our template: scheduled containers beside Amazon RDS and Aurora, or Cloud SQL and AlloyDB. Passwords stay in your secrets manager; nothing is opened to Bandlei.

  • AWS
  • Google Cloud
  • no inbound
CLOUD DATABASES

Tested on Amazon RDS and Aurora

Tested on Amazon RDS for PostgreSQL, MySQL, SQL Server and Oracle, and on Aurora PostgreSQL. ReinDB uses the services’ own statistics, and its fix scripts name parameter group changes. Google Cloud SQL and Azure use the same statistics and are next to test.

  • RDS
  • Aurora
  • parameter groups

Coming next

The website, questions and flagging are engine-independent; each engine needs only a collector.

  • PlannedAzure and Google Cloud SQLTested and listed next to Amazon RDS and Aurora.
  • PlannedPlan history for PostgreSQLPlan ids from pg_stat_monitor when both extensions are installed.
  • PlannedSlack, Teams, PagerDuty and JiraPart of ReinDB Pro, next to phone and email alerts.

Pricing

Start free, no card needed. Hosted plans are billed monthly. Onsite and in-your-cloud editions are licensed annually.

FREE

$0/month

Your first database, for one person, with no time limit.

Every check, drift flag and fix script, plain-English questions, reports and the weekly email. Phone alerts, teammates and more databases come with Starter. New accounts start with 14 days of Starter.

Free is offered while we have room for it. If demand outgrows our capacity we may pause new Free sign-ups, or limit what Free includes after at least 30 days’ notice by email.

Start free
STARTER

$49/month

For one person looking after their own databases. Up to 3 databases, then $8/month for each extra one, up to 10.

Everything in Free, plus phone and email alerts, teammates, a Fleet page with every database’s status, version and uptime (down and degraded ones flagged in red), and a Runs page with every collection and its timing. Upgrade from Plan & billing in the app at any time.

Try Starter free
PRO · COMING SOON

$199/month

For teams. 10 databases included, then $12/month for each extra one, up to 25, for up to 10 people.

Everything in Starter, plus database groups (prod, staging, by customer) with group comparisons over time, alerts to Slack, Microsoft Teams, PagerDuty and Opsgenie, a Jira issue from any flag with its fix script attached, Pre-check as a step in your build pipeline, scheduled exports for Grafana and other tools, database import from Excel, webhooks and audit export.

Join the Pro list
ENTERPRISE

From $12,000/year

For larger estates and networks that stay closed: hosted, onsite, in your own cloud or air-gapped, on an annual license with support.

More databases and people than Pro, with terms that fit how you buy.

Talk to us

Partners and managed service providers: ask about partner terms. A free account nobody signs in to for 90 days is deleted, after two reminder emails; see the terms.

Talk to us, or join the ReinQ beta

ReinDB is open: create a free account and your first database is free. For a guided evaluation, Pro, Enterprise, onsite or in-your-cloud editions, leave your details and we will get back to you within a business day.

ReinQ, plain-English questions over your own data, is still in an invite-only beta. It’s free during the beta, for up to 100 questions a day per organization.

See ReinDB on your own databases

Ask for a guided evaluation. All it takes is one read-only database user.

Request an evaluation