LoginSignup
1
2

More than 5 years have passed since last update.

SQLチューニング基礎(Oracle)

Posted at

Oracle DBパフォーマンスチューニング:

1、システムチューニング ※今回は割愛
  主にOSまたはOracleの設定の変更により、DB性能を改善すること

2、SQLチューニング
  性能の悪いSQLを見つけて改善すること(性能の悪いSQLとは:SQLを実行する際、効率の悪い索引アクセスを
して、 無駄なリソー ス*を大量に消費するSQLのこと。表現が難しいくらい猛烈な実行時間がかかってしまうSQL。
*CPUとメモリー

image

1、開発担当者がSQL文を作成時に性能を意識しにくい
 実装段階では、機能の実現が優先される傾向にあり、開発者はSQL文の効率に対する意識が疎かになってしまいがちです。実行結果でも、SQL文にはいくつ通りもの記述方法があり、開発者の性能への意識が疎かになると性能の悪いSQL文が生み出されます。

2、実装段階ではSQL文のアクセスパスが最適か分からない
 実装段階では、本番で想定されるよりも極端に少ないデータ量でテストすることが多いため、実装時は索引を使ったアクセスパスであったSQL文が、カットオーバー後ではテーブルの全件スキャンに変わってしまうといったことが起こり得ます。

作成したSQLの性能は、 SQLを実行する時のアクセスパス(どのように表に対して検索を行う)で判断することが一般的によく使われている手法の一つです。

SQLを実行する時のアクセスパスを調べる方法 ⇒(SQL)実行計画で確認する

SQL実行計画 とは、アクセスパスが書かれた、いわゆる“SQLの実行手順書”です。Oracleでは、SQL文を実行する際、先にSQL文を解析して最も効率的な実行計画を生成します。
過去に同じSQL文が実行されていれば、その実行計画が格納されているので、それ以降は解析を行なうことなくSQL文が実行されます。解析されない分、実行時間は短縮されます。

1.統計情報とは?
表や索引、また使用している領域、データの種類や分布などのデータ特性を表す情報です。

  1. 具体的にどんな値があるのか? 統計情報には大きく分けて、表統計、列統計、索引統計、システム統計が存在します。それぞれの統計情報は、主に以下のような項目で構成されます。

表統計:行数、ブロック数、平均行長
列統計:列値の種類、NULLの数、データ分布
索引統計:リーフ・ブロック数、階層数
システム統計:CPUパフォーマンスと使用率、I/Oパフォーマンスと使用率

  1. 具体的にどんな値があるのか? 統計情報には大きく分けて、表統計、列統計、索引統計、システム統計が存在します。それぞれの統計情報は、主に以下のような項目で構成されます。

表統計:行数、ブロック数、平均行長
列統計:列値の種類、NULLの数、データ分布
索引統計:リーフ・ブロック数、階層数
システム統計:CPUパフォーマンスと使用率、I/Oパフォーマンスと使用率

実行計画の取得方法:使うツール(SQLPLUS,A5-MK2,SQL-DEVELOPER etc..) によって、取得方法(手順)は異なりますが、実行計画の結果は同じになります。

1
2
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
1
2