Oracleの高度な学習:SQL文の実行プロセスと分析タイプ

まず、Oracleデータベースのアーキテクチャ

以下に簡単にOracleのアーキテクチャ

6555a7f4c8b94b26942f290488580584


EM(Enterprise Managerは)、データベースにアクセスするためのブラウザインタフェースを介して管理することができ、実際のOracleのJavaベースの管理ツールであるSQL PLUSデータベースのデータにアクセスすることができます。

二、SQL文の実行プロセス

1、いくつかの背景

(1)ORACLEデータベースの起動時、Oracleは、第一まとめOracleインスタンスとして知られている方法、プロセス、メモリ領域の束を開始するためにメモリの一部のスペースを取っておきます

インスタンスに関連付けられている基本的なメモリ構造(2)オラクルを含みます:

(3)システム・グローバル領域(SGA)は、すべてのサーバーおよびバックグラウンドプロセスで共有、すべてのプロセス、共有メモリ空間のために、実際の作業領域に存在割り当てられます

(4)プログラム・グローバル領域(PGA)特別なサービス特定のプロセスまたはバックグラウンド・プロセス、各プロセスがPGA、Oracleの新しいバージョンを使用して、室内空間のPGAがたくさんある、それぞれのプロセスを開始するだろう、必ずしも空間PGA対応するプロセスに、フォアグラウンドプロセスとPGAとの関係に焦点を当て

(5)Oracleデータベース3つのファイルで構成される

  • .CTL制御ファイル

  • .logのログファイル

  • .DBFデータファイル

2、知識

523e7f190e8d45168d14c8f92232ea45


サーバ・プロセスは、プロセス・インスタンス、SQL処理の主な動作機能であります

SQL文の実行

(1)クライアントSQL文を入力してください

データベースインスタンスへのネットワークを介して(2)SQL文

(3)サーバプロセスが解決取得するSQL文の後に行う、最初にすべての対応する文と実行計画があるかどうかを確認するために、共有プールでなければならず、見つからない場合は、サーバプロセス、独自の分析、分析、分析の手順を実行するための次のステップに次のとおりです。

  • 正しい文の構文かどうかを判断するためにSQLプロセス

  • 表にアクセスするかどうかにアクセス

  • SQLテーブルを含む文とデータベースのないビューがありません

  • どのようにSQL文が実行されなければならない - >実行の最適な方法を見つけ、その後、実行計画

(4)server process根据SQL语句的执行计划去DBF取出数据,放到buffer cache,然后返给用户,在此之前是server process首先寻找的是buffer cache,如果存在则直接在buffer cache取出数据。

三、SQL语句解析类型——硬解析和软解析

1、硬解析和软解析

Oracle数据信息全部存储在数据字典中,Oracle的解析有两种,软解析以及硬解析

(1)硬解析 hard parse 没有缓存进入硬解析

  • 硬解析内容:语法错误,对象存不存在,用户是否有操作权限

  • 硬解析在n种执行方案中找出最优的执行方案最消耗资源以及损耗时间

(2)软解析 soft parse 有缓存

  • SQL语句语法

  • SQL所对应一些对象的权限满不满足

软硬解析的区别在于,软解析不必挑选最优方案

均要频繁访问数据字典信息(对象权限信息),所以oracle将数据字典信息放置到 share pool中跟library cache放置在一块

2、shared pool功能

shared pool 缓存SQL语句以及SQL语句的执行计划

  • parse 解析

  • excel 执行

  • fetch 取回数据

3、shared pool组成

shared pool是一块内存池,内部被分成比较小的区块,

  • free部分 空闲部分

  • library cache 库缓存,保存的是SQL语句以及SQL语句的执行计划

  • row cache 缓存数据字典信息

4、SQL语句

(1)查看各个内存块的大小

  • library cache

  • select * from v$sgastat a where a.Name='library cache

  • free memory

  • select * from v$sgastat a where a.pool='shared pool'and a.name='free memory';

  • row cache

  • a.Nameは= '行キャッシュ' 五$ SGASTAT aから選択*;

(2)SQL

名前、名前「%を解析」のような五$ sysstatのから値を選択します。

a1e5ff9e43d14a5abbbe4b45085f0697


仕上げは、友人のよう賛美聖歌を指して、容易ではありません!


おすすめ

転載: blog.51cto.com/14378044/2409997