2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

読書感想文「内部構造から学ぶ PostgreSQL 設計運用計画の鉄則」 実行計画

Last updated at Posted at 2025-02-25

書籍名「内部構造から学ぶ POstgreSQL 設計運用計画の鉄則」 実行計画

印象に残った部分

p256 実行計画とは

問い合わせを発行すると、PostgreSQLのプランナは様々な検索方法の中から処理コストが最小になる選択や組み合わせを計算します。
上のコストが最小化された検索方法のことを実行計画という。
統計情報に基づいて実行計画は作成される。

p258 実行計画の取得方法

・SQLで実行する方法
 EXPLAINコマンドを使う

・自動的に取得する方法
 拡張モジュール「auto_explain」を有効にする

p40 統計情報とは

統計情報・・各列の典型的な値と各列のデータ分布を概要を示す度数分布

アナライズ・・クエリを実行する際に利用する統計情報を収集してpg_staticシステムカタログを更新する処理。

p266 p262 統計情報の取得方法

・SQLで実行する方法
 ANALYZEコマンドを使う
 
・自動的に取得する方法
 自動バキューム機能を使う

p273 実行計画の構造

image.png

下から順に実行される
最初にindex Scanが実行されて

ノードの分類 説明 具体的なノード 備考
スキャン系 最初に実行されるノード。データを選別するフィルタ条件 Seq ScanIndex ScanIndex Only Scanなど Where?、Index
複数のデータを結合 2つのテーブルのスキャン結果を入力とし、1つの結果を出力 Nested LoopHash JoinMerge Join inner Join Left Joinなど?
データを加工 なし Limit Result --

Sortは優先度低い

p288 289 処理コストの見積もり値と実行結果

・処理コストの見積もり=実行計画
・実際の実行時間→EXPLAIN ANALYZE を実行して確認できる
・見積もり時間と実行時間は統計情報に基づいて算出されるため、統計情報は定期的に取得する。

todo なんで見積もりと実際の実行時間が変わるんだ???理由をあとで調べておく

実践すること or 感想

実行計画の概要を知れて良かったです。
とりあえず、統計情報→実行計画の順で取得するってことは理解できました。
実行計画と統計情報を自分の言葉で説明しろって言われてたら グレーですね。まだ理解不足感ありますね。

実践すること

・実際にクエリを打って、実行計画を確認する
・前にSQLパズルのリポジトリがあるので、それを使う。
https://github.com/RYA234/SQL_Puzzle_Learning

・本書のパフォーマンスチューニングの部分を読み込む

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?