

中嶋悟
名前:中嶋 悟(なかじま さとる) ニックネーム:サトルン 年齢:28歳 性別:男性 職業:会社員(IT系メーカー・マーケティング部門) 通勤場所:東京都千代田区・本社オフィス 通勤時間:片道約45分(電車+徒歩) 居住地:東京都杉並区・阿佐ヶ谷の1LDKマンション 出身地:神奈川県横浜市 身長:175cm 血液型:A型 誕生日:1997年5月12日 趣味:比較記事を書くこと、カメラ散歩、ガジェット収集、カフェ巡り、映画鑑賞(特に洋画)、料理(最近はスパイスカレー作りにハマり中) 性格:分析好き・好奇心旺盛・マイペース・几帳面だけど時々おおざっぱ・物事をとことん調べたくなるタイプ 1日(平日)のタイムスケジュール 6:30 起床。まずはコーヒーを淹れながらニュースとSNSチェック 7:00 朝食(自作のオートミールorトースト)、ブログの下書きや記事ネタ整理 8:00 出勤準備 8:30 電車で通勤(この間にポッドキャストやオーディオブックでインプット) 9:15 出社。午前は資料作成やメール返信 12:00 ランチはオフィス近くの定食屋かカフェ 13:00 午後は会議やマーケティング企画立案、データ分析 18:00 退社 19:00 帰宅途中にスーパー寄って買い物 19:30 夕食&YouTubeやNetflixでリラックスタイム 21:00 ブログ執筆や写真編集、次の記事の構成作成 23:00 読書(比較記事のネタ探しも兼ねる) 23:45 就寝準備 24:00 就寝
実行統計と実行計画の違いを徹底解説する
このキーワードの話を始める前に、読者のみなさんに一つだけ伝えたいことがあります。実行統計と実行計画は、どちらもデータベースが「どう動いたか」を教えてくれる道具ですが、役割が異なるため混同して使うと効率が落ちます。まず実行統計は、実際に処理が動いているときに集まる数字の集まりです。たとえばクエリを実行したときの経過時間、CPUの使用量、ディスクI/Oの待ち時間、処理した行数、返ってくる結果の件数などが記録されます。これらのデータは実際の動作を観察するための“現在進行形の証拠”のようなものです。これを集める目的は、どこが遅いのか、どの部分で時間が浪費されているのかを見つけ出すこと。反対に実行計画は、データベースのオプティマイザが「このクエリをどう処理すれば最短時間で終わるか」という設計図です。実行計画には、どの順序でテーブルを結合するか、どのインデックスを使うか、どの結合アルゴリズムを選ぶかなどが含まれます。実行計画は理屈の世界の話であり、理論と実戦を結ぶ橋のような役割を果たします。これらは似た名前ですが、実は別々の情報源と目的を持つと覚えておくと混乱を防げます。さらに重要なのは、実行統計が更新されると、それを受けて実行計画を調整することがあるという点です。データの分布が変われば新しい統計が必要になり、それに合わせて計画を見直すべき場面が出てくるのです。つまり、実行統計は現場の“現在形”、実行計画は最適化の“設計図”という二つの輪が、データベースのパフォーマンスを左右する大切な要素として連携しているのです。
実行統計とは何か
実行統計とは、クエリを実際に実行したときに生まれる情報のことです。私は中学の理科の授業を思い出します。実験の結果をメモするように、データベースは処理の経過を数字として記録します。典型的な統計には、実行時間だけでなくCPU時間、待ち時間、I/O回数、処理した行数、返却した行の数、フェイルした回数、キャッシュのヒット率などが挙げられます。これらのデータは、複数回クエリを走らせたときに平均値や分布を作ることで、遅い原因を特定する手掛かりになります。重要なのは、実行統計は実際の環境やデータ量、同時実行の状況で変わるということ。開発者やDBAは、特定の時間帯や特定のデータ量で“どう動くか”を知るために、実行統計を継続的に監視します。弱点を見つけたら、データの分布を均すためにインデックスを調整したり、クエリを書き換えたり、場合によってはハードウェアの構成を見直したりします。
実行計画とは何か
実行計画とは、クエリをどう処理するかを表す設計図です。オプティマイザが、与えられた SQL を受け取って、最適な結合順序、結合アルゴリズム、インデックスの有無、フィルタ条件の適用順序などを決定します。実行計画は、実行時の統計情報を参考にして作られますが、必ずしも最新の実行統計に依存するとは限りません。プランには複数の候補があり、デベロッパーはヒントや統計情報の更新を使って、望ましい計画を選ぶことができます。実行計画が良いと、同じデータ量でも処理が速くなり、ボトルネックが減ります。とはいえ、実行計画がいつも正しいとは限りません。データが急に変わると、別の計画が適切になることがあります。
比較表 主要ポイント
ここが現場の判断を助けるポイントです。実行統計は現場の証拠を示し、実行計画は処理の道筋を描くという基本的な役割を持っています。統計データを読むと、どのテーブルで時間がかかっているか、どのインデックスが引っ張っているコストか、どのフィルタ条件が結果のサイズを大きく変えるかを推測する手掛かりが得られます。一方、計画の変更は、インデックスの追加や結合方法の変更、時にはヒントの投入など、実行時の挙動を直接変える手段を与えてくれます。表の各行を眺めるだけで、どちらを先に見るべきか、どのデータを更新すべきかが分かるようになり、学習の進む先が見えてくるはずです。
この表を見ると、両者が果たす役割の違いが見えやすくなります。実行統計は現場の証拠、実行計画は未来の道案内。どちらも大切ですが、同時に使うことで、あなたのデータベースは安定して速く動くようになります。
ある放課後の雑談。友達とゲームのラグについて話しているとき、私はふと『実行統計って、ゲームがどう動いているかの時間データみたいだな』と思いました。実行統計は、実際にプレイ中に何が起こっているかを数値で教えてくれます。例えば、入力操作からキャラクターが画面に反映されるまでの時間、回線の遅延、読み込みの待ち時間、サーバー側の処理待ちなどを見える化します。こうしたデータを見ながら、どの場面で「遅い」と感じるのかを友達と推理します。すると、どうすれば改善できるかのヒントが自然と出てきます。時にはより速い回線や処理を軽くする工夫を話し合い、時には『統計データを取っておくと良いよ』というアドバイスで会話は終わります。私はこの雑談が、データベースの学習にも通じると思います。実行統計は、現場の証拠を積み上げて、次の一手を考えるための道具になるのです。