目次:
- Oracle 12cのライブラリ・キャッシュ
- Oracle 12cの辞書キャッシュ
- Oracle 12cのサーバー結果キャッシュ
- Oracle 12cの予約プール
- Oracle 12cで最も最近使用されたアルゴリズム
ビデオ: Technology Stacks - Computer Science for Business Leaders 2016 2024
Oracle 12cの特定のオブジェクトとデバイスが頻繁に使用されます。したがって、操作を実行するたびに準備を整えるのが理にかなっています。さらに、共有プール内のデータは決してディスクに書き込まれません。
共有プール自体は、
-
ライブラリキャッシュ
-
ディクショナリキャッシュ
-
サーバ結果キャッシュ
-
予約プール
A キャッシュ は、取得に時間がかかる可能性のある情報を素早く取得するために作成されたメモリ内の一時的な領域です。たとえば、前述のリストに記載されているキャッシュには事前計算された情報が含まれています。毎回値を計算しなければならない代わりに、ユーザはキャッシュ内の情報にアクセスすることができる。
Oracle 12cのライブラリ・キャッシュ
ライブラリ・キャッシュは、ライブラリと同様にライブラリです。具体的には、すぐに使えるSQL文のライブラリです。
<! - 2 - >SQL文を実行するたびに、バックグラウンドで多くのことが起こります。このバックグラウンドアクティビティは、 解析 と呼ばれます。パーシングは処理能力の面で非常に高価になります。
構文解析中に、次のようなことが起こります。
-
文の構文がチェックされ、すべて正しく入力されたことを確認します。
-
あなたが参照しているオブジェクトがチェックされます。 たとえば、EMPLOYEEという表にアクセスしようとする場合、OracleはデータベースにEMPLOYEEが存在することを確認します。
<! - 3 - > -
オラクルは、あなたがしようとしていることを行う許可を得ていることを確認します。
-
コードはデータベース対応フォーマットに変換されます。 形式は、 バイトコード または pコードと呼ばれます。
-
Oracleは最適な経路または計画を決定します。 これははるかに高価な部分です。
文を実行するたびに、情報はライブラリキャッシュに保存されます。このようにして、次回に文を実行するときに、アクセス権のチェックなど多くのことが発生することはありません。
Oracle 12cの辞書キャッシュ
辞書キャッシュは、SQLの実行時に頻繁に解析に使用されます。あなたとデータベースのオブジェクトに関する情報の集合と考えることができます。バックグラウンドタイプの情報をチェックできます。
辞書キャッシュは、 Least Recently Used (LRU)アルゴリズムの規則によっても管理されます。正しいサイズでない場合、情報を追い出すことができます。ディクショナリキャッシュに十分な空き領域がないと、ディスクの使用に影響を与えることがあります。
オブジェクトの定義と権限ベースの情報はデータベース・ファイルに格納されるため、Oracleはその情報をディクショナリ・キャッシュに再ロードするためにディスクを読み取る必要があります。これはメモリキャッシュから取得するよりも時間がかかります。数千人のユーザーがSQLを常時実行しているシステムを想像してください…不適切なサイズの辞書キャッシュは、実際にパフォーマンスを阻害する可能性があります。
ライブラリキャッシュと同様に、ディクショナリキャッシュのサイズを直接制御することはできません。全体の共有プールのサイズが変更されると、ディクショナリキャッシュも変更されます。
Oracle 12cのサーバー結果キャッシュ
サーバー結果キャッシュには2つの部分があります。
-
SQL結果キャッシュ: このキャッシュにより、Oracleは、最近実行されたSQLステートメントによって要求された要求データメモリに記憶される。この状況では、Oracleは、実行の実行部分をスキップしてより良い用語がないため、結果セットが存在する場合は直接実行できます。
<! - 1 - >SQL結果キャッシュは、比較的静的なデータ(電子商取引サイトの項目の説明など)に最も適しています。
結果キャッシュが間違ったデータを返すのではないかと心配してください。どういたしまして。 Oracleは、基礎となるコンポーネントのいずれかが変更された場合、結果キャッシュに格納されているデータを自動的に無効化します。
-
PL / SQLファンクション結果キャッシュ: PL / SQLファンクション結果キャッシュには、計算結果が格納されます。たとえば、ユーロの為替レートに基づいてドルの価値を計算する関数があるとします。その実際の値は常に変化しているので、その値を保存したくないかもしれません。
<! - 2 - >代わりに、ドルの価値を判断するために毎日または毎時の料金を呼び出す機能があります。金融アプリケーションでは、この呼び出しは1時間に何千回も発生する可能性があります。したがって、実行中の機能の代わりに、PL / SQL結果キャッシュに直接進み、レート更新の間にデータを取得します。レートが変更されると、Oracleは関数を再実行して結果キャッシュを更新します。
<! - 9 - >
Oracle 12cの予約プール
Oracleは共有プール内の大きなチャンク(5 KBを超える)を連続したメモリーに割り当てる必要がある場合、予約プールにメモリーを割り当てます。大きなメモリ割り当てを処理するために予約されたプールを専用にすると、パフォーマンスが向上し、メモリの断片化が減少します。
Oracle 12cで最も最近使用されたアルゴリズム
ライブラリ・キャッシュがスペース不足の場合、オブジェクトはスローされます。ライブラリのキャッシュに最も多く使用されるステートメントは最も長くキャッシュされます。より頻繁に使用されるほど、ライブラリキャッシュがスペース不足の場合に追い出される機会が少なくなります。
ライブラリキャッシュの追い出しプロセスは、 Least Recently Used (LRU)アルゴリズムに基づいています。あなたの机が乱れているなら、まず何を捨てますか?あなたが使っているものは最低です。
ライブラリキャッシュのサイズを自分で変更することはできません。共有プールの全体的なサイズによって、それが決まります。余りにも多くのステートメントが追い出されていると思われる場合は、自分でチューニングしている場合は、全体の共有プールサイズを大きくすることができます。オラクルにチューニングをさせようとしている場合、他の場所から空きメモリを取得します。