トップページへ PASSJ ブログへ
トップページへ
分科会
特集!
コミュニケーション
資格
セミナー・コンファレンス
インフォメーション
Oracleキーワードから学ぶ、逆引き! SQL Server入門
文=株式会社CSK 教育サービス事業部
第10回
パフォーマンスチューニング編
スペシャルキーワード:EXPLAIN PLAN
このコーナーでは、毎回Oracleの重要なキーワードをピックアップして、それぞれに対応するSQL Serverの用語や機能を解説していきます。Oracleを基準とした逆引き形式なので、これまでにマスターしたOracleの知識を最大限に生かしながら、スムーズにSQL Serverを習得できます!
特に重要な“スペシャルキーワード”は、さらに詳しく別ページを設けて解説しています。
◎パフォーマンスチューニング編◎
今回のテーマは、最終回にふさわしく「パフォーマンスチューニング」です。
高度な内容ですが、実はGUIで簡単に確認・実行できるものもあります。SQL文を効率よく実行するために、SQL Serverは内部的にどう判断しているのかなど、Oracle Serverとの違いを紹介します。

実行計画


SQL文を実行するためには、内部的には表からデータを取り出したり、索引を使用したり、表を結合したりと、複数の処理を実行する必要があります。このSQL文の実行に必要な処理の組み合わせを、Oracle Serverでは「実行計画」といいます。
一方、SQL Serverではこの処理手順を「実行プラン」といいます。実行プランは、索引を使用するかどうかや結合の順番などを決めていますので、SQL文のパフォーマンスに影響を与えます。このため、実行プランはSQL文のチューニングに使用します。どのような実行プランが立てられたのかを確認し、必要があれば変更することも可能です。確認方法などについては、次のキーワード「EXPLAIN PLAN」を参照してください。


EXPLAIN PLAN


クエリのパフォーマンスが悪いときには、実行計画(SQL Serverでは実行プラン)を確認すると、どのような方法でデータアクセスしているかを確認することができます。Oracle Serverでは「EXPLAIN PLAN」命令を使用して、プランテーブルに格納された内容を確認します。
EXPLAIN PLAN を使用するためにはプランテーブルの作成などの準備が必要ですが、SQL Serverではクエリアナライザを使用して、容易に、視覚的にわかりやすく実行プランの表示をすることができます。クエリアナライザにて[クエリ]-[実行プランの表示]メニューをクリックしてクエリを実行するか、クエリを入力後に[クエリ]- [推定実行プランの表示]メニューを選択すると、結果に[実行プラン]タブまたは[推定実行プラン]タブが出てきますので、そこで実行プランを確認できます。


☆さらに詳細はこちら→

オプティマイザ


Oracle Serverのオプティマイザは、SQL文を評価し、複数の処理手順の中から最も効率的な実行方法を判断する機能です。その判断には「コストベース」、「ルールベース」という2種類の方法が使われます。
SQL Serverにも「クエリオプティマイザ」と呼ばれる同等の機能があります。
クエリオプティマイザは、コストベースのオプティマイザです。つまり、実行コスト(I/OとCPUコスト)を見積もることによって各実行プランを評価します。
クエリオプティマイザは、ただ単にリソース消費の最も少ない実行プランを選択するのではなく、適切な量のリソースを消費し、かつ最も早く結果を返す実行プランを選択します。

キャッシュヒット率


データベースのメモリチューニング作業の中で、メモリ領域のヒット率診断があります。Oracle Serverでは、現時点でのメモリ領域のヒット率を求める方法としてV$の動的パフォーマンス・ビューを使用し、ある期間内でのヒット率などを求める方法として「STATSPACKパッケージ」を使用します。
一方、SQL Serverでは、「DBCCコマンド」で現時点でのメモリ情報を確認できます。たとえば、DBCC SQLPERF(LRUSTATS)コマンドによってキャッシュヒット率の確認が可能です。
特定の期間内でのヒット率を監視する場合は、Windows 2000の「システムモニタ」を使用します。たとえば、SQL Server: Buffer ManagerオブジェクトのBuffer Cache Hit Ratioカウンタで、バッファキャッシュのヒット率を確認できます。

ヒント


SQL文実行時にオプティマイザが作成する実行計画(SQL Serverでは実行プラン)は、事前に収集した統計情報から、コストが最小になるもの(スループットが高いもの)が選ばれます。場合によっては、ユーザーのニーズとは一致しない形で実行計画が作成されることもあります。そこで、ユーザーのニーズをオプティマイザに伝える方法としてSQLの「ヒント」を使用します。Oracle ServerもSQL Serverも、同じようにヒントをサポートしています。次に示すのは、索引の使用を明示的に指定する例です。

・Oracle Serverの場合
   SELECT /*+ INDEX(employees emp_dept_id_idx) */ * FROM employees …
・SQL Serverの場合
   SELECT * FROM employees WITH(INDEX(1)) …

ANALYZE


表や索引の特徴を表す情報を「統計情報」といいます。統計情報はコストベース・オプティマイザが最適な実行計画を選択できるようにするために使用されます。Oracle Serverでは、統計情報のおもな取得方法として「ANALYZE文」と「DBMS_STATSパッケージ」があります。これらは両方とも、手動で実行し、手動で更新する必要があります。
SQL Serverでも、列内の値の分布に関する統計情報を作成できます。既定では統計情報は自動で作成されます。また既定では、データの変更に応じて、統計情報の更新も自動で行われます。手動で統計を作成、更新したい場合には、「CREATE STATISTICS」や「UPDATE STATISTICS」ステートメントを使用してください。




・ 第1回 基本用語編:データベースオブジェクト
・ 第2回 ユーティリティ編:SQL*Plus
・ 第3回 アーキテクチャ編(1):インスタンスとデータベース
・ 第4回 アーキテクチャ編(2):セグメント/エクステント/データブロック
・ 第5回 アーキテクチャ編(3):索引
・ 第6回 プログラミング編:カーソル
・ 第7回 トランザクション/ロック編:読み取り一貫性
・ 第8回 バックアップとリカバリ編:スタンバイ・データベース
・ 第9回 ユーザー管理編:ロール
・ 第10回 パフォーマンスチューニング編:EXPLAIN PLAN(実行プランの表示)



← 特集!DBバイリンガル 目次

PASSJメールニュース 著作権ついて プライバシーポリシー リンクポリシー お問い合わせ
(C) 2005 Professional Association for SQL Server Japan. All rights reserved.