dbtempo finds the queries that cost your MySQL, MariaDB or PostgreSQL database the most time and proves the cause from the plan and your code. Then it applies the fix with a rollback, or opens a draft pull request for your team to review.
Scans run on each project’s schedule and read performance_schema, pg_stat_statements or the slow query log. Query shapes are ranked by the time they cost, not by how they look.
Deterministic rules such as Full Table Scan, Filesort or Temporary Table and High Rows Examined Ratio read the EXPLAIN plan first. The analysis then states the cause, the evidence and its confidence. On PostgreSQL with HypoPG installed, a proposed index is re-planned as a hypothetical index before you see it.

Connect a repository through the GitHub App, or a source path on a host, and dbtempo matches the query to the SQL in your code, so a recommendation names the file that sends it.
A database change you apply is stored with the SQL that reverses it. A code change opens as a draft pull request for your team to review and merge.

A query optimizer that only sees SQL can tell you what to change in the database. dbtempo also reads the code that sends the query, so the fix can be a change to your application, reviewed like any other pull request.
Install the GitHub App on the repositories you choose, or point dbtempo at a source path on a host. It finds SQL in PHP, Ruby, Python, JavaScript, TypeScript, Java, Go and C# files and in .sql files.
Paste a function into the thread and it becomes evidence for the analysis, with nothing connected.
A snippet has no repository behind it, so dbtempo gives you the suggested change to copy instead. Only an indexed repository can receive a draft PR.
Each project sets every capability to Off, Ask me first or Apply automatically: indexes, schema migrations, server and engine config, query rewrites, statistics and maintenance, and source code PRs.
A change at this level waits in the Awaiting approval queue and notifies you. Nothing runs until someone approves it.

An allowed change still has to pass the safety gates. You can limit changes to a maintenance window; changes that briefly stall the server always need one.

Each database has an audit trail of every write attempted, including the ones a guardrail blocked, with the SQL and its rollback. Plans that include it export the trail as CSV.

Every applied change keeps its rollback SQL, and rollback runs it through the same guarded path. Index removals are never applied unattended.
Each scan also reads the server’s configuration and health, and says when a condition clears as well as when it starts. A few of the checks, by name:
The index advisor reads every query that touches a table together with the indexes already on it, and proposes one index set for the whole table, including indexes to drop because another index covers them or nothing reads them.
Paste a query, an EXPLAIN plan or a slow query log. Nothing to install.
Connect a database directly, over SSH, or through the dbtempo agent, and set how often it is scanned.
Install the GitHub App on the repositories you choose.
Apply a recommendation, open a draft PR, or let auto mode apply the kinds of change you allowed.
With the agent, every database connection is made from your side; dbtempo’s servers never connect to the database. Linux:
curl -fsSL https://dbtempo.com/install.sh | sudo bashMySQL, MariaDB and PostgreSQL, for both pasted analysis and live collection. SQLite is supported for pasted analysis only.
Paste mode sends the SQL or database artifact you submit through the analysis pipeline. Live collection submits query statistics, example query text, schema metadata and execution plans, not table rows. Collection payloads are deleted after thirty days.
No. Chat analysis needs nothing installed, and direct or SSH connections are made from dbtempo’s side. The dbtempo agent is optional: choose it when dbtempo’s servers must not connect to your database, because the agent inside your network makes every connection.
For a direct or SSH connection, the password and any SSH key are sealed with a key only the collection worker can open (an X25519 key agreement and AES-256-GCM), so the web application that stores them cannot read them back. With the agent, the credentials sit in the agent’s local config file on your machine and the agent makes every connection.
Only through capabilities you turn on. Each project sets every kind of change to Off, Ask me first or Apply automatically. An allowed change still has to pass the safety gates and, if you set one, the maintenance window. Every attempt, including the ones a guardrail blocked, is recorded on the database’s audit trail.
A pull request GitHub marks as not ready to merge. dbtempo opens code fixes as drafts through its GitHub App, so a person on your team reviews and merges them. Opening PRs needs a plan that includes draft PR creation.
Yes. Every database change dbtempo applies is stored with the SQL that reverses it, and the rollback action runs that SQL through the same guarded path. Index removals are never applied unattended.
One row per write attempted on a database: what triggered it (auto mode, a manual apply, a readiness fix or a rollback), the SQL, its rollback SQL, the outcome, and the guardrail’s reason when one blocked it. Plans that include audit export can download it as CSV.
No. The index advisor reads every query that touches a table together with the indexes already on it, then proposes one index set for the table, including indexes worth dropping because another index covers them or nothing reads them. Each scan also checks server configuration and maintenance, such as transaction-ID wraparound and stale statistics on PostgreSQL.
Yes. Paste mode and EXPLAIN analysis work on their own. Connecting a repository adds the location of the query in your code and lets dbtempo open code fixes as draft pull requests.
The checks themselves are free. The AI analysis that explains a finding and writes its fix uses your monthly allowance; server-configuration checks and N+1 detection use none. The product shows usage as a percentage of the allowance.
Cancel from Settings, Billing. Access and retention after cancellation follow the current plan and legal terms shown during billing.