ON CALL · LONDON, UK

Emil Bialobrzeski Senior Staff Database Reliability Engineer

Databases that hold when everything else fails over.

Senior Staff Database Reliability Engineer at Diligent. I keep large multi-engine estates fast, observable and boring — across SQL Server, PostgreSQL, MariaDB, ScyllaDB and AWS.

YEARS IN DATA
0+
DATABASE ENGINES
0
MANAGED INSTANCES
0+
CLUSTERS
0+
CUSTOMERS
0+
01

Reliability & failover

High-availability architecture, failover behaviour and resource efficiency across on-prem and cloud clusters — designed so a switch is a non-event.

02

Performance at the engine level

Wait statistics, execution plans, Extended Events, pg_stat_statements. Query, index and configuration tuning that holds under real load.

03

Observability & automation

Alerting that means something, and PowerShell / T-SQL / AWS CDK tooling that removes the manual step instead of documenting it.

SQL ServerPostgreSQLMariaDB / MySQLCassandra / ScyllaDBCouchbaseAWS RDS & AuroraAWS CDKPowerShellPythonT-SQL
4 OF MANY
CASE STUDY / 01

Inside the Database Operations Portal

Horizontally scalable workers claim hosts from a Postgres queue with FOR UPDATE SKIP LOCKED, publish every result as a Prometheus metric, and a Flask portal turns that into inventory, geo-failover topology, live activity analysis and capacity projection. Adding a monitored host is one row — no code, no config, no redeploy.

The part people actually notice: only threshold-breaching metrics are shipped to an AI agent on a cron, so the daily health report is a page you read — colour-coded, per host, with runbook links — instead of a checklist you run.

SQL ServerMariaDBScyllaDBPostgreSQLPrometheusGrafanaFlaskDocker
Database Operations Portal architecture — portal, work queue, workers, Prometheus and Grafana.
Portal architecture — workers claim hosts from a Postgres queue; results land in Prometheus.
Home — the estate at a glance, alert cards built from live thresholds.
Failover — geo-cluster tiles per product, health overlaid from Prometheus.
Drill-in — cluster members, replication link, one-click geo failover.
Activity Analysis — pick hosts from the product tree; snapshots run in parallel.
One read of the combined snapshot — priorities first, then per-node findings.
Scheduled health report — only breaching metrics ever reach the agent.
CASE STUDY / 04

glideplan.org

Flight planning for glider pilots. My own product, end to end — the same reliability instincts, in thinner air.

CASE STUDY / 02 · MYSQL · LINUX · PRODUCTION FORENSICS

The 20 GB MySQL had already freed

MySQL had already freed it. So why was RSS still 20 GB higher?

EXPECTED MYSQL
~33 GB
ACTUAL RSS
53.7 GB
UNEXPLAINED
+20.7 GB

01The discrepancy

A 62 GB host, 53.7 GB resident for a single mysqld, and an InnoDB buffer pool of roughly 33 GB. Nothing in the configuration accounted for the difference, and the gap left the host one workload spike from the OOM killer.

02MySQL says it's clean

Each of the usual suspects was tested against measurements rather than assumed. Temporary tables held kilobytes. Theoretical per-connection buffers across the whole connection limit came to well under a gigabyte. And MySQL's own instrumentation showed allocation and release in balance:

SUM_ALLOC   97.6 GB
SUM_FREE    97.6 GB
CURRENT     81 MB

MySQL was freeing the allocations. The allocator was retaining the memory instead of returning it efficiently to the OS.

03Below the engine

Conventional MySQL diagnostics could not explain the missing memory, so the investigation moved below the database engine into Linux process memory. Of the 53.7 GB resident, 46.1 GB was anonymous and around 32 GB was backed by huge pages — the buffer pool behaving correctly. More than 1,100 anonymous mappings, RSS still climbing during observation, and clean MySQL accounting pointed at allocator behaviour.

04Root cause

glibc allocator fragmentation, amplified by Transparent Huge Pages set to always. Under sustained churn MySQL frees correctly, but the allocator holds the fragmented memory rather than returning it to the kernel, and THP makes that reclaim behaviour worse.

The leak wasn't in MySQL. The missing memory was sitting between the database engine and the operating system.

05Remediation & validation

Both changes targeted the allocator layer rather than the database configuration, and both were reversible: disable Transparent Huge Pages, then move MySQL onto jemalloc with decay tuned to release dirty pages on a fixed interval. It shipped with success criteria rather than a shrug — track RSS after deployment and compare MySQL-accounted memory against OS resident memory, with the two expected to land within roughly 15% of each other.

OUTCOME
~20 GB unexplained overhead isolated
SCOPE
MySQL · glibc · Linux VM
ROLE
Root cause · remediation · validation
CASE STUDY / 03SQL SERVER

Dynamic memory allocation for failover clusters

Clustered instances used to land on a node sized for someone else's workload. I led the design of allocation that follows the workload through failover, so post-failover contention disappeared and performance stayed consistent across every node.

2022 — NOW

Senior Staff Database Engineer

Own reliability, performance and operational stability of critical data platforms across relational and distributed engines, on-prem and in AWS.

DILIGENT
2018 — 2022

Senior Database Engineer

Performance and availability work across a growing multi-engine platform. London.

DILIGENT
2017 — 2018

Database Administrator

Payments infrastructure. Cambridge.

CASHFLOWS
2015 — 2017

Database Administrator

Tuned server architecture from wait statistics, wrote the internal T-SQL standards, implemented Always On Availability Groups as the DR backbone.

RATESETTER
2014 — 2015

Development DBA

Databases for stand-alone QA instruments, integrated with customer LIMS and MES systems under 21 CFR Part 11.

CERULEAN INSTRUMENTATION
2011 — 2014

SQL Developer / DBA

ERP and reporting work, plus EDI integrations across manufacturers and couriers. Where the performance obsession started.

REGENERSIS

CERTIFICATIONS

  • PostgreSQL Administrator DB
  • MariaDB Database Administration DB
  • AI_devs 4 Builders AI

EDUCATION & LANGUAGES

Engineer's degree, Computer Science

Bialystok University of Technology · 2006—2011

Polish — nativeEnglish — full professional

Got a platform that has to stay up?

Reliability reviews, performance deep-dives, or a hard production problem nobody has cracked yet — start with an email.