Upgrade to Pro — share decks privately, control downloads, hide ads and more …

そのDB負荷、"仕様変更"で解決しませんか? 技術だけじゃない負荷対策アプローチ

Avatar for むらまつ むらまつ
July 02, 2025
280

そのDB負荷、"仕様変更"で解決しませんか? 技術だけじゃない負荷対策アプローチ

PHP カンファレンス 2025
https://phpcon.php.gr.jp/2025/

Avatar for むらまつ

むらまつ

July 02, 2025
Tweet

Transcript

  1. 6 CONFIDENTIAL - © 2022 CoDMON Inc. 6 1. コドモンで直面したDB負荷の課題

    課題:保護者アプリのタイムライン機能  
  2. 7 CONFIDENTIAL - © 2022 CoDMON Inc. 7 1. コドモンで直面したDB負荷の課題

    課題:保護者アプリのタイムライン機能  
  3. 14 CONFIDENTIAL - © 2022 CoDMON Inc. 14 負荷改善が難しい理由について ✖

    ✖ ✖ ✖ ✖ • 新しいもの順に表示する   ↓ ⚠ 7テーブル(15種類)のデータを並び替える
  4. 15 CONFIDENTIAL - © 2022 CoDMON Inc. 15 負荷改善が難しい理由について ✖

    ✖ ✖ ✖ ✖ • 新しいもの順に表示する   ↓ ⚠ 7テーブル(15種類)のデータを並び替える ⚠ limitでデータを絞れない
  5. 16 CONFIDENTIAL - © 2022 CoDMON Inc. 16 負荷改善が難しい理由について ✖

    ✖ ✖ ✖ ✖ • 新しいもの順に表示する   ↓ ⚠ 7テーブル(15種類)のデータを並び替える ⚠ limitでデータを絞れない ⚠ テーブル構造が原因で有効なINDEXが貼れない ものもある
  6. 17 CONFIDENTIAL - © 2022 CoDMON Inc. 17 チームで考えた技術的アプローチ ✖

    ✖ ✖ ✖ ✖ • タイムライン表示用テーブル作って
  7. 18 CONFIDENTIAL - © 2022 CoDMON Inc. 18 チームで考えた技術的アプローチ ✖

    ✖ ✖ ✖ ✖ • タイムライン表示用テーブル作って • 更新のイベントを元に
  8. 19 CONFIDENTIAL - © 2022 CoDMON Inc. 19 チームで考えた技術的アプローチ ✖

    ✖ ✖ ✖ ✖ • タイムライン表示用テーブル作って • 更新のイベントを元に • Debeziumを使ってデータを更新し
  9. 20 CONFIDENTIAL - © 2022 CoDMON Inc. 20 チームで考えた技術的アプローチ ✖

    ✖ ✖ ✖ ✖ • タイムライン表示用テーブル作って • 更新のイベントを元に • Debeziumを使ってデータを更新し • 過去のデータも移行し。。。
  10. 27 CONFIDENTIAL - © 2022 CoDMON Inc. 27 仕様を変更するというアプローチ •

    日付の期間の絞り込みを必須にする 👉クエリされる範囲は期間内で限定される
  11. 28 CONFIDENTIAL - © 2022 CoDMON Inc. 28 仕様を変更するというアプローチ •

    日付の期間の絞り込みを必須にする 👉クエリされる範囲は期間内で限定される 👉ユーザーは期間検索が行える様になった
  12. 29 CONFIDENTIAL - © 2022 CoDMON Inc. 29 仕様を変更するというアプローチ タイムラインの負荷対策

    • 日付の期間の絞り込みを必須にする 👉クエリされる範囲は期間内で限定される 👉ユーザーは期間検索が行える様になった Reader DBのReadIO
  13. 31 CONFIDENTIAL - © 2022 CoDMON Inc. 31 負荷対策で得た教訓 •

    負荷対策は仕様を変更しないことが前提ではない
  14. 32 CONFIDENTIAL - © 2022 CoDMON Inc. 32 負荷対策で得た教訓 •

    負荷対策は仕様を変更しないことが前提ではない • 負荷対策とUX向上の両方を考える
  15. 33 CONFIDENTIAL - © 2022 CoDMON Inc. 33 負荷対策で得た教訓 •

    負荷対策は仕様を変更しないことが前提ではない • 負荷対策とUX向上の両方を考える • 負荷対策はエンジニアだけで行うものではない