連載
「SQLの実行計画」から処理時間の差を理解する:しばちょう先生の試して納得! DBAへの道(改)(1)(3/3 ページ)
データベース技術や知識は、座学だけでなく「実際に手を動かして、実際に試して」理解を深めよう──。日本オラクルのデータベーススペシャリストが「新人をDBAに育てる際に使用する課題」をベースに、DBAがすぐ実践できる即効テクニックを紹介。第1回目は「“SQLの実行計画”から処理時間の差を理解する方法」を解説します。
演習4:「TBL2」表と「TBL3」表から、それぞれ1レコード(col1=10000)だけ検索する実行時間を測定する
お待たせいたしました。ここでSQLの性能測定を行います。
sqlplus / as sysdba SQL> alter system FLUSH BUFFER_CACHE; SQL> connect TRY/TRY set timing on select * from TBL2 where col1 = 10000; COL1 COL2 ---------- ---------------------------------------------------------------------------------------------------- 10000 10000AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 経過: 00:00:00.09 SQL> connect / as sysdba SQL> alter system FLUSH BUFFER_CACHE; SQL> connect TRY/TRY set timing on select * from TBL3 where col1 = 10000; COL1 COL2 ---------- ---------------------------------------------------------------------------------------------------- 10000 10000AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 経過: 00:00:07.67
演習4 「TBL2」表と「TBL3」表から、それぞれ1レコード(col1=10000)だけ検索する実行時間を測定する
「TBL2」表は100万件のレコードが格納されており、「TBL3」表はTBL2表からcreate as select文、もしくはinsert select文で作成したので、同様に100万件のレコードが格納されています。セグメントのサイズも同じであることは演習1で確認済みでした。
しかし演習4では、同じSELECT文なのに実行時間に大きな差があることを確認できます。当たり前と言えば当たり前なので、熟練エンジニアの方には申し訳ない問いかもしれませんが、あえて聞きましょう。「なぜ、実行時間に差が出るのでしょうか?」
……前編はここまでにしておきます。次回は後編として、この「なぜ」を解明するために必要なSQLの実行計画の取得方法や確認方法について、そして、各表に対してレコード件数を問い合わせるSELECT文の速度差についての演習を予定しております。それではまた次回お会いしましょう!
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 【Oracle Database】忘れていませんか? 「アラートログ調査」に必要な、たった3つのキホン
データベース管理システムの運用でトラブルが発生したらどうするか。データベースサポートスペシャリストが現場目線の解決Tipsをお届けします。今回は基本編として「アラートログの調査で押さえるべき3つのポイント」を解説します。【Oracle Database 12c対応版】 - 障害発生! 問題切り分けはスピード勝負
Oracleデータベースの運用管理者は、突発的に直面するパフォーマンス障害にどうやって対処したらよいか。本連載は、非常に複雑なOracleのアーキテクチャに頭を悩ます管理者に向け、短時間で問題を切り分け、対処法を見つけるノウハウを紹介する。対象とするバージョンはOracle8から9iまでを基本とし、10gの情報は随時加えていく。(編集局) - パフォーマンス向上の最短コースを知る
本連載では、Oracleデータベースのパフォーマンス・チューニングの中から、特にSQLのチューニングに注目して、実践レベルの手法を解説する。読者はOracleデータベースのアーキテクチャを理解し、運用管理の実務経験を積んでいることが望ましい。対象とするバージョンは現状広く使われているOracle9iの機能を基本とするが、Oracle 10gで有効な情報も随時紹介していく。(編集局) - SQL実践講座
SQLは、データを操作するために非常に簡単な構文で構成されているように見えます。ところが実際に使い込んでいくと、一見簡単に取得できるように見えるデータが取得できない場面にぶち当たることもあります。こういった場面のために、SQLの効率的な使い方をエッセンスにしてお伝えします。