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

Similar documents
untitled

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

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

Slide 1

PA4

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

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

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

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

Slide 1

untitled

Agenda Oracle Database の概要 Oracle Databaseの内部構造 Oracle Databaseの処理の仕組み Oracle Database の管理 メモリの管理 領域の管理 Oracle Database の運用ポイント ( 概要 ) データベースの起動と停止 デー

Slide 1

Enterprise Manager 10gによるデータベース・パフォーマンスチューニング

スライド 1

Oracle Web CacheによるOracle WebCenter Spacesパフォーマンスの向上

ORACLE TUNING PACK 11G

以下の事項は 弊社の一般的な製品の方向性に関する概要を説明するものです また 情報提供を唯一の目的とするものであり いかなる契約にも組み込むことはできません 以下の事項は マテリアルやコード 機能を提供することをコミットメント ( 確約 ) するものではないため 購買決定を行う際の判断材料になさらな

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

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

Oracle Direct Seminar <Insert Picture Here> 試験対策ポイント解説 Bronze DBA11g 日本オラクル株式会社

Null

今さら聞けない!?大規模テーブルのパフォーマンスチューニング ~パーティショニング~

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

untitled

PowerPoint Presentation

Slide 1

アジェンダ ORACLE MASTER Oracle Database 11g 概要 Gold DBA11g 試験紹介 ポイント解説 無償技術サービス Oracle Direct Concierge SQL Server からの移行アセスメント MySQL からの移行相談 PostgreSQL から

意外と簡単!? Oracle Database 11g -バックアップ・リカバリ編-

ORACLE PARTITIONING

実践!Oracle Enterprise Manager を使用した 簡単データベース管理 日本オラクル株式会社製品事業統括テクノロジー製品事業統括本部シニアセールスコンサルタント海老坂恵

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

Null

Agenda はじめに 目的とゴール Part1の振り返り AWRを使用した性能分析 AWR 概要 AWRに格納される情報 AWR レポートにおける分析アプローチ AWR 確認ポイント Case Study AWRとアーキテクチャの関係 まとめ Part2のポイント まとめ Copyright 20

Slide 1

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

Microsoft PowerPoint _SQLDeveloper.ppt [互換モード]

以下の事項は 弊社の一般的な製品の方向性に関する概要を説明するものです また 情報提供を唯一の目的とするものであり いかなる契約にも組み込むことはできません 以下の事項は マテリアルやコード 機能を提供することをコミットメント ( 確約 ) するものではないため 購買決定を行う際の判断材料になさらな

目次 はじめに... 2 無料トライアルのサインアップ方法... 3 トライアル環境へのアクセス 参考情報

自己管理型データベース: 自動SGAメモリー管理

Slide 1

Oracle Tuning Pack

Slide 1

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

Slide 1

Oracle Database 12c

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

Oracle Direct Seminar <Insert Picture Here> システム管理者必見! ~ 乱立する DB と OS のユーザー / 権限管理の改善方法 日本オラクル株式会社 Fusion Middleware 事業統括本部 Security SC 部大森潤

Oracle Direct Seminar <Insert Picture Here> 体感型セミナー SQL をクイズ感覚で学ぶ! SQL クイズ 日本オラクル株式会社

How to Use the PowerPoint Template

<Insert Picture Here> 30 分で理解する ORACLE MASTER 日本オラクル株式会社 Oracle University

Microsoft Word - nvsi_050090jp_oracle10g_vlm.doc

Oracle Data Pumpのパラレル機能

以下の事項は 弊社の一般的な製品の方向性に関する概要を説明するものです また 情報提供を唯一の目的とするものであり いかなる契約にも組み込むことはできません 以下の事項は マテリアルやコード 機能を提供することをコミットメント ( 確約 ) するものではないため 購買決定を行う際の判断材料になさらな

Oracle on Windows

Agenda Overview 災害対策方法検討 実現可能となるソリューション リアルタイム性 運用管理面に優れたOracle Data Guard 柔軟な構成を可能にするOracle GoldenGate Oracle 標準機能で利用可能な基本スタンバイ データベース 2

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

以下の事項は 弊社の一般的な製品の方向性に関する概要を説明するものです また 情報提供を唯一の目的とするものであり いかなる契約にも組み込むことはできません 以下の事項は マテリアルやコード 機能を提供することをコミットメント ( 確約 ) するものではないため 購買決定を行う際の判断材料になさらな

Oracle活用実践演習コース

Microsoft Word - PDFHS _ doc

PowerPoint Presentation

Oracle on Windows

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

Silk Central Connect 15.5 リリースノート

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

スライド 1

Oracle Real Application Clusters 10g: 第4世代

プレポスト【問題】

PHP 開発ツール Zend Studio PHP アフ リケーションサーハ ー Zend Server OSC Tokyo/Spring /02/28 株式会社イグアスソリューション事業部

Oracle Warehouse Builder: 製品ロードマップ

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

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

PowerPoint Presentation

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

