Oracle活用実践演習コース

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

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

Slide 1

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

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

PA4

PowerPoint プレゼンテーション

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

領域サイズの見積方法

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

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

Slide 1

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

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

PowerPoint プレゼンテーション

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

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

Microsoft PowerPoint - KeySQL50_10g_vlo2.ppt

PowerPoint プレゼンテーション

untitled

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

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

DB12.1 Beta HandsOn Seminar

Oracle Tuning Pack

橡実践Oracle Objects for OLE

Oracle Direct Seminar <Insert Picture Here> 効果的な集計処理ことはじめ 日本オラクル株式会社

Oracle Data Pumpのパラレル機能

プレポスト【問題】

问题集 ITEXAMPASS 1 年で無料進級することに提供する

橡ExCtrlPDF.PDF

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

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

ORACLE TUNING PACK 11G

Oracle9i

ORACLE PARTITIONING

Microsoft PowerPoint - J-S301167_idx_comp.ppt [互換モード]

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

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

標準化 補足資料

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

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

ハイウォーターマークを知る

Slide 1

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

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

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 Database 12cでのSQL*LoaderのExpress Modeによるロード

Chapter Two

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

早分かりS2Dao

Chapter Two

eラーニング資料 e ラーニングの制作目標 データベース編 41 ページデータベースの基本となる概要を以下に示す この内容のコースで eラーニングコンテンツを作成予定 データベース管理 コンピュータで行われる基本的なデータに対する処理は 次の 4 種類です 新しいデータを追加する 既存のデータを探索

Microsoft PowerPoint - 3-Forms-Others.ppt

<4D F736F F D204F C B838B82C B838B8EE88F878F912E646F6378>

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

ゲートウェイのファイル形式

D1印刷用.PDF

ゲートウェイ ファイル形式

KTest

リレーショナルデータベース入門 SRA OSS, Inc. 日本支社 Copyright 2008 SRA OSS, Inc. Japan All rights reserved. 1

BC4J...4 BC4J Association JSP BC4J JSP OC4J

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

PowerPoint Presentation

ゲートウェイのファイル形式

データベースアクセス

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

マニュアル訂正連絡票

Agenda

Oracle Advanced Compression:ディスクの節約とデータベースの高速化を可能にする包括的な圧縮機能

ユーザ デバイス プロファイルの ファイル形式

Microsoft Word - Android_SQLite講座_画面800×1280

_02-4.ppt

Copyright 2018 CO-Sol Inc. All Rights Reserved. 2 自己紹介 + 所属会社紹介 五十嵐一俊 ( いがらしかずとし ) Oracle Exadata の DBA 業務に従事 ORACLE MASTER Platinum 12c 保持 執筆記事 コーソル

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

PowerPoint プレゼンテーション

Microsoft PowerPoint - 05.pptx

MySQL Server 5.0 Load Data ベンチマーク

Oracle SQL Developerの移行機能を使用したOracle Databaseへの移行

Oracle XML DB によるスケーラビリティおよびパフォーマンス検証 - MML v.3.0

iNFUSE インフューズ

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

Oracle Database 11gにおけるパーティション化

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

Slide 1

mysql56_load_r2

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

IBM Cloud Social Visual Guidelines

DB 構造図 復習 :DB 設計のポイント 1 データ項目は重複して持たない 2 導出されるデータ項目は持たない 簡単な計算により容易に求まるもの 他のテーブルを検索すれば取り出せるもの 3 プログラム中にデータを持たない フ ロク ラム変更よりはテ ータ変更のほうが容易 DB 関連図 1 全てのテ

