第 5 章 結合 結合のパフォーマンスに影響を与える結合の種類と 表の結合順序について内部動作を交えて 説明します 1. 結合処理のチューニング概要 2. 結合の種類 3. 結合順序 4. 結合処理のチューニングポイント 5. 結合関連のヒント

Similar documents
はじめに コースの概要と目的 Oracle をより効率的に使用するための SQL のチューニング方法について説明します また 索引の有無 SQL の 記述方法がパフォーマンスにどのように影響するのかを実習を通して理解します 受講対象者 アプリケーション開発者 / データベース管理者の方 前提条件 S

第 2 章 問合せの基本操作 この章では データベースから情報を検索する際に使用する SELECT コマンド および SELECT コマンドと 同時に使用する句について説明します 1. 問合せとは 2. 基本的な問合せ 3. 列の別名 4. 重複行を一意にする 5. 検索行の絞込み 6. 文字パター

第 1 章 条件分岐 この章では 条件に応じて処理を分岐する方法について説明します 1. CASE 式で複雑な条件分岐を実現 2. 関数を使用した条件分岐 3. MERGE 文による条件に応じた DML の実行

はじめに コースの概要と目的条件分岐の方法や複雑な集計の手法など SQL のコーディングの幅を広げるためのテクニックについて説明します また パフォーマンスを考慮した記述方法や正しい結果を取得するための記述方法などについても あわせて説明します 本コースでは 実践的な SQL の記述手法を広く浅く紹

第 2 章 PL/SQL の基本記述 この章では PL/SQL プログラムの基本的な記述方法について説明します 1. 宣言部 2. 実行部 3. 例外処理部

第 7 章 ユーザー データ用表領域の管理 この章では 表や索引を格納するユーザー データ用表領域の作成や 作成後のメンテナンスに ついて解説します 1. ユーザー データ用表領域の管理概要 2. ユーザー データ用表領域作成時の考慮事項 3. ユーザー データ用表領域の作成 4. ユーザー データ

はじめに コース概要と目的 Oracle を使用した開発 管理を行う上でのファースト ステップとして リレーショナル データベース管理ソフトウェアである Oracle の役割 基本機能 基本アーキテクチャを幅広く理解することを目的としています 受講対象者 これから Oracle を使用する方 データ

