Oracle True Cacheでのオブジェクトの固定: KEEPプールを使用するタイミングと理由 (2025/01/28)
Oracle True Cacheでのオブジェクトの固定: KEEPプールを使用するタイミングと理由 (2025/01/28)
投稿者: Ilam Siva | Senior Principal Product Manager
効率的なキャッシュは、高パフォーマンス・アプリケーションの基礎です。ただし、手動操作を行わずに重要なデータをキャッシュに残しておくことは困難な場合があります。Oracle True Cacheは、KEEPプールとともに、このニーズにシームレスに対応しています。
Oracle True Cacheが一意になる理由
True Cacheを初めて使用する読者向けのクイック・リフレッシュ機能- Oracle True Cacheは、Oracle Databaseのインメモリーで一貫性のある自動管理キャッシュです。True Cacheは、SQLキャッシュであり、データベースのキー値(オブジェクトまたはJSON)キャッシュでもあります。すべてのOracle Databaseオブジェクトおよびタイプがキャッシュされます。True Cacheは、主にディスクレスであることを除き、プライマリ・データベースの完全に機能する読取り専用レプリカです。True Cacheの最も優れた機能の1つは、自動的に管理されるため、アプリケーション開発者はキャッシュ層のキャッシュを管理する必要がなくなり、キャッシュの一貫性やキャッシュ内のアイテムの存続時間を管理する必要がなくなります。これはすべて管理されており、アプリケーション開発者の生活を非常に簡単にします!
True CacheでのKEEPプールの役割
True Cacheは、Oracle Databseの拡張バッファ・キャッシュとして表示でき、キャッシュのスケールと容量を大幅に強化するために別々のマシンに存在します。データベースのキャッシュのスケールと容量を本当に増やすことができます。Oracle Databseでは、様々なタイプの操作でバッファ・キャッシュを使用して、ディスクから読み取られたデータ・ブロックを格納します。True Cacheは似ていますが、大規模に動作します。バッファ・キャッシュの場合、KEEPプールを使用して、頻繁にアクセスされるセグメントをバッファ・キャッシュに保持できます。KEEPバッファ・プールの目的は、オブジェクトをメモリー内に保持することで、I/O操作を回避することです。
同様に、True Cacheに対して、ホット・オブジェクト(頻繁にアクセスされるオブジェクト、またはI/O操作を回避するためにキャッシュ内に存在するオブジェクト)を削除しないことを(可能なかぎり)指定するために、True CacheのKEEPバッファ・プールにオブジェクトを割り当てることができます。(実際、より高度な設定では、複数の真のキャッシュがある場合は、異なるTrue CacheのKEEPバッファ・プールに異なるオブジェクトを割り当てることができます)。
True CacheのKEEPプール
True CacheのKEEPプールにオブジェクトを割り当てると、頻繁にアクセスされるデータに対する効率的なキャッシュが確保され、削除を最小限に抑えることでパフォーマンスが向上します。これにより、ホット・オブジェクトのキャッシュ・ヒット率が改善されます。
- True CacheでDB_KEEP_CACHE_SIZEを構成します。これを行うには、アプリケーションに基づいて保持するオブジェクトに依存するおおよそのサイズを計算する必要がある場合があります。
- その後、True CacheのオブジェクトをKEEPバッファ・プールに割り当てることができます。オブジェクトがTrue CacheのKEEPバッファ・プールに割り当てられると、オブジェクトのブロックは問合せ用にロードされ、KEEPバッファ・プールに保持されます。
- 新しいデータがプライマリ・データベースのオブジェクトに挿入されると、その新しいデータは、REDO適用メカニズムを介してTrue CacheのKEEPバッファ・プールに自動的に伝播されます。
留意すべき点は、プライマリ・データベースでKEEPをマークすると、True CacheでもKEEPとしてマークされることです。プライマリ・データベースがTrue Cacheキープ・プールにオブジェクトをフラッディングしないようにすると、混乱が生じる可能性があります。
DBMS_CACHEUTIL.TRUE_CACHE_KEEPを使用すると、レスキューが行われます。これにより、プライマリ・データベースで保持されるようにマークされているオブジェクトが優先され、オーバーライドされます。
たとえば、True CacheのCUSTOMER_LOOKUP表をKEEPするには、次のように実行します。
EXECUTE DBMS_CACHEUTIL.TRUE_CACHE_KEEP (‘SYS’, ‘CUSTOMER_LOOKUP’);
これにより、そのキャッシュのKEEPバッファ・プールにオブジェクトが割り当てられます。
DBMS_CACHEUTIL.TRUE_CACHE_UNKEEP()を使用して、KEEPバッファ・プールからオブジェクトを削除することもできます。ただし、ブロックはすぐには削除されません。かわりに、他のオブジェクトの新しいブロックがKEEPバッファ・プールに取り込まれると、自然にエージ・アウトされます。
V$TRUE_CACHE_KEEPビューを使用して、True CacheのKEEPバッファ・キャッシュに割り当てられるオブジェクトを監視できます。
まとめ
KEEPは、特定の表およびオブジェクトを固定して、ホット・データセットがキャッシュに保持されるようにする強力な機能であり、これにより、メモリーの制約やルーチン・キャッシュの削除によって重要なデータが削除されることを防ぎます。保持されるデータは、開発者の介入なしに自動的にリフレッシュされ、プライマリ・データベースでデータが更新されるたびにリアルタイムで一貫性が保たれます。この機能を使用すると、Oracle True Cacheで頻繁にアクセスされるデータをより効率的かつ高パフォーマンスで永続化できます。
全体的に、Oracle True Cacheは、プライマリ・データベースからリソース集約型の問合せ/読取りをオフロードすることで、パフォーマンスとスケーラビリティを向上させます。これは、最もフル機能のSQLおよびオブジェクト・キャッシュです。開発者がキャッシュとプライマリ・データベースの間でデータを同期させるという負担をかけることなく、True Cacheのデータは、常に複数の表間で一貫性を保ち、最新の状態を維持します。プライマリ・データベースのスキーマ変更も、自動的にキャッシュに伝播されます。
キャッシュ戦略を最適化する準備はできていますか? Live Labsを使用して、Oracle True Cacheの詳細と比類のないパフォーマンスを今すぐ実現
Resources for further information:
True Cache home: https://www.oracle.com/truecache
User Guide: True Cache User Guide
Live Labs: How to access Live Labs for True Cache
Video: Video presentation
コメント
コメントを投稿