Collations decide what counts as equal, which indexes work on JOINs, and which queries throw mixed-collation errors. Field notes on choosing between utf8mb4_0900_ai_ci, general_ci, and bin, and migrating safely.
Database Topic Archive
MySQL Articles
InnoDB internals, replication, locking, query performance, and MySQL operations notes.
Undo growth means a snapshot is pinning purge. How innodb_undo_log_truncate reclaims space, managing tablespaces with CREATE and DROP UNDO TABLESPACE, and the stuck-report incident shape.
SHOW PROCESSLIST is the first thing everyone runs and the most misread output in MySQL operations. Here is what the thread states actually mean, which pileups matter, and how to build a triage habit around performance_schema.threads.
MySQL's default is one thread per connection, and it degrades gracefully until it falls off a cliff. When the thread pool plugin actually helps, when it just rearranges the queue, and how to size max_connections without guessing.
TempTable spills have three stages and two ceilings, and the classic monitoring ratio is blind to the middle one. Here is how temptable_max_ram and temptable_max_mmap really work, and how to see spills.
ibtmp1 grows to its high-water mark and holds it until you restart MySQL, and one ambitious report query can inflate it past 100 GB. How the two temp tablespace kinds differ, how to cap them, and how to name the…
The sys schema ships with every MySQL 8.x server and most teams never open it. These are the five views I actually use every day - statement_analysis, the index-hygiene pair, file I/O, and host_summary - with the caveats that keep…
Semi-synchronous replication promises that a commit is acknowledged by at least one replica before the client sees success. The fine print — silent fallback to async, wait points, and what an ack actually means — is where production incidents live.
Every worker hammering the same first pending row is why your InnoDB job queue serializes. SKIP LOCKED fixes the claim path, if the index, the isolation level, and the row lifecycle are right.
A single-threaded applier turns a busy source's parallel writes into a serial queue, and Seconds_Behind_Master will smile at you while it grows. How the parallel applier really decides what can run concurrently, and how to measure lag honestly.