Every shared MariaDB box eventually meets the query that should never have been allowed to run for six hours. max_statement_time is the built-in kill switch — here is how to scope it, what it actually kills, and why it will not save you from a retry loop.
PostgreSQL Topic Archive
MariaDB PostgreSQL Articles
Galera clustering, InnoDB and Aria internals, replication, optimizer behavior, and MariaDB operations notes.
One SET GLOBAL gives MariaDB per-account, per-client, per-table, and per-index counters — enough to answer 'who is hammering this table' in a single query. Here is what userstat collects, what it costs, and where the unused-index caveats hide.
A two-node Galera cluster survives fewer failures than a single node. Here is the quorum arithmetic behind that, how garbd breaks ties, what a non-primary component actually does to your writes, and how to bootstrap safely after a full outage.
The JSON keyword in MariaDB is a compatibility alias over LONGTEXT. It migrates schemas cleanly, then surprises you at scale: full parses per row, whole-document rewrites per update, and equality semantics that differ from MySQL.
The query cache lives on in MariaDB long after MySQL deleted it, and on a busy many-core server it is often the top contention point. Here is how to prove it with counters and what to run instead.
Someone forgot the WHERE clause. You can restore last night's backup and replay a day of binlog, or you can generate the inverse transaction and apply it in minutes. Here is how MariaDB flashback actually works.
MariaDB ships a real thread pool in the community server — MySQL charges extra for one. Here is how pool-of-threads works, when it saves you under a connection storm, and when it quietly serializes you.
MariaDB can store optimizer statistics as ordinary data in mysql.table_stats, column_stats and index_stats — histograms included. Here is how to turn it on, keep it fresh, and stop guessing why a plan changed.
gcache.size is the difference between a node rejoining in three minutes via IST and a two-hour full SST that hammers the donor. Here is how the ring buffer works, how to size it from wsrep_replicated_bytes, and how to verify the window before you restart anything.
Spider turns one logical MariaDB table into partitions that live on remote servers. Here is how to set it up, where it beats app-level sharding, and the limits nobody mentions.
MariaDB has real sequence objects; MySQL never got them. They shine for shared id spaces and ids known before the insert, and they are a waste of a round trip for a single hot table.
The MySQL-to-MariaDB path is a logical migration, not an in-place upgrade. What breaks — auth plugins, JSON semantics, GTID, collations — and the checklist to run before you switch.
A Galera node rejoin either streams a small delta (IST) or copies the entire dataset (SST), and whether any donor's gcache still holds the joiner's missing writesets decides which. Here is how the decision is made, how to size for it, and how to watch it happen.
MyRocks swaps InnoDB's B+tree for RocksDB's LSM tree, trading slower range scans for far cheaper writes and better compression. Here is when that trade is worth making — and when it is not.
MariaDB's system-versioned tables keep row history automatically — no triggers, no shadow tables. How FOR SYSTEM_TIME works, what storage growth really costs, and the limitations worth knowing first.
Async replication, semi-sync, and Galera are not versions of the same feature — they are different trades in latency, consistency, and operations. A field guide to choosing between them on MariaDB.
Optimistic parallel replication bets that your transactions will not conflict and pays for the bet in rollbacks. Here is how the five slave_parallel_mode modes differ, when the bet wins, and how to measure real lag.
The audit checkbox says 'encrypt data at rest'; the operations reality is key custody, background rotation threads, a binlog that stays plaintext until you say otherwise, and a recovery plan that dies with the key file. The honest field guide.
An ADD COLUMN on one Galera node froze writes on all three for forty minutes. Here is what TOI really does to the cluster, how to run RSU node by node without aborting one, and the DDL decision runbook.
MariaDB's InnoDB is a maintained fork with its own defaults: the change buffer is gone in 11.0, flushing defaults to O_DIRECT, the redo log was rewritten, and half of every MySQL tuning guide quietly stops applying.
The MySQL-to-MariaDB path is a logical migration, not an in-place upgrade. What breaks — auth plugins, JSON semantics, GTID, collations — and the checklist to run before you switch.
One SET GLOBAL gives MariaDB per-account, per-client, per-table, and per-index counters — enough to answer 'who is hammering this table' in a single query. Here is what userstat collects, what it costs, and where the unused-index caveats hide.
Every shared MariaDB box eventually meets the query that should never have been allowed to run for six hours. max_statement_time is the built-in kill switch — here is how to scope it, what it actually kills, and why it will not save you from a retry loop.
gcache.size is the difference between a node rejoining in three minutes via IST and a two-hour full SST that hammers the donor. Here is how the ring buffer works, how to size it from wsrep_replicated_bytes, and how to verify the window before you restart anything.
A two-node Galera cluster survives fewer failures than a single node. Here is the quorum arithmetic behind that, how garbd breaks ties, what a non-primary component actually does to your writes, and how to bootstrap safely after a full outage.
The query cache lives on in MariaDB long after MySQL deleted it, and on a busy many-core server it is often the top contention point. Here is how to prove it with counters and what to run instead.
The JSON keyword in MariaDB is a compatibility alias over LONGTEXT. It migrates schemas cleanly, then surprises you at scale: full parses per row, whole-document rewrites per update, and equality semantics that differ from MySQL.
MariaDB has real sequence objects; MySQL never got them. They shine for shared id spaces and ids known before the insert, and they are a waste of a round trip for a single hot table.
Someone forgot the WHERE clause. You can restore last night's backup and replay a day of binlog, or you can generate the inverse transaction and apply it in minutes. Here is how MariaDB flashback actually works.
MaxScale's readwritesplit router gives your application one endpoint and spreads reads across replicas. Here is how routing decisions are made, where session state bites, and how failover coordination works.
Galera's multi-primary promise has a footnote: write the same row on two nodes and one transaction dies at COMMIT. How certification conflicts work, what the counters say, and how to design them out.
MariaDB and MySQL forked over a decade ago and the operational differences are now real: incompatible GTID formats, JSON as a LONGTEXT alias, system-versioned tables, a bundled thread pool, and replication gotchas.
ColumnStore gives MariaDB a columnar, distributed analytics engine alongside InnoDB. Here is when columnar genuinely wins, how the architecture works, and the honest limits nobody puts in the sales deck.
MariaDB and MySQL share ancestry but their optimizers have diverged for over a decade. Here is what actually differs: optimizer_switch defaults, persistent histograms, engine-independent statistics, and a migration playbook.
Aria is the crash-safe successor to MyISAM that MariaDB uses under the hood for internal temp tables and its own system tables. Here is how it works, how it differs from InnoDB, and why operators should care.
Galera's synchronous replication means the whole cluster writes as fast as its slowest node. Here is how flow control works, how to read wsrep_flow_control_paused, and how to find the laggard.