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

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

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

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

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

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

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

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

PA4

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

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

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

プレポスト【問題】

Slide 1

Oracle9i

Microsoft PowerPoint - KeySQL50_10g_vlo2.ppt

Slide 1

Slide 1

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

Null

Oracle活用実践演習コース

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

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

Oracle Database Connect 2017 JPOUG

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

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

untitled

PowerPoint プレゼンテーション

Slide 1

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

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

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

標準化 補足資料

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

Null

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

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

Slide 1

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

PowerPoint Presentation

PowerPoint Presentation

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

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

ShikumiBunkakai_2011_10_29

ORACLE TUNING PACK 11G

スライド 1

Oracle Tuning Pack

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

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

領域サイズの見積方法

Oracle Data Pumpのパラレル機能

PowerPoint Presentation

セットアップカード

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

SQL 基礎 (6) JOIN 句 - データの結合 作成日 : 2016/02/22 作成者 : 西村 更新履歴 更新日 更新概要 作業者 2016/02/22 新規作成 西村 はじめに この資料では 下記のような JOIN によるテーブル ( データ ) の結合について簡単に説明します INNE

内容 Visual Studio サーバーエクスプローラで学ぶ SQL とデータベース操作... 1 サーバーエクスプローラ... 4 データ接続... 4 データベース操作のサブメニューコンテキスト... 5 データベースのプロパティ... 6 SQL Server... 6 Microsoft

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

要旨 : データステップ及び SGPLOT プロシジャにおける POLYGON/TEXT ステートメントを利用した SAS プログラムステップフローチャートを生成する SAS プログラムを紹介する キーワード :SGPLOT, フローチャート, 可視化 2

MySQL研修コース & 資格のご案内

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

メール全文検索アプリケーション Sylph-Searcher のご紹介 SRA OSS, Inc. 日本支社技術部チーフエンジニア Sylpheed 開発者 山本博之 Copyright 2007 SRA OSS, Inc. Japan All right

PowerPoint プレゼンテーション

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

橡ExCtrlPDF.PDF

PowerPoint Presentation

Microsoft Word - sample_adv-programming.docx


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

バッチ処理にバインド変数はもうやめません? バッチ処理にバインド変数はもうやめません?

FMV取扱ガイド

FMV取扱ガイド

取扱ガイド

FMV取扱ガイド

データベースS

Microsoft PowerPoint - db03-5.ppt

PowerPoint Presentation

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

Oracleの領域管理~トラブル防止のテクニック~

NEC COBOL SQL アクセス Server Runtime V1.0 COBOL SQL アクセス Server Runtime V1.0 (1 年間保守付 ) COBOL SQL アクセス Server Runtime V1.0 (1 年間時間延長保守付 ) セットアップカード SL438

第6回 2014/04/15 OSSユーザーのための勉強会 PostgreSQLの優位性 株式会社アシスト データベース技術本部 喜田 紘介 Copyright 2014 K.K.Ashisuto All Rights Reserved. 1

Silk Central Connect 15.5 リリースノート

Microsoft PowerPoint pptx

Exam : J Title : Querying Microsoft SQL Server 2012 Version : DEMO 1 / 10

KTest

Microsoft PowerPoint - KeySQ50master ppt

DBA & Developer Day 2016 ダウンロード資料

データセンターの効率的な資源活用のためのデータ収集・照会システムの設計

Oracle SQL Developer Data Modeler

3/7 マイグレーション開発方針 顧客名 0 作成者 根岸正 < プログラム移行方針 > システム名称 A-VX システムマイグレーション作成日 2015/09/01 < COBOL 資産のプログラム移行 > COBOLソース ( メインとCOPYLIB) を入力としてSCC 言語変換ツールにてVB

意外と簡単!?Oracle Database 10g Release2 - データベース構築から運用まで - データベースの運用 - チューニング編 (Windows 版 ) Creation Date: Nov 2, 2005 Last Update: Nov 2, 2005 Version: 1