サポートエンジニアが語るパフォーマンス問題の原因調査とチューニング 日本オラクル株式会社データベーステクノロジーサポート本部 Principal Technical Support Engineer 田島教子

アーカイブ機能インストールマニュアル

ソフト活用事例③自動Rawデータ管理システム

MaxGauge_診断分析プロセス

これは何? ORACLE の内部状態を示す情報の一つである 待機イベントについて解説します 待機イベントを知ることで 一歩進んだパフォーマンスチューニングが出来ます また 待機イベントという切り口を通して ORACLE のアーキテクチャに対する理解を深めていきます なお ORACLE のバージョンは

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

OWI(Oracle Wait Interface)の概要

Title Slide with Picture

Slide 1

平成20年度成果報告書

iNFUSE インフューズ

意外と簡単

Slide 1

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

Oracle Direct 無償支援サービス ヒアリング・シート利用手順

アジェンダ Oracle サーバの見える化はなぜ必要? WebSAMApplicationNavigator で簡単 安心に監視を実現 Oracle 監視の導入コスト 2 NEC Corporation 2009

ログ取得についてのお願い お客様のご都合でログの内容を修正してご提供いただいた場合には 正確な調査ができかねる場合が ございます ログの内容は修正をせずにそのままお送りいただけますようお願い致します LifeKeeper ログ取得方法 ログ採取にはサーバへの多少の負荷が予想されますので 比較的に負荷

Oracle DatabaseとIPv6 Statement of Direction

アーカイブ機能インストールマニュアル

IceWall Remote Configuration Managerのご紹介

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

PowerPoint プレゼンテーション

CLUSTERPRO MC ProcessSaver 1.2 for Windows 導入ガイド 第 4 版 2014 年 3 月 日本電気株式会社

Microsoft Word - J-jdev_dba_db_developers.doc

Oracle SQL Developer Data Modeler

Oracle Data Pumpのパラレル機能

Transcription:

Oracle Direct Seminar <Insert Picture Here> 今さら聞けない!? パフォーマンス チューニング入門 日本オラクル株式会社

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

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

パフォーマンス チューニングに必要なこと要件定義 設計段階から意識すること 要件定義 設計段階からパフォーマンスを意識することが重要 分以内 等の要件を決定 設計 開発 本番稼動後の格段階で 各担当者がパフォーマンスを考慮 メモリが足りなかった! サーバーを停止してメモリを追加しなきゃ 後から実施するチューニング作業は 労力とコストに対して効果が得にくい傾向にある チューニングにかかるコストと利益 結合のパフォーマンスをあげるために表を 1 つにしよう でもアプリケーションも変えないと コスト アプリケーションの変更が必要になったので また開発者に依頼しなきゃ 設計開発本番 チューニングに よって得られる利益 Copyright 2010, Oracle. All rights reserved. 4

パフォーマンス チューニングに必要なことシステム全体からボトルネックを特定して改善すること システム全体を考慮して ボトルネック箇所を特定することが必要 Web システムが複雑化するにつれ 問題の切り分けは困難になりがち ボトルネック箇所に対して 適切なチューニングを行う必要がある アプリケーションやネットワークに問題があるのにデータベースをチューニングしても効果はない 処理に時間がかかるなぁ ネットワークが狭い? Web システム メモリ CPU が足りない? Web サーバー アプリケーションサーバー Java コードの問題? データベース インターネット ファイアーウォール HTML HTML Java SQL 接続待ち? リクエストが十分受け付けられない? SQL の問題? DB の設定? Copyright 2010, Oracle. All rights reserved. 5

パフォーマンス チューニングに必要なことデータベース内のボトルネックを特定して改善すること データベース内のボトルネックを特定し ボトルネック箇所を改善 SELECT A アプリケーションの SQL 文の問題? メモリの利用効率は? サーバープロセス 共有プール ライブラリ キャッシュ SQL 文と実行計画 ディクショナリ キャッシュデータ ディクショナリ情報 メモリ (SGA) DB バッファ キャッシュ 必要以上にに大量のデータを読んでいないか? A B メモリの割り当てが不適切? REDO ログ バッファ 変更履歴 A B COMMIT アクセスの集中? DBWn CKPT LGWR データの断片化? 幅広い知識が必要なのでチューニングは管理作業の中でも 一番難しいといわれることも A データ ディクショナリ データ ファイル ディスク I/O が遅い? 制御ファイル REDO ログ ファイル Copyright 2010, Oracle. All rights reserved. 6

パフォーマンス チューニングのポイント パフォーマンス チューニングのポイント パフォーマンス要件を定義し 要件を満たすような設計 開発 運用をすること ボトルネック箇所を特定し ボトルネックに応じた改善策をとること サーバの性能以上の処理を行うことはできない 処理待ちが発生している部分 ( ボトルネック ) に対して 待機を減らすことが重要 ボトルネックになりやすい個所 メモリ割り当ての改善 ディスク I/O( ディスクからの読み込み ) の改善 実行される SQL 文の効率化 Copyright 2010, Oracle. All rights reserved. 7

