Full-Stack Database Infrastructure Architecture, Engineering, Operations, Production Engineering and FinOps for PostgreSQL, MySQL, MariaDB, SQL Server, Oracle, Db2, MongoDB, ClickHouse, Redis & Every Major Cloud DBaaS
MinervaDB consultative support gives your production databases a standing team of principal-level engineers who answer incidents around the clock and, between incidents, tell you what to change before it fails. One accountable team, one line of escalation, and every recommendation backed by measurements from your own systems.
Consultative support that diagnoses, advises and engineers, not a ticket queue
Most database support stops at the ticket. Consultative support starts there. The same named engineers who answer your Severity 1 page also review the plan that caused it, the capacity that will run out next and the architecture decision that would remove the risk altogether.
We built MinervaDB consultative support for organizations whose revenue depends on databases that cannot be allowed to fail, and whose engineering leaders want a partner with judgment, not a call centre. Your estate is assigned a pod: a principal architect who owns the relationship and the roadmap, engine leads for each technology you run, and a 24×7 on-call rota with access, runbooks and context already in place.
The work happens in three layers. Continuous operations cover monitoring, incidents and changes. Recurring reviews cover health, capacity and performance. Strategic advisory covers architecture, upgrades and cost. Each layer feeds the next, so an incident becomes a finding, a finding becomes a recommendation, and a recommendation becomes a measured change.
Five disciplines in every consultative support engagement
Database risk rarely respects organizational boundaries. A latency incident can be an architecture flaw, a missing index, an operational gap and a cost problem at once, so consultative support covers all five disciplines with one team.
Architecture
High availability and disaster recovery designed to a recovery point and recovery time objective written in business terms, with topology, sizing and replication reviewed against measured load.
Engineering
Query, schema, index and configuration work that removes the cause of slowness rather than the symptom, verified against execution plans and engine telemetry.
Operations
24×7 monitoring, incident response, patching and upgrades under change control, with runbooks written for your estate rather than borrowed from a vendor manual.
Production engineering
Service level objectives, error budgets, alerting on leading indicators, root cause analysis and scheduled failover and restore drills that keep the recovery path proven.
FinOps
Instance classes, storage tiers, reserved capacity and licences reviewed against measured workload, so you stop paying for capacity your databases do not use.
Advisory
Engine selection, migration and modernization decisions with a vendor-neutral view, including the advice not to change an engine when the current one is the right fit.
How a consultative support engagement runs
The first weeks are spent learning your estate so that the first Severity 1 page is answered by someone who already knows it.
Onboard
Access, escalation contacts and change rules agreed. Credentials go into your vault, never into email or chat.
Baseline
Each database measured from its own telemetry: workload profile, waits, replication, storage growth and recovery points.
Operate and advise
24×7 coverage begins. Findings from the baseline become a prioritized plan with expected effect, blast radius and rollback.
Review and evolve
Recurring health, capacity and cost reviews, and a roadmap that is revised as your business and your data change.
Consultative support response commitments
Acknowledgement means a named engineer is working the issue, not an automated reply. The severity matrix is the same across every engine and every cloud.
| Severity | Definition | Acknowledgement |
|---|---|---|
| S1 | Production down or data at risk; business halted | 15 minutes, 24×7×365 |
| S2 | Production seriously degraded; a workaround exists | 12 hours |
| S3 | Non-critical fault or performance issue | 24 hours |
| S4 | Question, advice or planned change | 48 hours |
When an outage needs more than advice, the same team runs the incident end to end; see 24/7 emergency DBA coverage.
The telemetry behind every consultative support recommendation
We do not ask you to trust an opinion. These are examples of the read-only queries our engineers use to baseline each engine and to prove that a change worked. Credentials are always placeholders.
PostgreSQL: database time and unused indexes
Built on pg_stat_statements, described in the PostgreSQL documentation. The second query finds indexes that cost writes and storage but are never read.
-- PostgreSQL 14+ with pg_stat_statements: where database time actually goes
SELECT
queryid,
calls,
ROUND(total_exec_time::numeric / 1000, 1) AS total_s,
ROUND(mean_exec_time::numeric, 2) AS mean_ms,
ROUND(100 * total_exec_time / SUM(total_exec_time) OVER (), 1) AS pct_of_db_time,
shared_blks_read,
LEFT(query, 100) AS query_head
FROM pg_stat_statements
ORDER BY total_exec_time DESC
LIMIT 15;
-- Indexes that cost storage and write amplification but are never read
SELECT
s.schemaname,
s.relname AS table_name,
s.indexrelname AS index_name,
pg_size_pretty(pg_relation_size(s.indexrelid)) AS index_size
FROM pg_stat_user_indexes AS s
JOIN pg_index AS i
ON i.indexrelid = s.indexrelid
WHERE s.idx_scan = 0
AND NOT i.indisunique
ORDER BY pg_relation_size(s.indexrelid) DESC
LIMIT 20;MySQL and MariaDB: statement digests
The performance_schema digest table ranks statement shapes by total latency and shows where full scans happen; see the MySQL 8.4 reference.
-- MySQL 8.0 / 8.4 performance_schema: top statement digests by total latency
SELECT
schema_name,
count_star AS executions,
ROUND(sum_timer_wait / 1e12, 1) AS total_s,
ROUND(avg_timer_wait / 1e9, 2) AS avg_ms,
sum_rows_examined,
sum_no_index_used,
LEFT(digest_text, 100) AS digest_head
FROM performance_schema.events_statements_summary_by_digest
ORDER BY sum_timer_wait DESC
LIMIT 15;SQL Server: Query Store
Query Store keeps runtime history per plan, so a regression can be traced to the exact plan change; see Microsoft Learn.
-- SQL Server 2016+ Query Store: heaviest queries by total duration (microseconds stored)
SELECT TOP (15)
q.query_id,
SUM(rs.count_executions) AS executions,
ROUND(SUM(rs.avg_duration * rs.count_executions) / 1e6, 1) AS total_s,
ROUND(SUM(rs.avg_logical_io_reads * rs.count_executions), 0) AS logical_reads,
LEFT(qt.query_sql_text, 100) AS query_head
FROM sys.query_store_runtime_stats AS rs
JOIN sys.query_store_plan AS p
ON p.plan_id = rs.plan_id
JOIN sys.query_store_query AS q
ON q.query_id = p.query_id
JOIN sys.query_store_query_text AS qt
ON qt.query_text_id = q.query_text_id
GROUP BY q.query_id, qt.query_sql_text
ORDER BY total_s DESC;Oracle: top SQL without extra licences
We baseline from V$SQLSTATS and confirm Diagnostics Pack entitlement before using Active Session History or AWR.
-- Oracle 19c / 23ai: top SQL by elapsed time from V$SQLSTATS (microseconds)
SELECT *
FROM (
SELECT
sql_id,
executions,
ROUND(elapsed_time / 1e6, 1) AS elapsed_s,
ROUND(cpu_time / 1e6, 1) AS cpu_s,
buffer_gets,
SUBSTR(sql_text, 1, 100) AS sql_head
FROM v$sqlstats
ORDER BY elapsed_time DESC
)
WHERE ROWNUM <= 15;Db2 for LUW: package cache
The monitoring table functions rank statements by execution time across all members of the instance.
-- Db2 11.5 / 12.1 for LUW: package cache statements by execution time (ms)
SELECT
num_executions,
stmt_exec_time AS exec_ms,
rows_read,
SUBSTR(stmt_text, 1, 100) AS stmt_head
FROM TABLE(MON_GET_PKG_CACHE_STMT(NULL, NULL, NULL, -2)) AS t
ORDER BY stmt_exec_time DESC
FETCH FIRST 15 ROWS ONLY;MongoDB: index usage and cache pressure
Unused indexes slow every write. $indexStats shows usage since the last restart, so we read it alongside uptime.
// MongoDB 6.0+ (mongosh): index usage since restart, unused indexes first
db.getCollectionNames().forEach(function (c) {
db.getCollection(c).aggregate([{ $indexStats: {} }]).forEach(function (ix) {
if (ix.name !== "_id_") {
print(c + "." + ix.name + " ops=" + ix.accesses.ops + " since=" + ix.accesses.since);
}
});
});
// WiredTiger cache pressure: bytes in cache against the configured maximum
const wt = db.serverStatus().wiredTiger.cache;
print(wt["bytes currently in the cache"] + " / " + wt["maximum bytes configured"]);ClickHouse: heaviest query shapes
ClickHouse consultative support is delivered with our sister company ChistaDATA; system.query_log is where every baseline starts.
-- ClickHouse 24.x / 25.x: heaviest query shapes over the last 24 hours
SELECT
normalized_query_hash,
count() AS executions,
round(sum(query_duration_ms) / 1000, 1) AS total_s,
formatReadableSize(sum(read_bytes)) AS read,
formatReadableSize(max(memory_usage)) AS peak_memory,
substring(any(query), 1, 100) AS query_head
FROM system.query_log
WHERE type = 'QueryFinish'
AND event_time > now() - INTERVAL 1 DAY
GROUP BY normalized_query_hash
ORDER BY total_s DESC
LIMIT 15;Redis and Valkey: command cost and key size
Two commands usually explain a Redis latency or memory problem: which commands dominate the event loop, and which keys hold the memory.
# Redis 7.x / Valkey 8.x: which commands consume the event loop, and which keys hold the memory
export REDISCLI_AUTH="${REDIS_PASSWORD}"
redis-cli -h "${REDIS_HOST}" INFO commandstats | sort -t= -k3 -rn | head -n 15
redis-cli -h "${REDIS_HOST}" --bigkeys # sampled scan; run against a replica in productionOne consultative support team for every engine you run
Mixed estates are the norm. We keep engine specialists on the same rota and the same bridge, so a problem that crosses the cache, the relational database and the warehouse is solved by one team.
Each engine page describes the depth of our practice: PostgreSQL, MySQL, MariaDB, SQL Server, Oracle, Db2, MongoDB, ClickHouse, Redis. Every major cloud DBaaS is covered as well.
Consultative support on every major cloud, with cost treated as an engineering metric
A managed service removes the hardware, not the database work. Queries, parameters, recovery decisions and cost remain yours, and that is where consultative support adds value on managed platforms.
Amazon Web Services
Amazon RDS and Aurora, DynamoDB, ElastiCache, MemoryDB, Keyspaces and Redshift. See Amazon RDS support.
Microsoft Azure
Azure SQL Database and Managed Instance, Azure Database for PostgreSQL and MySQL, Cosmos DB and Azure Cache for Redis.
Google Cloud
Cloud SQL, AlloyDB, Spanner, Bigtable, Memorystore and BigQuery. See AlloyDB consulting and BigQuery consulting.
FinOps: reserved capacity coverage
Coverage below the steady-state baseline means paying on-demand rates for capacity that runs all year. We pair this view with measured utilization before recommending any commitment. Ongoing cost work sits with our cloud database FinOps practice.
# Reserved instance coverage for Amazon RDS by instance type: the first FinOps question we ask
aws ce get-reservation-coverage \
--time-period Start="${PERIOD_START}",End="${PERIOD_END}" \
--group-by Type=DIMENSION,Key=INSTANCE_TYPE \
--filter '{"Dimensions":{"Key":"SERVICE","Values":["Amazon Relational Database Service"]}}'What FinOps reviews cover
- Instance class and storage performance against measured CPU, memory and I/O.
- Reserved capacity and savings plans against the post-optimization baseline.
- Replicas, snapshots and backups that outlived their purpose.
- Licence position for SQL Server, Oracle and Db2, including edition and core counts.
- Queries and indexes whose fix removes the need for the next scale-up.
Governance, access and change control in consultative support
Enterprise customers ask us the same questions their auditors ask. These are the controls we work under on every engagement.
Least privilege, from your vault
Named accounts, the minimum roles each task needs, credentials held in your secrets manager and revoked when an engineer rotates off the engagement.
Approval before execution
Every change carries an expected effect, blast radius and rollback path, and runs only after your approval inside an agreed window.
An audit trail you can hand over
Commands, outputs and decisions are recorded per incident and per change, ready for internal audit and for your compliance evidence.
Work happens in your environment
We work inside your network and tooling. Customer data is handled under the access and data-protection terms agreed in your contract.
Why enterprises choose MinervaDB consultative support
Vendor-neutral judgment
We are not tied to any database vendor, so our advice is about your workload, including the advice to keep what you have.
Principal-level engineers
Your pod is led by engineers who have designed and run these engines in production, not by an account manager relaying tickets.
One team, full lifecycle
Architecture, engineering, operations, production engineering and FinOps sit with the same people, so nothing is lost between hand-offs.
Consultative support questions
What is consultative support?
Consultative support is a standing engagement in which senior MinervaDB engineers take shared ownership of your production databases. They answer incidents around the clock, and between incidents they advise on architecture, performance, upgrades and cost, backed by measurements from your own systems rather than generic best practice.
How is consultative support different from a standard support contract?
A standard contract answers tickets. Consultative support also tells you what to change before the ticket is raised: the query that will exhaust capacity next quarter, the replica that cannot take a failover, the licence or instance class you are overpaying for. The same named engineers do both, so advice is grounded in how your estate actually behaves.
What response times does MinervaDB consultative support commit to?
Severity 1 is acknowledged within 15 minutes, 24×7×365. Severity 2 is acknowledged within 12 hours, Severity 3 within 24 hours and Severity 4 within 48 hours. Acknowledgement means a named engineer is working the issue.
Which databases and cloud platforms are covered?
PostgreSQL, MySQL, MariaDB, Microsoft SQL Server, Oracle, IBM Db2, MongoDB, ClickHouse, Redis and Valkey, together with the managed services that run them on AWS, Microsoft Azure and Google Cloud, and vendor clouds such as MongoDB Atlas. ClickHouse work is delivered with our sister company ChistaDATA.
Do your engineers make changes in our production environment?
Only with your approval and inside an agreed change window. Every recommendation states the expected effect, the blast radius and the rollback path. Destructive operations carry an explicit confirmation gate, with a verification query before and a validation query after.
How does onboarding work?
We agree access and escalation contacts, take a baseline of each database from its own telemetry, document topology and recovery points, and write the runbooks your estate needs. Onboarding is complete when the on-call engineer can act on a Severity 1 page without asking a single question.
Can consultative support reduce our cloud database costs?
Often, yes. FinOps is one of the five disciplines in every engagement. We review instance classes, storage tiers, reserved capacity and licensing against measured workload, and we recommend the change only when the metric shows the capacity is not needed.
What do we receive from consultative support besides incident response?
Written outputs you can act on and keep. Every Severity 1 and Severity 2 incident closes with a root cause analysis and the change that prevents a repeat. Recurring health reviews report workload, waits, replication, storage growth and recovery-point status for each database against its baseline. Capacity and cost reviews state what will run out, when, and what it costs to fix. Runbooks and topology documentation are kept current as your estate changes, so the knowledge stays with your organization.
Does consultative support replace our in-house DBA team?
No. It extends it. Your team keeps ownership of the platform and of every decision; we add depth across engines, round-the-clock coverage and a second opinion on high-risk changes. Many engagements begin because an in-house team is strong on one engine and needs specialists on the others, or needs night and weekend cover without hiring for it.
How do we start?
Book a call with a principal architect. Bring your engine inventory, the last two incident timelines and the current cloud or licence invoice. We will tell you where the risk sits, what we would change first and how the engagement would be staffed.
Put a consultative support team behind your most critical databases
Talk to a MinervaDB principal architect about your estate. Bring your toughest production problem to the first call.
Schedule a Consultation → 24/7 Emergency DBA →