mysql

  • A cache that was a second database

    A cache holding data that existed nowhere else, discovered during a restart. A flush that lost four hours of user preferences.

  • An LTS release model, and what it changes about planning

    MySQL moving to long-term-support and innovation tracks, which changes the upgrade question from when to which. The innovation track is for people who want a feature now and…

  • EXPLAIN ANALYZE on a query the optimizer had improved

    A query with a hand-written optimiser hint from 2019, re-examined after an upgrade, where the hint was now choosing the worse plan. A hint is a decision frozen…

  • An index that became redundant and nobody removed

    An index on (customer_id) alongside one on (customer_id, created_at), where the first is a prefix of the second and does nothing. Redundant indexes cost write throughput and buffer…

  • MySQL 8.4, and the defaults that changed underneath us

    The first long-term-support release under the new model, and an application that could not authenticate after a container image bump.

  • A DELETE that should have been a partition drop

    A retention job deleting eleven million rows a month from a partitioned table, one batch at a time, without touching the partition boundary. The partitioning had been done…

  • The service we merged back

    Two services extracted in 2021, a team of four maintaining four pipelines, and forty-one of forty-four releases touching both.

  • The temporary table that spilled to disk every time

    A query creating an internal temporary table that exceeded the in-memory limit on every execution, silently. The ratio of disk to memory temporary tables is the diagnostic and…

  • A histogram on a skewed column, and the plan it fixed

    A status column where one value covers ninety-four per cent of rows, and an optimiser assuming an even distribution. Histograms are for columns that are skewed and not…

  • A module that got its own database and gave it back

    Splitting the billing schema onto its own instance in 2021, and rejoining it three years later because every report crossed the boundary. The reason given in 2021 was…