Agenda パフォーマンス チューニングとは ボトルネック箇所の特定 代表的なチューニング項目 メモリ割り当てのチューニング ディスク I/O のチューニング SQL 文のチューニング CPU の問題? マシンの CPU 不足? 重い処理? メモリ不足? メモリ増設すべき? ディスク I/O? 読み込みが多い? 書き込みが多い? Copyright 2010, Oracle. All rights reserved. 8

ボトルネック箇所の特定方法 データベース内の統計情報を収集 メモリ上の情報をSELECT 文で検索 Statspackによる必要な情報の一括収集 Oracle Enterprise Managerの自動診断機能の活用 OS の情報 CPU 使用率 メモリ使用率 実行計画の確認 SQL トレース EXPLAIN PLAN メモリ上の処理傾向 Top 5 Timed Events ~~~~~~~~~~~~~~~~~~ % Total Event Waits Time (s) Ela Time ---------------------------------- ------------ ----------- -------- db file sequential read 51,925 8,172 91.49 log file sync 29,367 386 4.32 db file parallel write 614 172 1.93 CPU time 141 1.58 log file parallel write 20,158 53.59 V$ 表の検索 Statspack Enterprise Manager Copyright 2010, Oracle. All rights reserved. 9

ボトルネック箇所の特定方法 Statspack による統計情報の取得 Statspack(STATISTICS PACK) パフォーマンス チューニングに役立つ情報を収集し レポート形式で表示するツール ある期間で Oracle が行なった処理の統計情報を収集 メモリのキャッシュヒット率 待ち時間の内訳 トランザクション統計 処理に時間のかかった SQL 文 データベース内部で どんな処理が行われどんな待機が生じているか検出 時間 さまざまな処理 ( アプリケーションの実行 / データのロードなど ) 10:00 11:00 スナップショット A A 時点の統計データ取得 スナップショット B B 時点の統計データ取得 B-A の値 (2 つの時点の統計データの差分 ) をもとに その間のパフォーマンス統計データを出力 Copyright 2010, Oracle. All rights reserved. 10

ボトルネック箇所の特定方法 Statspack の結果レポート例 Copyright 2010, Oracle. All rights reserved. 11

ボトルネック箇所の特定方法 Enterprise Manager による自動情報取得 Enterprise Manager ブラウザからアクセスするデータベース管理ツール GUI の画面から負荷状況をグラフィカルに表示 ボトルネック項目をリスト Copyright 2010, Oracle. All rights reserved. 12

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

メモリ割り当てのチューニング メモリ チューニングの重要性 Oracle Database では データの検索 更新などの処理をメモリ上で実行 メモリに必要な情報をキャッシュし 複数の処理で共有 メモリが不足すると SQL の解析やディスクからの読み込みが多発しボトルネックになる可能性 プログラム SQL 文 メモリ上に実行計画があるか ない 実行計画生成 メモリが効率的に使われることによって 解析時間やディスク I/O を減らすことが可能! ある データの検索 メモリ上にデータがキャッシュされているか ある データの検索 ない ディスクからデータを読み込み Copyright 2010, Oracle. All rights reserved. 14

Oracle が使用するメモリの種類 Oracle が使用する 2 種類のメモリ SAG: プロセスが共有して使うメモリ ( ユーザー間で共有 ) PGA: プロセスごとに固有に持つメモリ SGA プロセスが共有して使う情報一度メモリ上に読み込んだデータをキャッシュして ユーザー間で共有 共有プール ライブラリ キャッシュ DB バッファ キャッシュ REDO ログ バッファ ディクショナリ キャッシュ サーバープロセス PMON PGA DBWn PGA CKPT PGA SMON PGA LGWR PGA PGA プロセスごとの情報 ユーザーの情報 実行中の処理情報 ソートなどの処理 A データ ファイル 制御ファイル REDOログ ファイル Copyright 2010, Oracle. All rights reserved. 15

Oracle が使用するメモリの種類 SGA(System Global Area) キャッシュする情報によって いくつかのコンポーネントに分類 共有プール :SQL の解析情報 データベース バッファ キャッシュ : ユーザーが使うデータ ブロック REDO ログ バッファ : 変更履歴情報 データ ファイルから読み込んだデータ ブロック SGA 変更履歴情報 SQL の実行計画報 共有プール ライブラリ キャッシュ DB バッファ キャッシュ REDO ログ バッファ 解析に必要なデータディクショナリ情報 ディクショナリ キャッシュ A A B サーバープロセス PMON PGA DBWn PGA CKPT PGA SMON PGA LGWR PGA PGA A 制御ファイル REDOログ ファイル データ ファイル Copyright 2010, Oracle. All rights reserved. 16