第 3 章 メディア障害とバックアップ リカバリ この章では メディア障害の発生に備えたバックアップ方法と 障害時の基本的なリカバリ方法につい て説明します 1. メディア リカバリ概要 2. ファイルの多重化 3. アーカイブ モードの設定 4. バックアップ概要 5. 一貫性バックアップ ( オ

Oracle9i

プレポスト【問題】

PostgreSQL SQL チューニング入門 ~ Explaining Explain より ~ 2012 年 11 月 30 日 株式会社アシスト 田中健一朗

Oracle活用実践演習コース

今さら聞けない!? Oracle入門 ~後編~

目次 1 集計関数 / 分析関数とは 2 集計関数 / 分析関数のパフォーマンス効果 3 ケーススタディグループ小計やクロス集計を計算するランキングを表示する前月比較を表示する累計を計算する移動平均を計算する構成比を計算する Oracle8i SQL Oracle8i Oracle Oracle C

PA4

Microsoft PowerPoint - KeySQL50_10g_vlo2.ppt

Microsoft PowerPoint - 講義補助資料2017.pptx

1000 Copyright(C)2009 All Rights Reserved - 2 -

アジェンダ ORACLE MASTER Oracle Database 11g 概要 11g SQL 基礎 Ⅰ 試験紹介 ポイント解説 Copyright 2011 Oracle. All rights reserved. 2

はじめに コース概要と目的 Oracle データベースのパフォーマンス問題の分析方法 解決方法を説明します 受講対象者 データベース管理者の方を対象としています 前提条件 データベース アーキテクチャ データベース マネジメント を受講された方 もしくは同等の知識 をお持ちの方 テキスト内の記述につ

Slide 1

Slide 1

Slide 1

PowerPoint プレゼンテーション

Oracle Application Expressの機能の最大活用-インタラクティブ・レポート

untitled

今さら聞けない!? Oracle入門 ~前編~

Oracle Database 10g Release 2を使用したデータベース・パフォーマンス

Slide 1

Null

Copyright(C)2010 i-corpration All Rights Reserved.

Oracle Database Connect 2017 JPOUG

テキスト中の表記について 画面中に表示される文字の表記ウィンドウ ボタン メニューなど 画面に表示される文字は [] で囲んで表記しています 画面上に表示される選択肢や 入力する文字については で囲んで表記しています ディレクトリの表記本テキストではファイルのパスを表す際 すべてデフォルトのインスト

ShikumiBunkakai_2011_10_29

Slide 1

津島博士のパフォーマンス講座

PowerPoint プレゼンテーション

ORACLE TUNING PACK 11G

領域サイズの見積方法

_02_3.ppt

untitled

Oracle 入門 ~ 研修受講後のスキルアップサポート ~ 対応バージョン :Oracle 10gR1 ~ 12cR1 本資料は アシスト Oracle 研修をご受講いただいたお客様からのご質問や 研修ではご案内できなかった情報などを FAQ にまとめたものです 研修受講後のスキルアップの一助とし

橡実践Oracle Objects for OLE

Oracle Direct Seminar <Insert Picture Here> 試験対策ポイント解説 11g SQL 基礎 Ⅰ 日本オラクル株式会社

相続支払い対策ポイント

150423HC相続資産圧縮対策のポイント

Oracle Un お問合せ : Oracle Data Integrator 11g: データ統合設定と管理 期間 ( 標準日数 ):5 コースの概要 Oracle Data Integratorは すべてのデータ統合要件 ( 大量の高パフォーマンス バッチ ローブンの統合プロセスおよ

ハピタス のコピー.pages

Copyright 2008 All Rights Reserved 2

DB12.1 Beta HandsOn Seminar

橡ExCtrlPDF.PDF

#odddtky Oracle DBA & Developer Days 2014 for your Skill 使える実践的なノウハウがここにある 津島博士のパフォーマンス講座 SQL チューニングの基礎 日本オラクル株式会社データベース事業統括製品戦略統括本部データベースエンジニアリング本部 担

標準化 補足資料

このドキュメントに記載されている情報 (URL 等のインターネット Web サイトに関する情報を含む ) は 将来予告なしに変更することがあります このドキュメントに記載された内容は情報提供のみを目的としており 明示または黙示に関わらず これらの情報についてマイクロソフトはいかなる責任も負わないもの

PowerPoint -O80_REP.PDF


A. 前ページからの続きです DBMS_SPACE.UNUSED_SPACE の各パラメータの意味 segment_owner = オブジェクトの所有者 segment_name = オブジェクト名 segment_type = オブジェクトタイプ total_blocks = セグメント合計ブロッ

Exam : 1z0-882 日本語 (JPN) Title : Oracle Certified Professional, MySQL 5.6 Developer Vendor : Oracle Version : DEMO 1 / 4 Get Latest & Valid 1z0-882-JP

Oracle Direct Seminar <Insert Picture Here> もうアプリ修正は必要ない! 画期的な SQL チューニング手法 日本オラクル株式会社

法制度改革と電子マネーにおける立法の可能性

自己管理型データベース: アプリケーションおよびSQLチューニング・ガイド

Oracle Database 11g Release 1(11.1) Oracle Textの新機能

untitled

release-270.PDF

PowerPoint プレゼンテーション

<4D F736F F D204F C B838B82C B838B8EE88F878F912E646F6378>

Microsoft PowerPoint - Lite10g_SyncArchitecture.ppt

Oracle Database 19c の注目ポイント 年 07 月 23 日株式会社コーソル渡部亮太 Copyright 2019 CO-Sol Inc. All Rights Reserved. 1

PowerPoint Presentation

Oracle Tuning Pack

第 3 章代表的なチューニングポイント 3 Q. ストアド プロシージャを使用した SQL 共有率の向上 A. ストアド プロシージャを使用した場合 同じストアド プロシージャを実行する複数のユーザーが 同じ共有 PL/SQL 領域を使用します また ストアド プロシージャは解析済みで格納されている

テキスト 中 の 表 記 について 画 面 中 に 表 示 される 文 字 の 表 記 ウィンドウ ボタン メニューなど 画 面 に 表 示 される 文 字 は[]で 囲 んで 表 記 しています 画 面 上 に 表 示 される 選 択 肢 や 入 力 する 文 字 については で 囲 んで 表 記


PowerPoint Presentation

< 写真欄 > 11g R2 Real Application Clusters スキルチェック ポイント解説

1

Oracle9i Reportsのチューニング

APEX Spreadsheet ATP HOL JA - Read-Only

目 次 第 1 章 QlikViewの 基 礎 1.1 QlikView 概 要 ビジネスインテリジェンス(BI)とQlikView QlikView Personal Edition QlikViewのアプリケーション...1

untitled

ORACLE PARTITIONING

PowerPoint Presentation

初心者にもできるアメブロカスタマイズ新2016.pages

- 2 Copyright (C) All Rights Reserved.

Microsoft PowerPoint - KeySQ50master ppt

untitled

高確率軸馬発掘法&今週末から競馬の勝ち組になれる5つの作戦

Oracle Data Pumpのパラレル機能

Null

Chapter Two

Oracle Enterprise Manager Oracle Tuning Packによるデータベース・チューニング, リリース 9.2

Agenda パフォーマンス チューニングとは ボトルネック箇所の特定 代表的なチューニング項目 メモリ割り当てのチューニング ディスクI/Oのチューニング SQL 文のチューニング Copyright 2010, Oracle. All rights reserved. 2

Copyright All Rights Reserved. -2 -!

テキスト中の表記について 画面中に表示される文字の表記ウィンドウ ボタン メニューなど 画面に表示される文字は [] で囲んで表記しています 画面上に表示される選択肢や 入力する文字については で囲んで表記しています ディレクトリの表記本テキストではファイルのパスを表す際 すべてデフォルトのインスト

Microsoft Word - sample_adv-programming.docx

Silk Central Connect 15.5 リリースノート

IPA:セキュアなインターネットサーバー構築に関する調査

Microsoft Word - 最終版 バックせどりismマニュアル .docx

スライド 1

5 Q. 選択リストにアスタリスク (*) を使用して 位置に基づくソートを行うとどうなりますか A. その表を構成している列の順序に対応して 暗黙的に番号が割り振られます 6 Q. 文字データが日本語の場合 ソートは五十音順に行われるのですか A. 五十音順ではなく 文字コード順になります 文字コ

Transcription:

はじめに コース概要と目的 Oracle をより効率的に使用するための SQL チューニング方法を説明します また 索引の有無 SQL の記述方 法がパフォーマンスにどのように影響するのかを実習を通して習得します 受講対象者 アプリケーション開発者 / データベース管理者の方 前提条件 SQL トレーニング データベース アーキテクチャ コースを受講された方 もしくは同等の知識をお持 ちの方 テキスト内の記述について 構文 [ ] 省略可能 { A B } A または B のどちらかを選択 n _ 数値の指定 デフォルト値 マーク 指定バージョンからの新機能 ( 左記の場合 Oracle 12cR1 からの新機能 ) Enterprise Edition で使用できる機能 知っておいたほうが良いテクニック もしくは注意事項 参照ページ データ ディクショナリ ビュー

第 5 章 結合 結合のパフォーマンスに影響を与える結合の種類と 表の結合順序について内部動作を交えて 説明します 1. 結合処理のチューニング概要 2. 結合の種類 3. 結合順序 4. 結合処理のチューニングポイント 5. 結合関連のヒント

1. 結合処理のチューニング概要 結合とは複数の表からデータを取り出す操作です 結合するには 問合せ文の FROM 句に複数の表を指定し 結合 する各表の関係を WHERE 句内に結合条件として設定します ANSI の場合 JOIN 句に複数の表を指定し ON 句 ( または USING 句 ) に結合条件を指定します 結合のパフォーマンスを向上するには 最も適切な結合方法と結合順序を選択することが重要です (1) 結合の種類 結合方法には 主に以下の 3 つの種類があります ハッシュ結合 内部的にハッシュ関数を使用して結合します ソート / マージ結合 結合条件に指定した各列をソートし その結果をマージします ネステッド ループ結合 大規模な表と小規模な表 ( または WHERE 句で行ソースを絞っている ) を 索引を使用して結合します 結合の種類 有効なシーン 結合する表の特徴 使用する条件 ハッシュ結合 結合結果が大量 大規模な表と小規模な表 結合条件が等価のみ使用可能 ソート / マージ結合 結合結果が大量 結合する表が同規模 結合条件が非等価でも使用可能 ネステッド ループ結合 結合結果が少量 大規模な表と小規模な表 大規模な表側に索引が必要 株式会社アシスト Copyright(C) K.K. Ashisuto All Rights Reserved. 5-1

(2) 結合順序 結合では 2 つの表ずつ処理されます そのため 3 つ以上の表の結合では まず 2 つの表を結合し その結果作成された行ソースと 3 つ目の表を結合 さらにその結果と 4 つ目の表を結合 というように処理されます このため 3 つ以上の表の結合では何通りかの結合順序が考えられます 例 )A 表 B 表 C 表を結合する場合の順序の候補 A B C A C B B A C B C A C A B C B A 各結合順序によって実行負荷は異なります そのため 実行負荷が低くなるよう 結合結果が小さな行ソー スとなるものから結合するように調整します Copyright(C) K.K. Ashisuto All Rights Reserved. 株式会社アシスト 5-2

2. 結合の種類 各結合の内部的な動作と どのようなときに利用されるかを解説します (1) ハッシュ結合 ハッシュ結合は 小規模な表と大規模な表の結合で 表の大部分の行が結合対象である場合に向いていま す 多くの場合 ソート / マージ結合よりも効率的に実行できます 1) 内部動作 ハッシュ結合は 結合する一方の表にハッシュ関数を適用してメモリー上 ( ハッシュ領域 ) に展開した後 もう一方の表にもハッシュ関数を適用してハッシュ値が等しいデータを結合する方法です ハッシュ結合は 以下のステップによって行われます 1. 結合する 2 つの表を比較し 小さな表を選択する 2. 選択した表の結合条件列にハッシュ関数を適用し ハッシュ領域に展開する ( ハッシュ表の作成 ) ハッシュ領域は PGA 内に獲得されます また 表をハッシュ領域に格納できなかった場合は 一時セグメントとしてディスクに書出されます 3. もう一方の大きな表の結合条件列にハッシュ関数を適用しハッシュ表と比較する 同じハッシュ値の行があった場合は結合する この作業を行ごとに繰り返す 株式会社アシスト Copyright(C) K.K. Ashisuto All Rights Reserved. 5-3

