実行計画を読む(EXPLAIN)
遅い SQL を直すときは、まずデータベースが「どう探すつもりか」を見ます。基本はデータベース「インデックス」のタブへ。ここでは出力の読み方を深掘りします。
体験: 同じ SQL で、インデックスを変える
インデックス
データベース
マイグレーション(Laravel)
EXPLAIN の出力(作り物)
読む行の数(目盛りは 10 倍ごと)
インデックスの深掘り
インデックスを作ったのに使われない、のはたいてい書き方のせいです。✕ と ○ を見比べてください。
分離レベルと、起きること
同時に動くトランザクションが、お互いの途中の変更をどこまで見るかを決めるのが「分離レベル」です。トランザクションの基本はデータベース「トランザクション」、同時の書き込みの直し方は「同時に書き込むとき」へ。
体験: 2 つのトランザクションを、1 歩ずつ進める
場面
データベース
分離レベル
写し(レプリケーション)
主(書く所)の変更を、写し(読む所)に送り続ける仕組みです。読み書きを分けて速くする話は「性能とスケール」にあります。ここでは、写しで起きることを見ます。
バックアップと、戻し方
バックアップは「取ってある」だけでは足りません。どこまで・どれだけの時間で戻すかを先に決め、そのとおりに戻せるかを確かめます。
大きな表を変えるとき
手元では一瞬のマイグレーションが、本番の大きな表では長い時間の鍵になり、サービスを止めることがあります。
運用で見るもの
障害になる前に、データベースのしるしを見張ります。見張り方の全体は運用「見張るための 3 つの手がかり」へ。
AI 時代AI とデータベース
AI は SQL を書くのが得意です。ただ、データベースは「消したら戻らない」ものを扱います。任せ方の考え方はAI と開発「どこまで任せる?」へ。
チェックリスト
確かめたものに印を付けてください(この端末にだけ残ります)。