メモリ不足によって生じる問題 SGA( 共有プール DB バッファ キャッシュ ) のメモリ不足 共有プールの不足 メモリが不足すると 一度読み込んだデータ ディクショナリ情報や一度立てた実行計画がフラッシュ ( 消去 ) される 何度もデータ ディクショナリの情報をディスクに読みに行く必要 キャッシュした実行計画を使いまわせず 再解析する必要 DB バッファ キャッシュの不足 メモリが不足すると 一度キャッシュしたブロックをファイルに書き出し 次回アクセス時 再度ディスクからブロックを読み込む必要 PGA のメモリ不足 メモリ内でソート処理ができず ディスク ソートが発生 ソート 結合などの処理速度が大きく低下 メモリが不足しないように メモリの使用率を監視し 不足している場合にはメモリの配分を変更する必要がある Copyright 2010, Oracle. All rights reserved. 17

メモリ使用状況の調査 メモリ使用状況の調査 メモリ上に必要な情報があった割合 =キャッシュ ヒット メモリ上に必要な情報がなかった割合 =キャッシュ ミス キャッシュ ミス率が高い場合にはメモリの割り当てを増やす ライブラリ キャッシュのキャッシュ ミス率 SELECT (sum(reloads)/sum(pins))*10 FROM v$librarycache; キャッシュミス率が 1% を上回る場合 共有プールの値を大きくする データベース バッファ キャッシュのキャッシュ ヒット率 physical reads db block gets + consistent gets SELECT value FROM v$sysstat WHERE name='physical reads'; キャッシュ ヒット率が 90% を下回る場合 データベース バッファ キャッシュの値を大きくする ディクショナリ キャッシュのキャッシュ ミス率 SELECT (sum(getmisses)/sum(gets))* 100 FROM v$rowcache; キャッシュミス率が 15% を上回る場合 共有プールの値を大きくする 共有プール ライブラリ キャッシュ ディクショナリ キャッシュ SGA DB バッファ キャッシュ A REDO ログ バッファ A B Copyright 2010, Oracle. All rights reserved. 18

メモリの設定方法 Oracle 8i までの手動管理 従来は 管理者がメモリ コンポーネントごとにサイズを指定 各コンポーネントの特性を理解して割り振る必要 PGA はソート 結合など 処理ごとに使用可能メモリを細かく設定 処理によって必要なメモリ量が変わる場合には設定が難しい例 ) 日中は OLTP 夜はバッチ 初期化パラメータ ファイル SHARED_POOL_SIZE=500M DB_CACHE_SIZE=1000M LOG_BUFFER=50M SORT_AREA_SIZE=5M HASH_AREA_SIZE=10M サーバープロセス PGA メモリ (SGA) 共有プール DBバッファ REDOログ キャッシュ バッファ 500M 1000M 50M DBWn PGA CKPT SMON LGWR PGA PGA PGA Copyright 2010, Oracle. All rights reserved. 19

メモリの設定方法 Oracle Database9i および 10g からの自動管理 Oracle9i 以降 PGA の自動管理 PGA の総サイズを PGA_AGGREGATE_TARGET 指定 Oracle Database10g 以降 SGA の自動管理 SGA の総サイズを SGA_TARGET で指定 指定されたサイズの中で 必要に応じて各コンポーネントのメモリを割り振り 負荷に応じて 運用中も自動的にサイズが調整され 最適化される 初期化パラメータ ファイル PGA_AGGREGATE_TARGET =1G SGA_TARGET=2G 1G サーバープロセス PGA メモリ (SGA) 共有プール DBバッファ REDOログ キャッシュ バッファ 500M 1000M 50M DBWn PGA 2G CKPT SMON LGWR PGA PGA PGA Copyright 2010, Oracle. All rights reserved. 20

メモリの設定方法 Oracle Database 11g からの自動管理 Oracle11g 以降メモリの自動管理 Oracle が使用するメモリの総サイズを MEMORY_TARGET で指定 割り当てられたサイズの中で 必要に応じて PGA や各コンポーネントのメモリを自動的に割り振り 負荷に応じて 運用中も自動的にサイズが調整され 最適化される 初期化パラメータ ファイル MEMORY_TARGET=3G 3G メモリ (SGA) 共有プール DBバッファ REDOログ キャッシュ バッファ 500M 1000M 50M サーバープロセス PGA DBWn PGA CKPT SMON LGWR PGA PGA PGA Copyright 2010, Oracle. All rights reserved. 21

メモリの設定方法メモリ アドバイザ メモリ アドバイザ Oracle Enterprise Manager の画面から メモリの割り当て状況や最適値を確認することが可能 バッファ キャッシュのサイズを変更すると 読込み量がどう変わるか Copyright 2010, Oracle. All rights reserved. 22

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

ディスク I/O のチューニング ディスク I/O のチューニング ポイント ディスク I/O の速度は ディスクの性能に依存 Oracle Database で可能なチューニングは 読み込みを効率化すること ディスク I/O のチューニング ポイント データ読み込みの効率化 索引 パーティショニング 効率的な領域の使用 共有プール メモリ (SGA) DB バッファ キャッシュ A B REDO ログ バッファ 変更履歴 A B COMMIT 断片化の解消 DBWn CKPT LGWR データ ファイル 制御ファイル REDO ログ ファイル Copyright 2010, Oracle. All rights reserved. 24