OracleDBA(パフォーマンスチューニング(SQL編) - コピー

APEX Spreadsheet ATP HOL JA - Read-Only

Microsoft PowerPoint - db03-5.ppt

PowerPoint -O80_REP.PDF

結合演算 ( 復習 ) データベース論 (9) R 社員番号 氏名麻生太郎安部晋三与謝野馨森喜朗 部門経理課営業課総務課営業課 S 部門経理課営業課総務課 電話 問合せ言語と SQL(2) R S 社員番号

KWCR3.0 instration

Oracle Real Application Clusters 10g: 第4世代

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

開発・運用時のガイド JDK8への移行に伴う留意点 [UNIX]

平成20年度成果報告書

Microsoft PowerPoint - advanced-2-olap.ppt [互換モード]

Slide 1

Transcription:

Oracle9i Oracle 実践研修 2 INDEX 活用 2007.10.18 1

カリキュラムの確認 インデックス使用の目的 0.5 時間 種類と特徴 1 時間 インデックスの使用状況とチューニングの基礎 2 時間 インデックスが使用される条件 0.5 時間 断片化と再作成 1 時間 チューニング ( 基本 ) 実習 1 時間 2

インデックス使用の目的 インデックス使用の目的 表の行に高速アクセスするため 問い合わせの高速化更新については その限りではない 3

インデックス使用の目的 インデックスの概要 Table EMPNO ENAME JOB MGR HIREDATE 1 7369 SMITH CLERK 7902 1980/12/17 2 7499 ALLEN SALESMAN 7698 1981/2/20 3 7521 WARD SALESMAN 7698 1981/2/22 4 7566 JONES MANAGER 7839 1981/4/2 5 7654 MARTIN SALESMAN 7698 1981/9/28 6 7698 BLAKE MANAGER 7839 1981/5/1 7 7782 CLARK MANAGER 7839 1981/6/9 8 7788 SCOTT ANALYST 7566 1987/4/19 9 7839 KING PRESIDENT 1981/11/17 10 7844 TURNER SALESMAN 7698 1981/9/8 11 7876 ADAMS CLERK 7788 1987/5/23 12 7900 JAMES CLERK 7698 1981/12/3 13 7902 FORD ANALYST 7566 1981/12/3 14 7934 MILLER CLERK 7782 1982/1/23 Index ENAME 11 ADAMS 2 ALLEN 6 BLAKE 7 CLARK 13 FORD 12 JAMES 4 JONES 9 KING 5 MARTIN 14 MILLER 8 SCOTT 1 SMITH 10 TURNER 3 WARD 4

インデックス使用の目的 インデックスの一般知識 一意索引と非一意索引 コンポジット索引 ( 複数列にまたがる索引 ) Null は索引化されない すでにデータがある状態でインデックスを作成する時 ソート領域を使用 (SORT_AREA_SIZE 一時表領域 ) 5

インデックス使用の目的 インデックスを作るとよいケース 大きな表で頻繁に検索される行の割合が 15% 未満の場合 複数の表の結合に使用される列に インデックスの候補列の値が比較的一意値の範囲が広い B*Tree 索引値の範囲が狭い ビットマップ索引 6

インデックス使用の目的 全表走査との比較 全表検索上から下まで インデックス検索インデックス部を検索し 見つかったレコードの ROWID で テーブルを検索する よって 小さい表ではインデックス検索より 全表検索が速い 7

インデックス使用の目的 更新処理とのトレードオフ インデックスは順番に並んでいる 新規のレコードがテーブルに Insert されると インデックスも更新される インデックスを多数持つテーブルでは 更新処理が重くなる 検索の速さをとるか 更新の速さをとるか 8

種類と特徴 B*Tree インデックス 1 9

種類と特徴 B*Tree インデックス 2 ブランチ ブロック下位レベルの索引ブロックを指す索引データが含まれる リーフ ブロックすべての索引対象のデータ値と 実際の行を検出するための ROWID が含まれる 10

種類と特徴 B*Tree インデックス 3 索引内のどの位置のレコード検索も 所要時間はほぼ同じ 自動的にバランスが保たれる 平均して すべてのブロックの 4 分の 3 が満たされる 完全一致や範囲検索など 広範囲な問合せに対して 優れた検索パフォーマンスを提供 挿入 更新および削除が効率的で 高速検索のためにキー順序が維持される 小さな表と大きな表のどちらでも優れているため 表のサイズが大きくなっても低下しない 11

種類と特徴 B*Tree インデックス 4 検索手順 ~Paula を検索する場合 ルート ブロックで x<paula<=y となる x を見つける Lu を選ぶ Lu のリンクをたどって ブランチ ブロック (Mo P Ph) に到達 Ph が >= Paula となる最小キー P を選ぶ P のリンクをたどって リーフ ブロック (Pablo Paula Paula Peter) に到達 このブロックで Paula を探す 見つかった場合は (KEY, ROWID) を戻す 12

種類と特徴 ビットマップインデックス 1 各キー値のビットマップを使用 Enterprise Editionだけで使用可 13

種類と特徴 ビットマップインデックス 2 大量データと非定型問合せを扱い 同時実行トランザクションのレベルは高くないデータ ウェアハウス アプリケーションに対して効果的 - 多くの種類の非定型問合せの応答時間が短縮 - 使用領域が実質的に縮小される - 機能の低いハードウェアでもパフォーマンスが劇的に向上 - パラレル DML とロードを効果的に実行 14

種類と特徴 ビットマップインデックス 3 大小の比較による問合せの対象とされる列には適さない AND OR NOT 等価問合せで有効 カーディナリティの低い列 ( 表内の行数に比べて個別値の数が少ない列 ) において 最も効果大 - 列の個別値の数が表内の行数の 1% より少ない場合 Yes/No のみとか A/B/C のどれかだけとか カーディナリティが高い列でも WHERE 句で複雑な条件に含まれることが頻繁にある場合 15

種類と特徴 ビットマップインデックス 4 MARITAL_STATUS REGION GENDER INCOME_LEVEL は カーディナリティの低い列 可能な値は MARITAL_STATUS REGION は 3 つ GENDER は 2 つ INCOME_LEVEL は 4 つ そのため これらの列にはビットマップ索引が有効 一方 CUSTOMER# はカーディナリティの高い列であるため 一意の B ツリー索引を使用する方が 検索が効率的 16

種類と特徴 ビットマップインデックス 5 Customer 101 102 103 104 105 106 ビットマップの各ビットはCUSTOMER 表の1 つの行に対応しており 各ビットの値は対応する行の値に依存 Customer=101はREGIONがeastなのでビットマップREGION='east' のビットマップは1 REGION の値がeast の行は他にないため ビットマップREGION='east' の残りのビットは0 17

種類と特徴 ビットマップインデックス 6 SELECT COUNT(*) FROM CUSTOMER WHERE MARITAL_STATUS = 'married' AND REGION IN ('central','west'); 結果が "1" のレコードが 18

種類と特徴 ビットマップインデックス 7 Null Null 値があってもインデックスができるつまり is Null という条件でもインデックスが使用される B*Tree と Bitmap の比較 19

種類と特徴 B*Tree と Bitmap の比較 20

K2:2 種類の値だけ取るカラム (1 2) K3:3 種類の値だけ取るカラム (1 2 3) K1K:1000 種類の値を取るカラム K500K:500000 種類の値を取るカラム 21

B*Tree はだいたい一定 Bitmap は 値の種類が大きくなるにつれて 大きくなる 22

B*Tree はだいたい一定 Bitmap は 値の種類が大きくなるにつれて 大きくなる 23

24

25

26

27

28

29

30

種類と特徴 インデックス ( その他 1) コンポジット索引 複数列につける B*Tree でも Bitmap でも作成可 31

種類と特徴 その他インデックス 2 ファンクション ベース索引 ファンクション 式の値が格納される CREATE INDEX idx ON table_1 (a + b * (c - 1)); 次のような問合せを処理するときに この索引を使用できる SELECT a FROM table_1 WHERE a + b * (c - 1) < 100; B*Treeでも Bitmapでも作成可 32

種類と特徴 その他インデックス 3 逆キー索引 (B*Tree のみ ) 列の順序は保ちながら 索引の各列 (ROWID を除く ) のバイトを逆にする 索引に対する変更が少数のリーフ ブロックに集中する Oracle9i Real Application Clusters では この機能によりパフォーマンスの低下を防ぐことができる キーを逆にすることにより 挿入値は索引のリーフ キー全体に分散される レンジスキャン使用不可 33

種類と特徴 索引構成表 索引構成表のデータは主キーによるソート形式で B ツリー索引構造に格納される ( 通常はデータが順不同のコレクションとして格納 ) B ツリーの各索引エントリには 索引構成表の行の主キー列値のみでなく 非キー列値も格納される 34

種類と特徴 索引構成表イメージ 35

作成 インデックス作成 1 B*Tree CREATE INDEX インデックス名 ON テーブル名 ( カラム名 ) TABLESPACE テーブルスペース名 [STORAGE (INTIAL xx,next xx,pctfree yy,pctused yy]); Bitmap CREATE BITMAP INDEX. xx: サイズ yy: 割合 36

作成 インデックス作成 ( 補足 1~ テーブルも同じ ) INITIAL NEXT ローカル管理では重要ではない ディクショナリ管理では重要 PCTUSED 非推奨 空き領域自動管理では不要 空き領域手動管理では指定 非推奨 37

作成 インデックス作成 ( 補足 2) 38

作成 インデックス作成 ( 補足 3) 39

作成 インデックス作成 2 例 emp 表の ename 列に対して emp_ename という名前の索引を作成 CREATE INDEX emp_ename ON emp(ename) TABLESPACE users STORAGE (INITIAL 20K NEXT 20k PCTINCREASE 75) PCTFREE 0; 索引に記憶域オプション (INITIAL や NEXT など ) を指定しない場合 デフォルトの表領域または指定された表領域のデフォルトの記憶域オプションが自動的に使用される ( ディクショナリ管理の場合 ) 領域見積 テキスト P46 参照 40

作成 例 インデックス作成 3 一意索引を作成するには CREATE UNIQUE INDEX 文を使用する CREATE UNIQUE INDEX dept_unique_index ON dept (deptno,dname) TABLESPACE indx; 41

インデックスの使用状況 explain plan 準備 %ORACLE_HOME %\rdbms\admin\utlxplan.sql を実行して PLAN_TABLE を作成する オプティマイザが選択した実行計画 ( どのように実行するか Index を使うか全件検索か ) を表示 実習 Excel シート 42

インデックスの使用状況 SQL Trace アプリケーションが実行する SQL 文の効率を正確に評価 EXPLAIN PLAN の評価も同時にわかる TKPROF によって 判読可能なフォーマットに出力する 実習 Excel シート 43

インデックスの使用状況 自動トレース 実習 Excel シート その他のツール Oracle Trace コマンドラインで otrccol を実行 10g で廃止 44

インデックスが使用される条件 どんな場合にどのインデックス が使用されるか 1 SQL の書き方の問題 索引の値と NULL の比較や NOT を使わない 複合索引の先頭の列がないと複合索引は利用されない 索引には計算をさせない LIKE 句を使った中間一致 後方一致検索 45

インデックスが使用される条件 どんな場合にどのインデックス が使用されるか 2 オプティマイザ SQL 文をどう実行するか Oracle が判断し実行計画を作る ~ どのインデックスを使う か 全表走査をするか ルールべースとコストベースがある RBO; アクセスパスと優先順位による CBO; 統計に基づきコストの低いもの インデックスが使われないケースがある 10g で廃止 46

インデックスが使用される条件 ヒント select /*+ INDEX(test_emp test_emp_idx) */ count(*) from test_emp where deptno=99 and empno!= 1111; ALL_ROWS; スループットを優先した実行計画を選択させる FIRST_ROWS; 応答時間を優先させた実行計画を選択させる FULL(table); 全表走査を選択させる INDEX(table index); 指定された表に対して索引走査を選択させる INDEX_DESC(table index); 索引走査を降順に行う INDEX_COMBINE(table index); ビットマップインデックスを選択させる 47

断片化と再作成 断片化 1 1. 索引を使用しつづけると索引の構造バランスが崩れる 2. 領域が断片化する 3. パフォーマンスダウン 4. 索引の定期的な監視と保守が必要 48

断片化と再作成 断片化 2 分析 ANALYZE INDEX 索引名 VALIDATE STRUCTURE; select * from index_stats; LF_ROWS に対する DEL_LF_ROW の割合が高い場合 再作成を検討する 目安は 5% 49

断片化と再作成 インデックスの再作成 1. DROP INDEX CREATE INDEX 2. ALTER INDEX 索引名 REBUILD (10g)ALTER INDEX 索引名 COALESCE 実習 Excel シート 50

チューニング実習 ( 予備 ) 余裕があれば. 1. navis3_data_insert2.sqlでデータinsert 2. navis3_tuning1.sqlをチューニング 3. navis3_tuning3.sql をチューニング 51

断片化と再作成 最後に OTN(http://otn.oracle.co.jp) を活用する! iseminar(http://www.oracle.co.jp/direct/ iseminar.html) を活用する! 52