< 実行 SQL> SELECT ename,dname FROM emp,dept WHERE emp.deptno = dept.deptno; 1 小さな表として DEPT 表を選択する 2 DEPT 表の DEPTNO 列にハッシュ関数を適用し ハッシュ領域に格納する ( ハッシュ表の作成 ) 3 表がハッシュ領域に収まり切らない場合は 一時セグメントとしてディスクに書出す EMP 表 PGA DEPT 表 1 ENAME SAL DEPTNO ハッシュ領域 DEPTNO DNAME LOC SMITH 800 20 1 30 SALES 10 ACCOUNTING NEW YORK 2 ALLEN 1600 30 2 10 ACCOUNTING 20 RESEARCH DALLAS ハッシュ関数 JONES 2975 20 3 40 OPERATIONS 30 SALES CHICAGO MARTIN 1250 30 4 20 RESEARCH 40 OPERATIONS BOSTON BLAKE 2850 30 ハッシュ表 CLARK 2450 10 SCOTT 3000 20 3 MILLER 7934 10 一時表領域 < ハッシュ値 > 10 2 20 4 30 1 40 3 4もう一方の EMP 表の DEPTNO 列にハッシュ関数を適用 その結果とハッシュ表を比較し 同じハッシュ値の 行があれば結合する EMP 表 PGA DEPT 表 ENAME SAL DEPTNO ハッシュ領域 DEPTNO DNAME LOC SMITH 800 20 1 30 SALES 10 ACCOUNTING NEW YORK 4 ALLEN 1600 30 2 10 ACCOUNTING 20 RESEARCH DALLAS ハッシュ関数 JONES 2975 20 3 40 OPERATIONS 30 SALES CHICAGO MARTIN 1250 30 4 20 RESEARCH 40 OPERATIONS BOSTON BLAKE 2850 30 ハッシュ表 CLARK 2450 10 SCOTT 3000 20 MILLER 7934 10 < ハッシュ値 > 10 2 20 4 30 1 一時表領域 Copyright(C) K.K. Ashisuto All Rights Reserved. 株式会社アシスト 5-4