データ読み込みの効率化効率的なデータ読み込みの必要性 大量のデータをメモリ上に読み込む処理による悪影響 メモリの圧迫 ディスク I/O の増加 大量のデータを処理することによる CPU 使用 効率的なデータ読み込みが必要 データの読み込み方法 全表走査 ( フル スキャン ) 表の全てのブロックを読み込んで検索対象のデータを探す方法 索引操作 ( インデックス スキャン ) 索引で検索対象の行データが格納されたブロックを特定し 該当ブロックのみを読み込んで検索する方法 共有プール データ ファイル メモリ (SGA) DB バッファ キャッシュ A DBWn CKPT 制御ファイル REDO ログ バッファ 変更履歴 A B COMMIT LGWR REDO ログ ファイル Copyright 2010, Oracle. All rights reserved. 25

データ読み込みの方法全表走査と索引走査 全表走査 表のすべてのブロックをメモリに読み込み 該当データを検索 表が小さい場合 検索対象の割合が多い場合に効果的 索引走査 共有プール 索引を使って検索対象のデータが格納されたブロックを特定して読み込む 表が大きい場合 検索対象の割合が尐ない場合に効果的 更新が多い表には不向き メモリ (SGA) DB バッファ キャッシュ メモリ (SGA) REDOログ 共有プール DBバッファ REDOログ バッファ キャッシュ バッファ A~ M~ どのデータにも 3 ブロックの索引アクセス + 対象データのブロック ( 計 4 ブロック ) でアクセス可能 全表走査 索引走査 A~ F~ M~ S~ Tanaka Suzuki Baba Kawada Abe Yoshida Okubo Hayashi Inoue Saito Morita Nakata すべてのブロックを Fujita Hirota メモリに読み込んで Kubota Ueda 対象データを検索 Tanaka Suzuki Baba Kawada Abe Hayashi Morita Nakata Yoshida Inoue Fujita Kubota Okubo Saito Hirota Ueda Abe rowid Baba rowid Endo rowid Fujita rowid Hirota rowid Kubota rowid Morita rowid Nakata rowid Okubo rowid Suzuki rowid Tanaka rowid Yoshida rowid Copyright 2010, Oracle. All rights reserved. 26

データ読み込みの効率化索引を使ったチューニング 索引に関するチューニング 最適な索引タイプの選択 B-tree 索引 ビットマップ索引 逆キー索引 複合索引 索引構成表 ファンクション索引 データの偏りの解消 ヒストグラムの作成 索引のメンテナンス 断片化の解消 索引の再構築 ルートブロック G よりも前 Abe rowid Baba rowid ブランチブロック M よりも前 リーフブロック ( G ) 1 1 1 1 1 1 2 2 2 2 2 3 B ツリー索引 Fujita rowid Hirota rowid 親コード ( M ) G 以降 Sよりも前 複合索引 分類 A A A B B C A A B C C A M 以降 ( S ) Morita rowid Nakata rowid 種別 あ い う あ え あ あ う あ あ い い 索引を使ったチューニングの詳細は以下の資料で説明しています 実践!! パフォーマンス チューニング 索引チューニング編 S 以降 Suzuki rowid Tanaka rowid ROW ID ROW ID ROW ID ROW ID ROW ID ROW ID ROW ID ROW ID ROW ID ROW ID ROW ID ROW ID 100 ビットマップ索引 ROWID 男女 ROWID1 1 0 ROWID2 0 1 ROWID3 1 0 ROWID4 0 1 ROWID5 1 0 複合構成表 Suzuki 東京 20000 キー列 非キー列 Copyright 2010, Oracle. All rights reserved. 27

データ読み込みの効率化索引の問題点 索引検索でもパフォーマンスが上がらないケース 表サイズが大きく 検索対象データも多い場合 索引と表に大量のアクセスが発生するため パフォーマンスがあがらない 4 月 1 日のデータを検索したい 四半期ごとの売上データを集計したい 大量の索引読み込みが行われる検索では DISK I/O がボトルネックに 索引は万能ではない Copyright 2010, Oracle. All rights reserved. 28

データ読み込みの効率化パーテショニングを使った効率化 パーティショニング機能とは 大きな表や索引をデータベース内部で複数の領域に分割して管理するしくみ 検索範囲をパーティション単位に絞ることができるため 効率的にデータを読み込むことが可能 ユーザやアプリケーションからは一つの表に見える パーティショニングの詳細は以下の資料で説明しています 実践!! 大規模データベース管理 - パーティション基本編 - 通常の 1 つの表 パーティション化された表 4 月の売り上げは? 4 月の売り上げは? 1 月 4 月 2 月 5 月 3 月 6 月 内部的に表を分割 検索したいデータが一部でも 表全体または索引を利用してアクセス各種メンテナンス作業も表全体に影響が及んでしまう 検索したいデータが格納されている パーティションにのみアクセス 各種メンテナンス作業もパーティション単位で実施可能 Copyright 2010, Oracle. All rights reserved. 29

