すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB RDS:キャッシュ削除機能の使用

最終更新日:Mar 19, 2024

プロセスレベルのキャッシュ削除機能がサポートされているため、永続的な接続のメモリ使用量を減らし、永続的な接続が過剰になってデータベースのメモリが不足しないようにします。 この機能では、使用頻度の低いキャッシュを解放するためにLRU (Least Recently Used) ポリシーを使用します。 これにより、接続のメモリ使用量が削減され、ApsaraDB RDS for PostgreSQLインスタンスの安定性が向上します。

前提条件

RDSインスタンスはPostgreSQL 14以降を実行します。 この機能がまだサポートされていない場合は、RDSインスタンスのマイナーエンジンバージョンを更新する必要があります。 詳細については、「マイナーエンジンバージョンの更新」をご参照ください。

背景情報

PostgreSQLのバックエンドプロセスがテーブルにアクセスするたびに、テーブルのメタデータがオンプレミスデバイスにキャッシュされ、キャッシュはプロアクティブにリリースされません。 これにより、後続のディスクアクセスが減少します。 その結果、永続的な接続は、多数のキャッシュを生成し、メモリ不足 (OOM) エラーを引き起こす可能性がある。 この問題を解決するために、キャッシュ削除機能を導入して、最も早い機会に使用頻度の低いキャッシュを解放します。

シナリオ

多数の永続的な接続が存在するサービスとしてのソフトウェア (SaaS) シナリオ

影響

このトピックに関連するパラメーターを変更しても、インスタンスの再起動はトリガーされません。

使用上の注意

RDSインスタンスを期待どおりに実行するために、一部のキャッシュを削除できません。 極端な場合、指定されたキャッシュの上限を完全に満たすことはできません。

手順

ApsaraDB RDS for PostgreSQLの接続キャッシュは、relcachesyscache、およびplancacheのキャッシュで構成されています。 relcacheは、ユーザーテーブルのメタデータをキャッシュするために使用されます。 syscacheは、システムテーブルのタプルをキャッシュするために使用されます。 plancacheは、ユーザー定義の実行計画をキャッシュするために使用されます。 ApsaraDB RDS for PostgreSQLでは、relcacheおよびsyscacheにキャッシュできるオブジェクトの数を調整できます。 plancacheにキャッシュできるオブジェクトの数を制限することはできません。

説明

各プロセスのキャッシュ使用状況を監視する場合は、CREATE EXTENSION rdsutilsステートメントを実行して依存拡張をインストールし、rds_enable_cache_monitorパラメーターの値をonに設定する必要があります。

  • rds_enable_cache_monitorパラメーターをonに設定すると、データベースのパフォーマンスが低下し、各SQL文の実行時間が約2ミリ秒長くなります。

  • rds_enable_cache_monitorパラメーターは、ApsaraDB RDSコンソールでのみ変更できます。 詳細については、「ApsaraDB RDS For PostgreSQLインスタンスのパラメーターの変更」をご参照ください。

現在の接続のキャッシュ削除機能の設定の変更

-現在の接続のrelcacheの削除機能を有効にして、最大1,000のユーザーテーブルをキャッシュします。
SET rds_relcache_max_cached_relations = 1000;
-現在の接続のrelcacheの削除機能を無効にします。
SET rds_relcache_max_cached_relations = -1;


-現在の接続のsyscacheの削除機能を有効にして、最大10,000のシステムテーブルのタプルをキャッシュします。
set rds_syscache_max_cached_tuples = 10000;
-現在の接続のsyscacheの削除機能を無効にします。
set rds_syscache_max_cached_tuples = -1; 

すべての接続のキャッシュ削除機能の設定

ApsaraDB RDSコンソールにログインし、rds_relcache_max_cached_relationsおよびrds_syscache_max_cached_tuplesパラメーターを設定します。 詳細については、「ApsaraDB RDS For PostgreSQLインスタンスのパラメーターの変更」をご参照ください。

Parameters

パラメーター

説明

設定

rds_enable_cache_monitor

各プロセスのキャッシュ使用量を監視するかどうかを指定します。

有効な値:

  • on: 各プロセスのキャッシュ使用状況を監視します。

  • off: 各プロセスのキャッシュ使用状況を監視しません。 デフォルト値です。

ビジネス要件に基づいてこのパラメーターを設定する必要があります。

rds_relcache_max_cached_relations

1つの接続に対してキャッシュできるユーザーテーブルの最大数。

有効値: [-1, INT_MAX] 。

デフォルト値: -1。数が制限されていないことを示します。

  • ビジネス要件に基づいてこのパラメーターを設定する必要があります。 ワークロードに多数のテーブルが使用されている場合は、このパラメーターを大きな値に設定する必要があります。

  • パーティションテーブルが使用されている場合、またはtimescaledb拡張機能が使用されている場合は、このパラメーターを -1または大きな値に設定することを推奨します。

  • このパラメーターを小さい値に設定すると、データベースのパフォーマンスが低下することがあります。 このパラメーターを1000以上の値に設定することを推奨します。

rds_syscache_max_cached_tuples

1つの接続に対してキャッシュできるシステムテーブルのタプルの最大数。

有効値: [-1, INT_MAX] 。

デフォルト値: -1。数が制限されていないことを示します。

  • ビジネス要件に基づいてこのパラメーターを設定する必要があります。 ワークロードに多数のテーブルとフィールドが使用されている場合は、このパラメーターを大きな値に設定する必要があります。

  • パーティションテーブルが使用されている場合、またはtimescaledb拡張機能が使用されている場合は、このパラメーターを -1または大きな値に設定することを推奨します。

  • このパラメーターを小さい値に設定すると、データベースのパフォーマンスが低下することがあります。 このパラメーターを5000以上の値に設定することを推奨します。