連載
» 2017年05月30日 05時00分 公開

「SQLの実行計画」から処理時間の差を理解するしばちょう先生の試して納得! DBAへの道(改)(1)(3/3 ページ)

[柴田長,日本オラクル株式会社]
前のページへ 1|2|3       

演習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文の速度差についての演習を予定しております。それではまた次回お会いしましょう!

筆者紹介

柴田長(しばた つかさ)

photo

日本オラクル データベーススペシャリスト。Oracle GRID Centerの設立当初からオラクルの持つ最新技術をパートナー各社と共同で検証し、これまでにリアルなパフォーマンスに裏付けられた数多くのホワイトペーパーを執筆。2017年現在は、大規模案件の現場を訪問し、お客さまのシステムに最適なソリューションデザインの提案やパフォーマンストラブルの問題解決に従事している


前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。