データ読み込みの効率化索引検索とパーティション検索の比較 有効なケース 索引が有効なケース 検索対象が尐ない場合 パーティショニングが有効なケース 表が大きい場合 検索対象が多い場合 表 索引 索引検索 パーティション検索 表 該当パーティションのみにアクセス 検索時間の比較 各サイズの表に対して 150,000 レコード検索 表サイズが大きくなればなるほどパーティションが有効 4GB 2GB 1GB 6.3 3.5 1 13.9 27.1 62.7 Partition Non-Partition 0 10 20 30 40 50 60 70 相対時間 ( 実際の処理時間に任意の数を掛けています ) Copyright 2010, Oracle. All rights reserved. 30

効率的な領域の使用断片化により起こる問題 運用中のデータ追加 削除 更新により 断片化が発生 行データの削除によるブロック内の空き領域 行データの更新に伴うデータの増加による行移行 データの追加 削除による 索引の断片化 使用領域の増加 読み込むブロックの増加によるパフォーマンス低下 断片化行データの削除により ブロック内に空きができるブロックごと読み込むので 効率が悪い 行データ 行データ 行データ 削除 行データ 行データ 行データ 行データ 空き領域 行データ 行データ 行データ 行データ 行データ 行データ 行データ 行データ 行データ行データ行データ行データ行データ行データ 行移行更新時に行データのサイズが増え 他のブロックにデータが移ること検索時に移行前のブロックも読むので効率が悪い 更新 ( 空きがあれば同じブロック内で領域確保 ) 更新 ( 空きがなければ別のブロックに移動 ) 行データ Copyright 2010, Oracle. All rights reserved. 31

効率的な領域の使用断片化の診断と解決 従来の断片化の診断と解消 ANALYZEコマンドで分析 Export/Import 等でデータを入れなおす Enterprise Manager による断片化の診断と解消 セグメント アドバイザ機能により 断片化している領域を特定 セグメントを縮小する 索引の再構築 ( 再作成 ) セグメント アドバイザ Copyright 2010, Oracle. All rights reserved. 32

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

SQL 文の処理ステップ SQL 文の処理ステップ 発行されたSQL 文の解析 ( パース ) 同一 SQL 文がメモリ上に存在すれば その結果を使ってすぐに実行 同一 SQL 文がメモリ上に存在しなければ 解析処理を行う 解析処理 : オプティマイザが最適な実行計画を検討 索引を利用するか 全表走査するか 複数表を結合する場合にどの順番で どの結合方法を使うか SQL 文 プログラム 結果 メモリ上に実行計画があるか ある SQL の実行 オプティマイザが効率的な実行計画を立てるには? ない オプティマイザ実行計画生成 実行計画が再利用されるには? 実行計画生成 Copyright 2010, Oracle. All rights reserved. 34

参考 SQL 文の実行計画実行計画例 オプティマイザがSQL 文ごとに 最適な実行計画を立てる SELECT last_name,department_name FROM employees JOIN departments USING (department_id); ------------------------------------------------------------------------------------ Id Operation Name Rows Bytes Cost (%CPU) ------------------------------------------------------------------------------------ 0 SELECT STATEMENT 106 2862 6 (17) 1 MERGE JOIN 106 2862 6 (17) 2 TABLE ACCESS BY INDEX ROWID DEPARTMENTS 27 432 2 (0) 3 INDEX FULL SCAN DEPT_ID_PK 27 1 (0) * 4 SORT JOIN 107 1177 4 (25) 5 TABLE ACCESS FULL EMPLOYEES 107 1177 3 (0) SELECT last_name,department_name FROM employees JOIN departments USING (department_id) WHERE department_id=10; ------------------------------------------------------------------------------------------ Id Operation Name Rows Bytes Cost (%CPU) ------------------------------------------------------------------------------------------ 0 SELECT STATEMENT 1 27 2 (0) 1 NESTED LOOPS 1 27 2 (0) 2 TABLE ACCESS BY INDEX ROWID DEPARTMENTS 1 16 1 (0) * 3 INDEX UNIQUE SCAN DEPT_ID_PK 1 0 (0) 4 TABLE ACCESS BY INDEX ROWID EMPLOYEES 1 11 1 (0) * 5 INDEX RANGE SCAN EMP_DEPARTMENT_IX 1 0 (0) Copyright 2010, Oracle. All rights reserved. 35

参考 SQL 文の実行計画実行計画の確認方法 実行計画を確認する方法 SQL*PLUSのAUTOTRACEコマンド Explain plan for <SQL> SQLトレース V$SQL 及びV$SQL_PLAN(9i~) Enterprise Manager (10g~) 実行計画の調べ方 (SQL*Plus の AUTOTRACE 機能 ) 1. SYSユーザでPLUSTRACEロールを作成し SQLを実行するユーザに付与する SQL> @%ORACLE_HOME% sqlplus admin plustrce.sql SQL> GRANT plustrace TO scott; 2. SQLを実行するユーザで実行計画を保存するための表 (PLAN_TABLE) を作成する SQL> connect scott/tiger SQL> @%ORACLE_HOME% rdbms admin utlxplan.sql 3. AUTOTRACE 機能を ON にし SQL 文を実行する SQL> SET AUTOTRACE ON SQL> SELECT... Copyright 2010, Oracle. All rights reserved. 36

SQL 文の実行計画とパフォーマンス効率的な実行計画を立てるためのポイント コーディング ルールの統一 SELECT name FROM emp; SELECT name FROM EMP; 大文字 / 小文字の違い SELECT name FROM emp; スペース / 改行の違い バインド変数の利用 SELECT name FROM emp WHERE id = 1023 SELECT name FROM emp WHERE id = 3074 値が異なる variable b1 number begin :b1 := 300; バインド変数 :SQLの条件値を変数化したもの end; / SELECT name FROM emp where id = :b1; Copyright 2010, Oracle. All rights reserved. 37

SQL 文の実行計画とパフォーマンス実行計画の生成のしくみ 問合せの結果を生成する最も効率的な方法 ( 物理的なアクセス手順 ) を決定し 実行計画を作成する機能 = オプティマイザ 索引を利用するか 全表スキャンを利用するか 複数の表を結合するときに 結合順序 / 結合方法はどうするかなど オプティマイザの種類 ルールベース オプティマイザ (RBO) コストベース オプティマイザ (CBO) ルールベース オプティマイザ 従来のオプティマイザ (Oracle10g 以降サポートされない ) 事前定義されたアクセスパスの中から 優先順位に従って実行計画を選択考慮点 Oracle7.3 以降の新機能には対応していない SQL 文の構文によって実行計画が決まるため 柔軟性に乏しい データの中身 検索条件により より高速なアクセスパスが存在する可能性がある Copyright 2010, Oracle. All rights reserved. 38

SQL 文の実行計画とパフォーマンスコストベース オプティマイザの特徴 コストベース オプティマイザ 統計情報に基づいてアクセスコストを見積もり 最もコストの低い実行計画を作成する コスト :DISK I/O CPU 使用量 メモリー使用量から算出される 使用リソース コストベース オプティマイザを活用するための考慮点 オプティマイザ統計情報を取得する必要 9i まで : 手動取得 10g 以降 : 自動取得 ( ただし状況によっては手動で取得したほうがよい場合も ) データ量の変化 データの偏りなどにより 最適な実行計画が立てられない可能性もある ヒント句などを使用し 特定の実行計画を指定 オプティマイザ統計情報 表統計 ( 行数 ブロック長 平均行長 ) 列統計 ( 列内のデータ種類数 列内の NULL 数 ) 索引統計 ( リーフブロック数 ツリーの高さ ) システム統計 (I/O CPU パフォーマンス ) Copyright 2010, Oracle. All rights reserved. 39

SQL 文の実行計画とパフォーマンス実行計画の改善 オプティマイザ ヒント : 特定のアクセス パスを使用させるための指定 適切な索引の使用を指定 適切な表結合方法や結合順序を指定 ヒントの使用例 ( /*+ と */ の間でヒントを指定し SQL に直接埋め込む ) < 例 >sales 表の customer_id 列の cust_id_indx という索引を使用 SELECT /*+ INDEX(sales cust_id_indx) */ sales_date FROM sales WHERE customer_id=100; Enterprise Manager SQL プロファイル 最適な実行計画を立てるための追加情報をデータベース内部に収集 SQL 文を変更することなく実装可能 チューニングされた実行計画 SQL プロファイル Copyright 2010, Oracle. All rights reserved. 40

SQL 文のチューニング SQL チューニング アドバイザによる自動チューニング SQL チューニング アドバイザ Oracle Database10g から実装されたアドバイス機能 高負荷で問題となる SQL 文や実行計画を診断し アドバイスを提示 統計の再取得 SQL 文の問題点を探し SQL 文の修正方法 必要な索引の作成をアドバイス SQL プロファイルの作成 失効 欠落している統計の収集 Index の作成 高負荷の SQL 文 SQL チューニング アドバイザ チューニング アドバイザが負荷を軽減する最適な対処方法を提示 SQL 文の再構成 SQL プロファイルの作成 Copyright 2010, Oracle. All rights reserved. 41

SQL 文のチューニング SQL チューニング アドバイザの実行例 (1) Enterprise Manager の パフォーマンス ページ からデータベースの負荷状況を確認 トップ アクティビティ ページから 特に負荷の高い SQL 文やセッションを特定 Copyright 2010, Oracle. All rights reserved. 42

SQL 文のチューニング SQL チューニング アドバイザの実行例 (2) 上位 SQL から 負荷の高い SQL 文を特定 この SQL 文の実行計画を確認 チューニング対象の SQL 文を選び SQL チューニング アドバイザのスケジュール から実行 Copyright 2010, Oracle. All rights reserved. 43

SQL 文のチューニング SQL チューニング アドバイザの実行例 ( 3 ) コストと時間が大幅に改善されることが分かる Copyright 2010, Oracle. All rights reserved. 44

