ORACLEの動作概要の解説
ORACLEの動作を理解することは、チューニングや設計をする上で重要です。設計者や開発者は知らずに開発を行っていることが一般的ですが、パフォーマンス上問題を起こす可能性は否定できません。まずはORACLE動作概要をしっかり理解して開発に臨みましょう。ORACLEの動作概要は次のような流れになります。
インスタンス起動と初期化パラメータ
SGAがどのように割り当てられるかは、インスタンス起動時に参照される初期化パラメータによって設定します。
DB_BLOCK_SIZE(メモリやディスクなどファイルI/Oの基本サイズ(一度設定すると変更不可)
SGA(システムグローバル領域)のサイズ
データやREDOログファイルなどの物理的格納場所
サーバプロセスやユーザプロセスの内容も初期化パラメータによって設定します。
どのくらいのユーザー数、セッション数になるか
共有サーバプロセス(メモリを共有できる部分は共有する仕組み)か専用サーバプロセスか(メモリをユーザごとに確保する仕組み)など
共有サーバプロセスは、メモリ資源を有効活用できるメリットがあります。メモリは高価なので、こうゆう仕組みが必要です。
専用サーバプロセスは、メモリは使いますが、処理は多少早いというメリットがあります。
SQL処理に比べれば微々たる違いかも知れません。
ORACLEの動作
ORACLEを起動すると、初期化パラメータ及びディスク内にある情報によってインスタンスが起動し使える状態になります。問合せを受け付けるリスナーによって、ユーザからの処理の問合せをユーザプロセスが受け取り、サーバプロセスへと展開します。
データがメモリ(SGAの中のデータベースバッファキャッシュ)上に存在すれば、読み取ったデータを返します。
データがメモリ(SGAの中のデータベースバッファキャッシュ)上に存在しない場合、ディスクからメモリ(SGAの中のデータベースバッファキャッシュ)へ展開します。
その後はメモリ(SGAの中のデータベースバッファキャッシュ)に存在する場合と同様です。
つまり、データがメモリ(SGAの中のデータベースバッファキャッシュ)上に存在する場合はディスクから読む必要がなく、メモリ上だけの処理ですみますので、高速になります。
チューニングの一つのポイントとして、データをいかにメモリ内の処理で完結させられるかにあります。データに変更があった場合は、メモリ上の更新がなされ、一定のルール(メモリからの追い出しなど)に従いディスクに書き出されます。