inflearn logo
知識共有
inflearn logo

現役DBAチーム長による同時在庫引き落とし設計 — イベントのトラフィックにDBが耐える方法

先着順クーポン・在庫減算でDBがどこで詰まるのかを、ロック待ち・ホットロー・history list length・接続数を使って実際に確認します。条件付きUPDATE・一意キー・SKIP LOCKED・カウンター分割・Redisを使うかどうかの判断まで、Dockerで実行する実習シナリオを通じて、設計変更の前後を実証する現役DBAチームリーダーによる実践講義です。

1名 が受講中です。

難易度 中級以上

受講期間 無制限

MySQL
MySQL
Redis
Redis
SQL
SQL
aws-aurora
aws-aurora
Docker
Docker
MySQL
MySQL
Redis
Redis
SQL
SQL
aws-aurora
aws-aurora
Docker
Docker

この講座で身につくこと

  • 先着順の発行・在庫減算が集中する際、DB側の指標(行ロック待ち・ロック待ちの合計・実行中スレッド・history list length)からボトルネックを特定します。

  • FOR UPDATE・条件付きUPDATE・楽観的ロックを同じ条件でDBの数値を比較して選びます。

  • ユニークキー・文の順序・冪等キーで重複発行と再試行による重複を防ぎ、INSERT IGNOREの落とし穴を避けます。

  • 事前に作成したクーポンコードのプールはSKIP LOCKEDで、1行の在庫はカウンター分割で処理し、スループットの限界を超えます。

  • 長時間トランザクションのundoの蓄積、接続数・max_connections、ロック待機のタイムアウトを通じて、失敗を早く返す方法を学びます。

  • イベントのリハーサルを秒単位のグラフで読み取り、同じ指標をAurora CloudWatch・Performance Insightsの名称で探します。

この講義は

先着順クーポンや在庫引き当てでDBのどこが詰まるのかを、ロック待ち・ホットロー・history list length・コネクション数で直接確認します。条件付きUPDATE・ユニークキー・SKIP LOCKED・カウンター分割・Redisを使うかどうかの判断まで、Dockerで動かす23のシナリオを通じて設計変更の前後を実証する、現役DBAチームリーダーによる実践講座です。

同時実行性の解決策を紹介する講義はたくさんあります。この講義では、同じ解決策をDB側から測定します。各レッスンは、コード → 実行 → 行ロック待ち・ロック待ちの合計・実行中のスレッド・ロールバック数 → 改善した方法 → 同じ測定、という順序で進みます。最後には、20秒間のイベント全体をリハーサルし、DBAが見るグラフから読み解きます。

本講座では、以下の内容を学びます

  • 先着順の発行・在庫引き当てが集中した際、DB側の指標(行ロック待ち・ロック待ちの合計・実行中のスレッド・history list length)からボトルネックを見つけます。

  • 読み書きコードでの過剰発行を再現し、FOR UPDATE・条件付きUPDATE・楽観ロックを同じ条件でDBの数値を比較して選びます。

  • ユニークキー・SQL文の実行順序・冪等性キーで重複発行とリトライによる重複を防ぎ、INSERT IGNOREの落とし穴を避けます。

  • あらかじめ用意したクーポンコードプールはSKIP LOCKEDで、1行の在庫はカウンターを分割して処理し、スループットの限界を超えます。

  • 長時間トランザクションによるundoの蓄積、接続数・max_connections、ロック待機時間の制限によって、失敗を早く返す方法を学びます。

  • イベントリハーサルを秒単位のグラフで読み取り、同じ指標をAurora CloudWatch・Performance Insights上の名称で探します。

こんな方におすすめです。

  • 先着順・クーポン・限定販売・在庫機能を開発している方、またはイベントを控えたバックエンド開発者(経験1~5年目)

  • 並行性の解決方法は学んだけれど、「DBではどう見えるのか」が気になる方。

  • イベント前にDB側のリスクを確認する必要があるテックリード

事前知識

  • SELECT・UPDATE・INSERTとトランザクション(BEGIN/COMMIT)の基本

  • インデックス・主キーの概念、Dockerでコンテナを起動する(実習)

扱わないこと

  • Kafka・キャッシュ・キューサーバーのようなアプリケーションアーキテクチャ。

  • ロックの仕組み(ギャップロック・ネクストキーロック)・デッドロックの詳細な解説(ロック・デッドロック講義)

  • Springのコードの書き方

講師紹介

20年以上にわたりデータベースおよびIT分野でキャリアを積んできたチュ・ギョンホです。DBAおよびDB Platformチームのマネージャーとしてデータベースプラットフォームを担当し、MySQL・PostgreSQL・Oracle・MongoDB、SQLチューニング、AWS・Terraform・Pythonを専門分野としています。

大規模なECサイトで、先着順・クーポン・数量限定販売のイベントのたびにDB関連の指標を見守り、開発チームと一緒に設計を改善してきました。今回の講義は、その経験を教育用の仮想データとローカルのDocker実行結果だけで再現したものです。会社の運用データは使用していません。

動画内のナレーションはAI合成音声です。画面上のコード・SQL・測定値は、実習環境で実際に実行した結果です。

次のような方に
おすすめです

受講対象

  • 先着順・クーポン・数量限定販売・在庫機能の開発に携わる、またはイベントを控えたバックエンド開発者(経験1〜5年)

  • 同時実行の解決方法は学んだけれど、「DBではどう見えるのか」が気になる方

  • イベント前にDB側のリスクを点検するテックリード

前提知識

  • SELECT・UPDATE・INSERTとトランザクション(BEGIN/COMMIT)の基本

  • インデックス・主キーの概念、Dockerでコンテナを起動(実習)

こんにちは
dorian05202988です。

経歴認証済み

20年以上にわたりデータベースとIT分野でキャリアを積んできたデータ職人です。DBAおよびDB Platformチームのマネージャーとしてデータベースプラットフォームに携わり、MySQL・PostgreSQL・Oracle・MongoDB、SQLチューニング、AWS・Terraform・Pythonを専門分野としています。ゲーム・金融・ITサービス分野での経験をもとに、データベースとクラウドアーキテクチャについて解説しています。『オラ​​クル実務チューニング SQLパターン学習』と『Oracle Pro*C実務プロジェクト活用書』を出版し、AWS Summit 2018・2019と「データよ、遊ぼう」2020では、サーバーレス・データベースの選択・マルチデータベース戦略について発表しました。最近は、Bedrock LLMを利用したスロークエリの分析・チューニング提案、DBスペック算定の自動化、DBメタMCPサーバーとSlackボットを通じた照会フローを扱っています。開発者向けのデータベース自動化と、非開発者向けのAI業務活用について、各コースの対象者と目的に合わせた実習を通じて解説しています。AIの提案をそのまま適用するのではなく、結果の同一性・実行計画・観測条件を確認し、根拠が不足している場合は保留する判断基準を伝えています。会社の運用データや認証情報は講義資料に含めません。

もっと見る

カリキュラム

全体

48件 ∙ (3時間 12分)

講座資料:

授業資料
講座掲載日: 
最終更新日: 

受講レビュー

まだ十分な評価が集まっていない講座です。
ぜひ最初のレビューをお寄せください。

dorian05202988の他の講座

知識共有者の他の講座はこちら

似ている講座

同じ分野の他の講座を見てみましょう!

期間限定セール

¥42

19%

¥8,428