概要
Oracleデータベースには、効率的なメモリー利用をサポートする自動メモリー管理(Automatic Memory Management, AMM)と自動共有メモリー管理(Automatic Shared Memory Management, ASMM)という2つの機能があります。これらは、それぞれ異なる方法でメモリーを動的に管理し、データベースのパフォーマンスを最適化します。
自動メモリー管理(Automatic Memory Management, AMM)
自動メモリー管理(AMM)は、Oracleデータベース全体のメモリー(SGAとPGAの両方)を自動で調整する機能です。AMMを使用すると、データベースが使用するメモリーを一括管理でき、SGA(System Global Area)とPGA(Program Global Area)にメモリーが自動的に割り当てられます。
AMMの特徴
- メモリー全体の自動調整
AMMを使用すると、Oracleデータベースが利用する物理メモリーの総量だけを指定するだけで、SGAとPGAのメモリー割り当てが動的に調整されます。 - シンプルな設定
設定はMEMORY_TARGET
とMEMORY_MAX_TARGET
の2つのパラメータを設定するだけで済みます。これにより、ユーザーが詳細なメモリーの配分を気にせずに済むようになります。 - 最適化されたパフォーマンス
メモリーの割り当てが動的に調整されるため、ワークロードの変動に合わせて最適なメモリー配分が行われ、パフォーマンスが安定します。
設定方法
MEMORY_TARGET
データベースのメモリーの合計量を指定します。この値を変更すると、OracleがSGAとPGAの割り当てを動的に調整します。MEMORY_MAX_TARGET
MEMORY_TARGET
で設定できるメモリー量の上限を指定します。データベースを再起動しなくても変更できます。
自動共有メモリー管理(Automatic Shared Memory Management, ASMM)
自動共有メモリー管理(ASMM)は、SGA領域のメモリー割り当てを動的に調整する機能です。ASMMでは、SGA内の各コンポーネント(バッファキャッシュ、共有プールなど)に対して自動でメモリーが割り当てられ、効率的に使用されるように管理されます。
ASMMの特徴
- SGA内の自動メモリー割り当て
ASMMは、SGAのさまざまなコンポーネント(共有プール、バッファキャッシュなど)に対して、ワークロードに応じて自動的にメモリーを割り当てます。 - 細かい制御が可能
ASMMではSGAの各領域に対して手動でのチューニングも可能で、SGA_TARGET
パラメータを設定するだけで自動調整が行われますが、各コンポーネントの上限・下限を指定することもできます。 - 複数のインスタンスでの利用
ASMMは、Oracle Real Application Clusters(RAC)などのマルチインスタンス環境でも使用でき、インスタンスごとにメモリー管理が調整されます。
設定方法
SGA_TARGET
SGA領域全体の自動管理を行うためのターゲットサイズを指定します。このパラメータを設定すると、バッファキャッシュや共有プールなどが自動的に管理されます。SGA_MAX_SIZE
SGA領域の最大サイズを設定します。ASMMを使用する場合は、SGA_TARGET
がこの値を超えることはありません。
AMMとASMMの違い
特徴 | AMM(自動メモリー管理) | ASMM(自動共有メモリー管理) |
---|---|---|
管理対象 | SGAとPGA全体 | SGA内の各コンポーネント |
設定パラメータ | MEMORY_TARGET , MEMORY_MAX_TARGET | SGA_TARGET , SGA_MAX_SIZE |
動的なPGAの管理 | あり | なし |
メモリー管理の対象が詳細に設定可能 | 不可(SGA全体とPGA全体のみ) | 可(SGA内の各コンポーネントごとに設定) |
使用環境 | 単一インスタンスに最適 | マルチインスタンスでも利用可能 |
まとめ
- AMM(自動メモリー管理)は、SGAとPGAの両方を対象にメモリーの管理を行い、全体のメモリー量を自動調整することで、ユーザーの負担を大幅に軽減します。
- ASMM(自動共有メモリー管理)は、SGA内の各コンポーネントに対して動的なメモリー調整を行い、より細かい制御が可能です。
Oracleデータベースの規模や利用環境に応じてAMMやASMMを選択し、メモリー管理を最適化することで、効率的で安定したデータベース運用が実現します。
コメント