2) ハッシュ結合が選択されるケース オプティマイザは以下のようなケースでハッシュ結合を選択する可能性があります 表の大部分の行を結合する場合 通常 ソート処理よりもハッシュ処理のコストの方が低いため ハッシュ結合が選択されやすい といえます 結合条件が等価 (=) である場合 非等価演算子 ( < > <= >= ) では ハッシュ結合は行われません 株式会社アシスト Copyright(C) K.K. Ashisuto All Rights Reserved. 5-5

例 )EMP 表と DEPT 表を結合したときの実行計画を確認する SQL> SELECT ename,dname FROM emp,dept 2 WHERE emp.deptno = dept.deptno; 実行計画 ----------------------------------- Id Operation Name ----------------------------------- 0 SELECT STATEMENT * 1 HASH JOIN 2 TABLE ACCESS FULL DEPT 3 TABLE ACCESS FULL EMP ----------------------------------- <HASH JOIN> ハッシュ結合が行われたことを示します 先に全表スキャンされている表がハッシュ表になります 上記例では DEPT 表がハッシュ表です Copyright(C) K.K. Ashisuto All Rights Reserved. 株式会社アシスト 5-6

(2) ソート / マージ結合 ソート / マージ結合は 結合条件の各列をソートし その結果をマージします データ量の多い表同士を結合し 表の大部分の行が結合対象である場合に向いています 一般的にソート / マージ結合よりもハッシュ結合の方がパフォーマンスが優れています 1) 内部動作 ソート / マージ結合は 内部的に以下ステップで行われます 1. ソート操作 : 両方の表が 結合条件列をもとにソートされる 2. マージ結合処理 : ソートされた各表の行ソースがマージされる 株式会社アシスト Copyright(C) K.K. Ashisuto All Rights Reserved. 5-7

