LoginSignup
20
18

More than 3 years have passed since last update.

実行計画の見方(postgresql)

Last updated at Posted at 2020-09-24
1 / 35
目的

データサイエンティスト協会が行っている腕試しツール
「スキルチェックリスト」の1項目
【記述したSQLの実行計画の確認と判断ができ、
SQLの修正やインデックス作成により、
処理時間を大幅に改善するようなパフォーマンスチューニングができる】

ができるようになること


目的

・記述したSQLの実行計画の確認と判断ができ
実行計画の見方がわかるようになる

・SQLの修正やインデックス作成により、
処理時間を大幅に改善するようなパフォーマンスチューニングができる
パフォーマンスチューニング


目的

細かいところまで覚えきれない...

まずは大まかな見方、チューニングの一例を覚えて浅く広く理解を

知識が必要になったときに詳細を参考サイト等で確認し深い理解を

→何を調べればいいのかがわかるようになるまでを目的とする


目次

・実行計画って何ぞ
・実行計画の見方
・パフォーマンスチューニング(一例)


目次

実行計画って何ぞ
・実行計画の見方
・パフォーマンスチューニング(一例)


実行計画って何ぞ

実行計画 → 処理の実行順の計画

テーブルからデータとってきて、
次にデータ結合して、
次にデータ並び替えて
       ・・・みたいなイメージ


実行計画って何ぞ

image.png


目次

・実行計画って何ぞ
実行計画の見方
・パフォーマンスチューニング(一例)


コマンド

EXPLAIN→プランナが導いたデータ取得方法や結合方法(クエリプラン)を表示
image.png


実行計画の見方(実行順)

実行計画の見方(実行順)

image.png


実行計画の見方(実行順)

・ネストが深いものを優先(右→左)
・ネストが同じ深さ→上を優先(上→下)
image.png


実行計画の見方(各値)

実行計画の見方(各値)

演算子:各ノード(処理)がどのような処理を行っているかわかる
 コストがかかりやすい演算子、かかりにくい演算子がある
image.png
演算子のわかりやすい資料①
演算子のわかりやすい資料②


実行計画の見方(各値)

cost:処理の重さの指標。数が大きいほど処理が重い。
image.png


実行計画の見方(各値)

image.png


実行計画の見方(各値)

rows:処理が行われる対象の行数
image.png


実行計画の見方(各値)

width:データ型サイズ。それほど重要ではないので説明割愛


実行計画の見方(まとめ)

・実行計画→処理の実行順の計画
・EXPLAIN
・実行計画の実行順
・演算子,cost,rows


目次

・実行計画って何ぞ
・実行計画の見方
パフォーマンスチューニング(一例)


チューニングの流れ

①重そうな処理(怪しい箇所)を見つける

②怪しい箇所、関連個所を詳しく見る、修正する


重そうな処理を(怪しい箇所)見つける

image.png


パフォーマンスチューニング

様々な方法があるが一部紹介


パフォーマンスチューニング

→「VACUUM」「ANALIZE」を実行する

ANALIZE→テーブルの内容の統計情報を収集。プランナが効率のいい実行計画を決定する際に使用される。
VACUUM→データベースの不要領域の回収とデータベースの解析(オプション)を行う


パフォーマンスチューニング

image.png


パフォーマンスチューニング

rowsの値が実際の値と大きくかけ離れている

→統計情報が古くなっている可能性がある
→コマンド「ANALIZE」や「VACUUM」を実行するべきサイン


パフォーマンスチューニング

・costが大きい処理に関連するクエリを変えてみる
例①:結合系の処理でcostが大きくなっている
 →結合部分のクエリを変更する(結合方法を変えてみる)など


パフォーマンスチューニング

image.png


パフォーマンスチューニング

・コストがかかりにくい演算子が選択されるようにインデックスを張る

インデックス=索引。データの検索が早くなる場合がある


パフォーマンスチューニング

例、
 ①すべて表をスキャンするSeq Scan演算子が使われていた
 ②インデックスを張ってみる
 ③インデックスを参考にスキャンするIndex Scan演算子が使われコストが低くなる可能性あり


パフォーマンスチューニング

image.png


全体まとめ

・実行計画の見方を覚えよう
・実行計画の前に「ANALIZE」や「VACUUM」してみる
・実行計画から怪しい箇所を見つけよう
・怪しい箇所を修正してみよう


全体まとめ

・今回行ったチューニング方法がすべてではない
(調べてみて!!)

・わからないことがあったらまず公式サイトを見よう(絶対正しい情報だから)


参考サイト

実行計画の見方、演算子①
実行計画の見方、演算子①
実行計画実行順
公式サイト
EXPLAIN
VACUUM
ANALIZE

20
18
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
20
18