Sailfish vs Releem: MySQL history or MySQL tuning
Releem is a hosted advisor that tunes MySQL and suggests indexes. Sailfish keeps performance_schema history in your own database and alerts when it changes.
Checked against Releem's docs and source on
Short answer
Releem tunes MySQL: it is a hosted service, priced monthly per server, that recommends configuration changes and indexes and can apply them. Sailfish keeps performance_schema's history in your own database through restarts, from inside a Laravel app, and alerts when it changes. A server nobody has tuned needs Releem first. Knowing which index stopped being read, or when a table started being scanned, needs the history Sailfish keeps.
- Releem
- A hosted MySQL tuning service. An agent on the database server sends metrics and query statistics to Releem's cloud, which recommends configuration changes and indexes and can apply them. From $39 a month per server, billed annually
- Sailfish
- A Laravel package that keeps the history of MySQL's performance_schema counters in your own database, through restarts, and alerts when they change. One-time purchase, runs inside your app
Releem is a hosted MySQL tuning service. An open-source agent on your database server, or beside it for RDS, sends metrics and query statistics to Releem's cloud, which recommends configuration changes and indexes and can apply them for you. Sailfish is a Laravel package that runs inside your application, keeps the history of MySQL's performance_schema counters in your own database, and sends an event when they change.
Both read performance_schema, so they overlap on questions like which queries cost the most and which indexes go unused. They differ on what they do with the answer. This page describes Releem as of November 2026.
Two different jobs#
Releem's job is tuning. Its
configuration tuning covers "over 40 MySQL configuration
parameters", worked out from your workload and applied from its portal or on a schedule, with a history that
compares the server before and after each change. Its
query optimization reviews your top 100 queries and top 100 slowest ones each
week and writes the CREATE INDEX statements that would help them. You apply those yourself, unless you
turn on its automatic schema changes, which are off by default.
Sailfish's job is memory. performance_schema only counts since the server started, so a restart or a failover wipes the answer to "is this index still used?" Sailfish stores what moved in every five-minute interval and keeps a rolled-up copy for good: hourly after seven days, daily after ninety. Its events compare the last hour with the same hour on each of the previous seven days. It does not tune configuration, and it changes nothing on the server: the SQL it shows, to drop a redundant index or turn on an instrument, is yours to run.
At a glance#
| Capability | Releem | Sailfish |
|---|---|---|
| What it is | A hosted tuning advisor, fed by an agent | A Laravel package inside your app |
| Where the data goes | Releem's cloud, over HTTPS | Tables in your own database |
| What you install | The agent on the database server, as root, or on EC2 or Fargate for RDS | A Composer package and a migration; the scheduler you already run does the rest |
| Database grants | PROCESS, REPLICATION CLIENT, SHOW VIEW and SELECT on mysql.*; SELECT on *.* for query optimization |
SELECT on performance_schema, and two optional extras |
| Databases | MySQL 5.5 to 9, MariaDB, Percona Server and PostgreSQL, including RDS, Aurora, Cloud SQL and Azure | MySQL 8.0 |
| Configuration tuning | Yes, over 40 parameters, applied on request or on a schedule | No |
| Index suggestions for slow queries | Yes, weekly and on demand | No; it flags unindexed *_id columns and redundant indexes |
| Unused indexes | A schema check for duplicate and unused indexes | Each index's status, last read and 30 days of reads and writes, kept through restarts |
| Query counts after a restart | Query Analytics counts executions since the last restart | Every interval is stored, so a restart leaves the history intact |
| History | Three months on every public plan | Five-minute detail for 7 days, hourly for 90, daily for good; all configurable |
| Alerts | Email reports and alerts | Eighteen events by mail, Slack or webhook, with reminders and recoveries |
| Host metrics (CPU, memory, disk) | Yes | No |
| Pricing | From $39 a month for one server, billed annually; 14-day trial | One-time purchase per application |
Where Releem is the better answer#
A server nobody has tuned. On a MySQL server still running its default buffer pool and log sizes, configuration is usually the biggest win available, and Releem is built to find it. Sailfish will show you buffer pool misses and temporary tables written to disk, and leave the setting to you.
Fixing a particular slow query. Releem reads the query's EXPLAIN plan and writes the index that would help it. Sailfish tells you that an index stopped being read or that a table started being scanned, and the query work after that is yours.
More than one stack, or more than MySQL 8.0. Releem's agent works at the server level, so it does not care what language talks to the database, and it covers MariaDB, Percona Server, PostgreSQL and MySQL back to 5.5. Sailfish needs a Laravel 12 or 13 application to run in and reads MySQL 8.0 only. It does see every client's traffic on that server, because performance_schema does.
The machine as well as the database. Releem charts CPU, memory, swap and IOPS next to the database metrics. Sailfish reads MySQL and nothing else.
Where Sailfish is the better answer#
History that survives a restart. Releem's Query Analytics docs say it counts each query's executions "since the last server restart". Sailfish keeps the last time each index was read, and when each table was last scanned, across restarts, and marks each restart on the charts. Releem's docs describe no per-index last-used date or reads timeline.
Alerts about change, wherever your team reads them. Sailfish's surges compare the last hour with the same hour on the previous seven days, for scans on each table, row-lock time, slow queries, errors by number and the share of transactions rolled back. An urgent one is sent as it opens and repeated every six hours until somebody acknowledges it, and its recovery says how long it lasted. Mail and Slack are built in, and a JSON webhook reaches PagerDuty or your own tools. As of November 2026, the notifications Releem documents are emails.
Nothing leaves your infrastructure. Sailfish reads performance_schema over your application's own
connection and writes its history to sailfish_* tables beside yours.
Releem's FAQ lists what its agent sends, which includes table and index names
with their usage statistics, and query statistics with a query example and EXPLAIN plans. Storing that data in the
EU is offered to customers with more than 20 instances, or case by case.
Fewer privileges. Sailfish needs SELECT on performance_schema. Releem's query
optimization asks for SELECT on *.*, which it needs to run EXPLAIN on your queries, and
applying configuration needs SYSTEM_VARIABLES_ADMIN.
Paying once. Releem's Starter plan is $39 a month for one server, billed annually, which is $468 a year. Sailfish is a one-time purchase per application.
One limit they share#
MySQL 8.0 gives no statement digest to queries sent as native prepared statements, and Laravel's MySQL connection
sends them that way by default. Releem's docs say this keeps those queries out of its Query Analytics and recommend
turning on PDO::ATTR_EMULATE_PREPARES. Sailfish's
statement digests need the same setting. Its
index and table counters, and every one of its events, see every statement either way.
Can you run both?#
We would expect so, though we have not certified the pairing. Both read performance_schema without changing it, and Sailfish takes a fresh baseline whenever a counter goes backwards, whatever reset it. The overlap is small: Releem would tune the server and suggest indexes, and Sailfish would keep the long history and send the alerts. If Releem applies a configuration change, Sailfish's Server page shows the effect on buffer pool misses and temporary tables in the weeks after.
Choosing between them#
If your question is "is this server configured well?", or you want somebody to write the index for a slow query, that is Releem's job. If your question is "what changed?", such as which index went cold since the last deploy or when a table started being scanned, you need a history that outlives the server's uptime, and that is the one Sailfish keeps.
Questions people ask about the two
Is Sailfish a Releem alternative?
For part of what Releem does. Both read performance_schema and both flag unused indexes, but Releem's main job is tuning MySQL's configuration and suggesting indexes for slow queries, and Sailfish does neither. Sailfish keeps the long history of index and table activity through restarts and sends an event when it changes. If you bought Releem to tune my.cnf, Sailfish does not replace it.
Does Releem send data off my server?
Yes, by design, since it is a hosted service. Its FAQ lists what the agent sends, including table and index names with their usage statistics, and query statistics with a query example and EXPLAIN plans. Sailfish stores everything in your own database and sends only the notifications you configure.
Does Releem work with Laravel?
Yes. It works at the database server and does not depend on the framework. Its docs note that server-side prepared statements keep queries out of its Query Analytics and suggest PDO::ATTR_EMULATE_PREPARES, which applies to Laravel's MySQL connection on its defaults. Sailfish's statement digests need the same setting, and its index and table history does not.
Can I run Releem and Sailfish together?
We expect so, though we have not certified the pairing. Both read performance_schema without changing it, and Sailfish takes a fresh baseline whenever a counter goes backwards. Releem would tune the server and suggest indexes, and Sailfish would keep the long history and send the alerts.