< 実行 SQL> SELECT ename,dname FROM emp,dept WHERE emp.deptno = dept.deptno; 1それぞれの表の結合条件列 (DEPTNO 列 ) をもとにソートする EMP 表 DEPT 表 ENAME SAL DEPTNO DEPTNO DNAME LOC CLARK 2450 10 10 ACCOUNTING NEW YORK MILLER 1300 10 20 RESEARCH DALLAS ソート SMITH 800 20 30 SALES CHICAGO JONES 2975 20 40 OPERATIONS BOSTON SCOTT 3000 20 ALLEN 1600 30 MARTIN 1250 30 BLAKE 2850 30 2ソートされたそれぞれの行ソースを 結合条件をもとにマージする EMP 表 DEPT 表 ENAME SAL DEPTNO DEPTNO DNAME LOC CLARK 2450 10 10 ACCOUNTING NEW YORK MILLER 1300 10 20 RESEARCH DALLAS SMITH 800 20 30 SALES CHICAGO JONES 2975 20 40 OPERATIONS BOSTON SCOTT 3000 20 ALLEN 1600 30 MARTIN 1250 30 BLAKE 2850 30 Copyright(C) K.K. Ashisuto All Rights Reserved. 株式会社アシスト 5-8

2) ソート / マージ結合が選択されるケース オプティマイザは 以下のようなケースでソート / マージ結合を選択する可能性があります 表の大部分の行を結合する場合 結合条件が非等価演算子 ( < > <= >= など ) である場合 ハッシュ結合は 等価条件 (=) でないと使用されません 行ソースが既に他の操作などでソートされており ソート処理を避けることができる場合 例えば 結合条件の列に索引が作成されている場合 索引を利用することでソート処理を省略で き ハッシュ結合よりも低いコストで結合できる場合があります 株式会社アシスト Copyright(C) K.K. Ashisuto All Rights Reserved. 5-9

例 )EMP 表と DEPT 表を結合したときの実行計画を確認する /* 表の大部分の行を結合する場合 ハッシュ結合が選択される可能性が高い */ SQL> SELECT ename,dname FROM emp,dept 2 WHERE emp.deptno = dept.deptno; 実行計画 ----------------------------------- Id Operation Name ----------------------------------- 0 SELECT STATEMENT * 1 HASH JOIN 2 TABLE ACCESS FULL DEPT 3 TABLE ACCESS FULL EMP ----------------------------------- /* EMP 表の結合条件列である DEPTNO 列に索引を作成 */ SQL> CREATE INDEX idx_deptno ON emp(deptno); 索引が作成されました /* 索引を作成したことにより ソート / マージ結合が選択された */ SQL> SELECT ename,dname FROM emp,dept 2 WHERE emp.deptno = dept.deptno; 実行計画 --------------------------------------------------- Id Operation Name --------------------------------------------------- 0 SELECT STATEMENT 1 MERGE JOIN 2 TABLE ACCESS BY INDEX ROWID EMP 3 INDEX FULL SCAN IDX_DEPTNO * 4 SORT JOIN 5 TABLE ACCESS FULL DEPT --------------------------------------------------- EMP 表へのアクセスでは 索引をフルスキャンし 索引からソート済みデータを取得 DEPT 表の DEPTNO 列には索引がないため 全表スキャン後にソートが発生 結合条件列に索引が作成されたため ソート処理をスキップできるようになった これにより ソー ト / マージ結合のコストがハッシュ結合を下回り ソート / マージ結合が使用されるようになった <MERGE JOIN> ソート / マージ結合が使用されたことを示します Copyright(C) K.K. Ashisuto All Rights Reserved. 株式会社アシスト 5-10