本番みたいな 3,200 万行のデータベースを、ブラウザで叩いて学ぶ
仕事では触れない大きさのデータベースで、索引・実行計画・ロック・同時実行を自分の手で確かめる教材。表計算しか知らない状態から始めて、遅い理由を数字で説明できるところまで、22 章。
読むより先に、1 回叩く
同じ顧客の明細を数える、同じクエリ。左は索引なし、右は索引あり。返る答えは同じで、読む行数が 3,200 万行から数十行に、時間が秒からミリ秒に変わる。小さなデータでは決して見えないこの差を、まずここで見る。残りの章はこれを「なぜ」と「どこで壊れるか」に分解していく。
この画面は実 DB を持たず、MySQL 8.0 を 2 vCPU / メモリ 4GB / バッファプール 1GB の環境で実測した記録を返している。だから本文の数字と画面の数字は必ず一致する。
本番で起きることを、本番なしで体験する
第二部の 6 つの障害は、行数が増えたサービスで実際に起きる症状。仕事でまだ出会っていなくても、ここで一度見ておけば、出会ったときに何を見ればいいかがわかる。原因は本文が先に言わない。読者が計器盤で見つける。
- 障害 1マイページが 4 秒かかる64 行を返すために 3,200 万行を読んでいた第二部 1 章 フルスキャンとインデックス →
- 障害 2インデックスを足したらタイムアウトが増えた9 割が同じ値の列に張った索引を、オプティマイザが選んでしまう第二部 3 章 選択性 →
- 障害 3購入履歴の月次集計が遅い索引はあるのに、読んだ行の大半を捨てている第二部 4 章 複合インデックスとカバリング →
- 障害 4注文一覧の 1,000 ページ目が開かないOFFSET は 2,000 万行を読んで捨てる第二部 6 章 ソートとページング →
- 障害 5商品別の売上画面が終わらない結合する列に索引がなく、3,200 万行を商品の数だけ読み直す第二部 7 章 JOIN →
- 障害 6セール開始直後に注文が失敗する1 本の接続が目玉商品の行を握ったまま、後続がロック待ちで倒れる第二部 9 章 ロック →
向いている人
- 小さなデータでしか SQL を書いたことがなく、大きくなると何が変わるのかを知りたい
- ORM やフレームワーク越しに DB を使っているが、中で何が起きているかは正直わからない
- フロントエンド中心にやってきて、API の向こう側(バックエンドと DB)を自分の言葉で説明できるようになりたい
- 就職・転職の面接で「インデックスとは」「実行計画とは」「デッドロックとは」を、暗記ではなく見たものとして答えたい
向いていない人
- DBA として大規模な DB を運用している人(既知のことが多い)
- 特定の言語やフレームワークの書き方を知りたい人(出てくるコードは SQL だけ)
この教材の 4 つの約束
読み終えたとき、あなたは
- 実行計画(EXPLAIN ANALYZE)を下から上へ読み、遅い理由を数字で説明できる
- 「この条件に索引を張るべきか」を、選択性・列の順番・カバリングで判断できる
- トランザクション・ロック待ち・デッドロックを 2 セッションで再現して、面接で聞かれても見たものとして答えられる
- 同時に何十本も来たとき何が起きるかを、p50 と p99、飽和、ノイジーネイバー、ホットロウの言葉で話せる
- API の向こう側で DB が何をしているかを、フロントエンドの人にもバックエンドの人にも説明できる
目次
全章を見る →第一部 DB 基礎編
第二部 パフォーマンス編
価格
税込・買い切り・更新込み。同じ規模の DB を自分で用意する手間と費用なしに、全章を読める。第一部の全章と第二部の 1 章までは無料。有料は第二部 2 章「実行計画を読む」から。
- 第二部 2〜10 章(実行計画、選択性、複合索引、InnoDB の中身、ソートとページング、JOIN、書き込みと DDL、ロック、同時実行)
- 全ラボの記録の再生、負荷ラボ、2 セッションの台本
- 章末の確認問題(全 22 章)
よくある質問
SQL をまったく知らなくても大丈夫ですか
大丈夫です。第一部は表計算のシートとの対比から始まり、SELECT の書き方も 0 から扱います。入門書を読んだが実務のイメージがつかない、という人に向けて書いています。
インストールは要りますか
要りません。ブラウザだけで全章のラボが動きます。
どのくらい時間がかかりますか
全 22 章で 9〜10 時間。1 章は 15〜35 分で、途中で止めても章ごとに閉じています。
就職・転職の準備に使えますか
使えます。面接で問われやすい索引・実行計画・トランザクション・ロック・N+1 を、すべて自分で実行して確かめる形で扱います。「本で読んだ」ではなく「見た」と言えるようになります。
SQL を書き換えて試せますか
できません。用意されたクエリだけ実行できます。画面の数字は記録環境で実測した結果の再生で、その代わり本文の数字と必ず一致します。
無料でどこまで読めますか
第一部の全章(0〜9 章と補足)と、第二部の 0 章・1 章まで。「4 秒 → 0.2ms」の体験までは無料です。
MySQL 以外でも役に立ちますか
第一部の SQL はほぼどの DB でも同じです。第二部は MySQL 8 / InnoDB に固有の部分(実行計画の表記、ロックの種類、DDL の種類)を含みますが、調査の手順そのものは他の DB でも同じです。
返金はできますか
デジタルコンテンツのため原則としてできません。無料の 12 章で内容と画面を確かめてから購入してください。
スマートフォンで読めますか
読めます。ラボの計器盤と実行計画は横に広いので、画面の広い端末の方が見やすいです。