Open棟梁Project - マイクロソフト系技術情報 Wiki

目次

基本情報

概要

SQL ServerもOracleもSQLを実行するに当たり、
「オプティマイザ」と呼ばれるプログラムが、
どう処理したら効率がよいかを解析し、「実行計画」を立てる。

SQLの実行パフォーマンスを向上させるためには、
どうすれば効率のよい実行計画になるかを探る必要がある。

オプティマイザの種類

オプティマイザの種類 (CBO、RBO)
 - オラクル・Oracleをマスターするための基本と仕組み
http://www.shift-the-oracle.com/inside/optimizer.html

オプティマイザには、

の2つの種類が存在する。

オプティマイザの種類としては、コストベースのオプティマイザ(CBO)が主流となっている。

この理由は、CBOは、データが変化する環境においても定期的に統計情報の収集をするため、
データにフィットした 実行計画、 アクセスパスになるように自動的に調整されるためである。

Oracle 10g からはルールベースのオプティマイザ(RBO)はサポートされなくなっている。

ただし、この「サポートされない」の意味は、
RBOの生成する実行計画に影響を与えるクエリヒントが
将来、サポートされなくなる可能性を示唆しているだけで
「実際はまだ使用可能」である。

チューニング方法

自動パラメータ

Windows Serverが自動パラメータであるように、SQL ServerもCBOに基づいたチューニングを行う。
#Sybase SQL ServerはCBOをサポートした初めて商用で成功したRDBMSでもある。

クエリのチューニング

以下の手順にある様に、CBO(統計情報→実行プラン)の問題を確認し、
必要に応じてRBO(プラン ガイド、クエリ ヒント)を適用する。

クエリ パフォーマンス
http://msdn.microsoft.com/ja-jp/library/ms190610.aspx

CBO

実行計画の確認、統計情報のメンテナンスの手順

実行計画の確認、統計情報のメンテナンスの手順は以下を参照。

連載 RDBMSアーキテクチャの深層(5)
OracleとSQL Server、チューニングの違いを知る(Page 2)
http://www.atmarkit.co.jp/fdb/rensai/rdbmsarc05/rdbmsarc05_2.html

統計情報の自動更新・手動更新の使い分け

統計情報の自動更新が ON の時には統計情報を手動で更新する必要はない?
 - Microsoft SQL Server Japan Support Team Blog - Site Home - MSDN Blogs
http://blogs.msdn.com/b/jpsql/archive/2012/04/19/on.aspx

統計情報の自動更新が ON に設定されている場合には、統計情報を手動で更新する必要は全くないか?

UPDATE STATISTICS や sp_updatestats を実行して
明示的に統計情報を更新する必要がある場合はある。

統計情報の自動更新はいつどのように行われるのか?

おおよそテーブルの 20% に相当するデータが更新されると、
そのデータの統計は自動更新の対象になる。

どのような場合に手動更新が必要か?

RBO

SQL Serverには以下のRBO的な機能が残されている。

プラン ガイド

クエリ ヒント

参考情報


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS