More Related Content
Similar to プロとしてのOracleアーキテクチャ入門 ~番外編~ (20)
プロとしてのOracleアーキテクチャ入門 ~番外編~
- 4. SQL 実行と Oracle アーキテクチャ SGA 共有プール クライアント・ アプリケーション サーバプロセス データベース・ バッファキャッシュ データファイル (永続表領域) メモリ ディスク 解析済み SQL 情報 一時ファイル (一時表領域) 検証・解析 実行・フェッチ PGA SELECT 行
- 6. SQLの実行と実行計画 解析済み SQL 情報 実行計画 + アクセスパス テーブルスキャン 索引スキャン A Z A Z + f(x) f(x) ネステッドループ ソートマージ ハッシュ 結合方式+結合の順序
- 7. 実行計画の立案と CBO ( Cost Based Optimizer ) SELECT * FROM EMP WHERE EMP_NO = :emp_no; CBO SQL 実行計画 オプティマイザ統計 ・・・ 収集 初期化パラメータ 初期化パラメータ システム統計 テーブル・索引 環境的な要因 !!
- 10. ヒストグラム : 収集 or オプティマイザ統計 ・・・ 高さベースのヒストグラム 値ベースのヒストグラム 高さ=頻度 幅=頻度
- 13. 実行/フェッチ クライアント・ アプリケーション サーバプロセス データファイル (永続表領域) メモリ ディスク 実行・フェッチ SGA データベース・ バッファキャッシュ consistent gets physical reads ③ 行 ① ファイル I/O ② メモリ アクセス
- 14. DB バッファキャッシュのキャッシュ効果 クライアント・ アプリケーション サーバプロセス データファイル (永続表領域) メモリ ディスク 実行・フェッチ SGA データベース・ バッファキャッシュ クライアント・ アプリケーション サーバプロセス 実行・フェッチ ディスクアクセス -> 低速 メモリアクセス -> 高速 ③ 行 ⑤ 行 ① ファイル I/O ② メモリ アクセス ④ メモリ アクセス
- 16. ソート(必要な場合) サーバプロセス PGA 一時ファイル(一時表領域) SGA クライアント・ アプリケーション データベース・ バッファキャッシュ メモリ ディスク 実行・フェッチ メモリでソート ⇒ 高速 ディスクでソート ⇒ 低速 ③ 行 A Z A Z ① ② ソート ② ソート
- 27. バインドピークの落とし穴 : SELECT * FROM tbl_xxx WHERE col1 = :var1 ; SELECT * FROM tbl_xxx WHERE col1 = :var1 ; : : 2 回目の実行 1回目の実行 : ? ?
- 30. クエリ変換と実行計画 変換された SQL SQL CBO 注)一部のクエリ変換は /* NO_QUERY_TRANSFORMATION */ ヒントで無効化可能 クライアント・ アプリケーション 実行計画
- 33. CBO との付き合い方 ① CBO を信頼せず、 ヒント句 / アウトラインで 実行計画を制御 ② CBO の動作をできる 限り理解し、実行計画を 逐一吟味する ③ CBO の特性を(ある 程度)理解し、 CBO の 動作環境を整備する ・ CBO の存在意義否定 ・環境の変化に追随できない ・実行頻度 / パフォーマンス影響大 SQL に限定の適用は可 ・吟味対象の SQL の限定が必要 ・典型的な落とし穴については、本セッションで紹介 ・現実的な解 ・動作環境の構成要素については、本セッションで説明 3 つのアプローチをバランスよく