Stack Map新人 Web エンジニアの地図

データベースの中で何が起きているかと、運用で困る所を深掘りします。
PostgreSQL と MySQL の両方を見ながら、実行計画・インデックス・トランザクション・写し・バックアップを順に。

実行計画を読む(EXPLAIN)

遅い SQL を直すときは、まずデータベースが「どう探すつもりか」を見ます。基本はデータベース「インデックス」のタブへ。ここでは出力の読み方を深掘りします。

体験: 同じ SQL で、インデックスを変える


        

インデックス
データベース
マイグレーション(Laravel)

          EXPLAIN の出力(作り物)
          
読む行の数(目盛りは 10 倍ごと)

インデックスの深掘り

インデックスを作ったのに使われない、のはたいてい書き方のせいです。✕ と ○ を見比べてください。

分離レベルと、起きること

同時に動くトランザクションが、お互いの途中の変更をどこまで見るかを決めるのが「分離レベル」です。トランザクションの基本はデータベース「トランザクション」、同時の書き込みの直し方は「同時に書き込むとき」へ。

体験: 2 つのトランザクションを、1 歩ずつ進める

場面
データベース
分離レベル

写し(レプリケーション)

主(書く所)の変更を、写し(読む所)に送り続ける仕組みです。読み書きを分けて速くする話は「性能とスケール」にあります。ここでは、写しで起きることを見ます。

バックアップと、戻し方

バックアップは「取ってある」だけでは足りません。どこまで・どれだけの時間で戻すかを先に決め、そのとおりに戻せるかを確かめます。

大きな表を変えるとき

手元では一瞬のマイグレーションが、本番の大きな表では長い時間の鍵になり、サービスを止めることがあります。

運用で見るもの

障害になる前に、データベースのしるしを見張ります。見張り方の全体は運用「見張るための 3 つの手がかり」へ。

AI 時代AI とデータベース

AI は SQL を書くのが得意です。ただ、データベースは「消したら戻らない」ものを扱います。任せ方の考え方はAI と開発「どこまで任せる?」へ。

チェックリスト

確かめたものに印を付けてください(この端末にだけ残ります)。