Oracle Database Clientリリース・ノート, 10gリリース1( ) for Microsoft Windows

ORACLE PARTITIONING

Basic descriptive statistics

Wiki Wiki Wiki...

PowerPoint Presentation

iNFUSE インフューズ

Oracle8簡単チューニング for Windows NT

Chapter Two

Oracle9i Reportsのチューニング

APEX Spreadsheet ATP HOL JA - Read-Only


Transcription:

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

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

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

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

5 結合 結合の種類 結合の種類について内部動作や有効なシーンを説明します 結合には 主に 3 つの種類があり 有効なシーンはそれぞれ異なります そのため 各結合の内部動作を踏まえて 状況 に適した結合の種類を検討できることが 根拠をもってチューニングを行う上では重要になります (1) ハッシュ結合 ハッシュ結合は 大量のデータを結合する必要がある場合 ( または小規模な表の大きな割合のデータを結合する 必要がある場合 ) に向いています 通常 ソート / マージ結合よりも効率的に実行できます 1) 内部動作 ハッシュ結合は 以下のステップで行われます 1. 結合する 2 つの表を比較し 小さな表を選択する 2. 選択した小さな表の結合条件列にハッシュ関数を適用し PGA 内にハッシュ表を作成する ハッシュ表が PGA 内に収まらない場合は ハッシュ表の一部がディスク側の一時表領域に書き出れ パフォーマンスが低下します そのため 小さな表をもとにハッシュ表が作成される必要があります 3. もう一方の大きな表の結合条件列にハッシュ関数を適用しハッシュ表と比較する 同じハッシュ値の行があった場合は結合する この作業を行ごとに繰り返す 5-3

5 結合 < 実行 SQL> SELECT ename,dname FROM emp,dept WHERE emp.deptno = dept.deptno; 1 1 小さな表として DEPT 表を選択する 2DEPT 表の DEPTNO 列にハッシュ関数を適用し ハッシュ領域に格納する ( ハッシュ表の作成 ) 3 表がハッシュ領域に収まり切らない場合は 一時セグメントとしてディスクに書き出す 2 1 2 3 3 4 4 もう一方の EMP 表の DEPTNO 列にハッシュ関数を適用する その結果とハッシュ表を比較し 同じハッ シュ値の行があれば結合する 4 5 6 5-4

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

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

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

5 結合 < 実行 SQL> SELECT ename,dname FROM emp,dept WHERE emp.deptno = dept.deptno; 1 1 それぞれの表の結合条件列 (DEPTNO 列 ) をもとに行ソースをソートする 2 3 2 ソートされたそれぞれの行ソースを 結合条件をもとにマージする 4 5 6 5-8

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

5 結合 例 )EMP 表と DEPT 表を結合したときの実行計画を確認する /* 表の大部分の行を結合しているため ハッシュ結合が選択された */ SQL> SELECT ename,dname FROM emp,dept 2 WHERE emp.deptno = dept.deptno; 1 実行計画 ----------------------------------- Id Operation Name ----------------------------------- 0 SELECT STATEMENT * 1 HASH JOIN 2 TABLE ACCESS FULL DEPT 3 TABLE ACCESS FULL EMP ----------------------------------- 2 3 /* EMP 表の結合条件列である DEPTNO 列に索引を作成 */ SQL> CREATE INDEX idx_deptno ON emp(deptno); 索引が作成されました /* 索引を作成したことにより ソート / マージ結合が選択された */ SQL> SELECT ename,dname FROM emp,dept 2 WHERE emp.deptno = dept.deptno; 4 実行計画 --------------------------------------------------- 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 --------------------------------------------------- 結合条件列に索引が作成されたため ソート処理を省略できるようになった これにより ソート / マー ジ結合のコストがハッシュ結合を下回り ソート / マージ結合が選択されるようになった 5 6 <SORT JOIN> 結合条件列をもとにソートされたことを示します <MERGE JOIN> ソートされたそれぞれの行ソースが 結合条件列をもとにマージ結合されたことを示します 5-10