タグ

ブックマーク / zenn.dev/ukkyon (1)

  • deleted_atにインデックスを雑に貼ったら本番DBが死んだ

    RDSが朝のピーク時間帯にI/Oスパイクで応答不能になりました。前日夜にリリースしたdeleted_atへの単独インデックスが原因です。stagingのEXPLAINでは複合インデックスが正しく選択されていたので、レビューでは検出できていません。 根っこにあるのはMySQL 8.0 innodb_stats_methodのデフォルト値nulls_equalと、IS NULLに対するコスト計算の噛み合わせです。8.0系で現在も未修正のバグに類する挙動で、NULL多数カラムへの単独インデックスがトリガーになります。 テーブルとクエリ 問題が起きたのはチケット管理SaaSのticketsテーブルです。ソフトデリートでdeleted_atを持つよくある設計です。 CREATE TABLE tickets ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, w

    deleted_atにインデックスを雑に貼ったら本番DBが死んだ
    igrep
    igrep 2026/05/14
    やっぱこういうの試すときは本番レプリカが必須だと思うんですよ
  • 1