まとめ パフォーマンス チューニングとは ボトルネック箇所の特定 代表的なチューニング項目 メモリ割り当てのチューニング ディスク I/O のチューニング SQL 文のチューニング ボトルネックになりやすいポイントはメモリやディスク I/O SQL 文 チューニングとはボトルネックを特定し ボトルネックを解消するための対策 ( 設定変更 構成変更など ) を行うこと 環境に合わせてチューニングポイントを検討 Copyright 2010, Oracle. All rights reserved. 45

以上の事項は 弊社の一般的な製品の方向性に関する概要を説明するものです また 情報提供を唯一の目的とするものであり いかなる契約にも組み込むことはできません 以下の事項は マテリアルやコード 機能を提供することをコミットメント ( 確約 ) するものではないため 購買決定を行う際の判断材料になさらないで下さい オラクル製品に関して記載されている機能の開発 リリースおよび時期については 弊社の裁量により決定されます Oracle PeopleSoft JD Edwards 及び Siebel は 米国オラクル コーポレーション及びその子会社 関連会社の登録商標です その他の名称はそれぞれの会社の商標の可能性があります Copyright 2010, Oracle. All rights reserved. 46

OTN ダイセミでスキルアップ!! 一般的な技術問題解決方法などを知りたい! セミナ資料など技術コンテンツがほしい! Oracle Technology Network(OTN) を御活用下さい http://otn.oracle.co.jp/forum/index.jspa?categoryid=2 一般的技術問題解決には OTN 掲示版の データベース一般 をご活用ください OTN 掲示版は 基本的に Oracle ユーザー有志からの回答となるため 100% 回答があるとは限りません ただ 過去の履歴を見ると 質問の大多数に関してなんらかの回答が書き込まれております http://www.oracle.com/technology/global/jp/ondemand/otn-seminar/index.html 過去のセミナ資料 動画コンテンツは OTN の OTN セミナーオンデマンドコンテンツ へ ダイセミ事務局にダイセミ資料を請求頂いても お受けできない可能性がございますので予めご了承ください ダイセミ資料は OTN コンテンツオンデマンドか セミナ実施時間内にダウンロード頂くようお願い致します Copyright 2010, Oracle. All rights reserved. 47

OTN セミナーオンデマンドコンテンツダイセミで実施された技術コンテンツを動画で配信中!! ダイセミのライブ感はそのままに お好きな時間で受講頂けます OTN オンデマンド 掲載のコンテンツ内容は予告なく変更になる可能性があります 期間限定での配信コンテンツも含まれております お早めにダウンロード頂くことをお勧めいたします Copyright 2010, Oracle. All rights reserved. 48

Oracle エンジニアのための技術情報サイトオラクルエンジニア通信 http://blogs.oracle.com/oracle4engineer/ 技術資料 ダイセミの過去資料や製品ホワイトペーパー スキルアップ資料などを多様な方法で検索できます キーワード検索 レベル別 カテゴリ別 製品 機能別 コラム オラクル製品に関する技術コラムを毎週お届けします 決してニッチではなく 誰もが明日から使える技術の あ そうだったんだ! をお届けします オラクルエンジニア通信 先月はこんな資料が人気でした Oracle Database 11gR2 RAC インストレーション ガイド ASM 版 Microsoft Windows x86-64 Oracle Database 11gR2 旧バージョンからのアップグレード Copyright 2010, Oracle. All rights reserved. 49

オラクルクルクルキャンペーン あの Oracle Database Enterprise Edition が超おトク!! Oracle Database のライセンス価格を大幅に抑えて ご導入いただけます 多くのお客様でサーバー使用期間とされる 5 年間にライセンス期間を限定 期間途中で永久ライセンスへ差額移行 5 年後に新規ライセンスを購入し継続利用 5 年後に新システムへデータを移行 Enterprise Editionはここが違う!! 圧倒的なパフォーマンス! データベース管理がカンタン! データベースを止めなくていい! もちろん障害対策も万全! 詳しくはコチラ http://www.oracle.co.jp/campaign/kurukuru/index.html お問い合わせフォーム http://www.oracle.co.jp/inq_pl/inquiry/quest?rid=28 Copyright 2010, Oracle. All rights reserved. 50

あなたにいちばん近いオラクル Oracle Direct まずはお問合せください Oracle Direct 検索 システムの検討 構築から運用まで ITプロジェクト全般の相談窓口としてご支援いたします システム構成やライセンス / 購入方法などお気軽にお問い合わせ下さい Web 問い合わせフォームフリーダイヤル 専用お問い合わせフォームにてご相談内容を承ります http://www.oracle.co.jp/inq_pl/inquiry/quest?rid=28 フォームの入力には Oracle Direct Seminar 申込時と同じログインが必要となります こちらから詳細確認のお電話を差し上げる場合がありますので ご登録さ れている連絡先が最新のものになっているか ご確認下さい 0120-155-096 月曜 ~ 金曜 9:00~12:00 13:00~18:00 ( 祝日および年末年始除く ) Copyright 2010, Oracle. All rights reserved. 51