Oracleとキャッシュメモリ

実践オラクルデータベース構築・運用

オラクルデータベース構築オラクルデータベース運用SQL書式PL/SQL書式Oracle Master試験

TOP オラクルデータベース概要(豆知識)

Oracleとキャッシュメモリ


スポンサードリンク
スポンサードリンク



Oracleとキャッシュメモリ



1. キャッシュメモリの必要性

この章では、SQLを高速に処理するOracleのデータキャッシュ機能(バッファキャッシュ)について見ていきます。またOracleプロセスがキャッシュを共有するために利用される特殊なメモリ機能も見ていきます。

OracleでいうバッファキャッシュとはCPUキャッシュとは違うことを認識しておきましょう。バッファキャッシュはメモリ上に存在します。Oracleのサーバプロセスはバッファキャッシュにデータが存在する場合は高速な処理が可能になりますが、バッファキャッシュに存在しないとディスクまでアクセスする必要があるためミリ秒単位で時間がかかってしまいます。以下にCPU・メモリ・ディスクの関係を示します。




3−2. プロセスのキャッシュメモリ共有

プロセスごとにキャッシュをもってしまうと他のプロセスからデータ更新などがみれないなどの不都合が起こってしまいます。データ破壊などを避けるために、OS上では原則他のプロセスのメモリはみることはできまんせ。しかしDBMS(データベース管理システム)の場合は、メモリを共有できないと不都合が発生するために「共有メモリ」を使い、プロセス間で同様のキャッシュメモリを参照できるのです。Oracleではこの共有メモリを「SGA(システムグローバルエリア」といい、共有でないメモリを「PGA(プログラムグローバルエリア)」といいます。

SGAでは誰もがアクセスできるため、ロックをかけ排他制御を行う必要があります。Oracleのプロセスとメモリの関係イメージ図を以下に示します。




Oracleサーバプロセスが使用しているメモリサイズをOS上でpsコマンド等で確認した際に、各プロセスがSGA領域分を使用しているように見えますが、実際は上記でも解説しているようにSGA領域は同じものを使用しています。よってOracle使用メモリサイズを足すと物理メモリ領域を超えてしまうということもありますが、実際の使用領域はサーバプロセス数で割ったものなることを認識しておきましょう!


3−3. Oracle共有メモリ設定

Oracleでは、共有メモリの設定を、「initXXXX.ora」ファイルの「DB_CACHE_SIZE」もしくは「DB_BLOCK_BUFFERS」パラメータで設定します。共有メモリサイズは少なくても数百MBできれば数GB割り当てたいところです。
※XXXXは、データベースを識別するIDとなります。

またOracleをインストールする際は、OSのセマフォについても設定を変更する必要があるOSがほとんどです。各OS用のOracleマニュアルを参照し正しい設定を行いましょう!



3−4. バッファキャッシュとLRUアルゴリズム

Oracleの共有メモリであるバッファキャッシュは、LRU(LeastRecentlyUsed)アルゴリズムによって管理されています。簡単にいうと最近つかわれていなデータからキャッシュアウトされていくのです。読み込みだけならキャッシュアウトと削除を同義としてとらえてよいのですが、データ変更や追加が発生している場合は、キャッシュから削除する前に必ずディスクに書き込みを実施する必要があります。サーバプロセスはディスクとは、やり取りを行わないため、この役目を担うのがデータベースライターです。



<オラクルデータベース概要(豆知識)>

 ・『OracleとディスクI/Oについて
 ・『Oracleの様々なプロセスについて
 ・『Oracleとキャッシュメモリについて
 ・『Oracleの起動と停止について
 ・『Oracleへのアプリケーション接続について
 ・『Oracleのデータ構造について
 ・『Oracleの待機とロック』について

 ・『REDOとUNDOについて
 ・『Oracleのバックアップ・リカバリについて
 ・『Oracleのデータ管理について
 ・『オプティマイザと共有プールについて
 ・『インスタンスとデータベース構成について
 ・『SQL*PlusとiSQL*Plus』について




スポンサードリンク

リンク集 / 免責事項サイトマップ問い合わせ
Copyright (C) 2012  実践オラクルデータベース構築・運用  All rights reserved