タグ

ブックマーク / 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が死んだ
    clairvy
    clairvy 2026/04/18
    わからんけど、なんでインデックス貼ったんだ?値が偏ることは自明だとしたら、有効的でないような?
  • 1