AlloyDB Omni ディスク キャッシュでは、標準の PostgreSQL インメモリ共有バッファに加えて、ソリッド ステート ドライブ(SSD)などの高速ストレージをバッファとして使用できます。ディスク キャッシュを使用すると、データ ディレクトリが低速なストレージにある AlloyDB Omni インストールでデータの取得が高速化されます。
PostgreSQL の共有バッファと同様に、AlloyDB Omni ディスク キャッシュは永続的ではありません。つまり、キャッシュに保存されたデータは再起動時に失われます。
デフォルトでは、AlloyDB Omni ディスク キャッシュはファイル システムから報告されたすべてのストレージを使用します。データ キャッシュに予約するストレージの量は、omni_disk_cache_file_size パラメータで定義できます。
AlloyDB Omni ディスク キャッシュを有効にする
AlloyDB Omni のディスク キャッシュを有効にする手順は、AlloyDB Omni をコンテナで実行するのか、Kubernetes クラスタで実行するかによって異なります。
汎用ボリュームでディスク キャッシュを有効にする
汎用ボリュームを使用してディスク キャッシュを有効にできます。
AlloyDB Omni Kubernetes オペレーターで汎用ボリュームのディスク キャッシュを有効にするには、事前に準備した永続ボリュームと storageClass が必要です。
たとえば、GKE を使用しているときに永続ボリュームと storageClass が準備できていない場合は、汎用ボリュームでディスク キャッシュを有効にする前に、次のことが完了していることを確認してください。
- ローカル SSD ベースのストレージを使用するクラスタを作成する。
- ローカル ボリュームの静的プロビジョナーを実行するの手順 1 で、ボリュームを ext4 ファイル システムにフォーマットする。
- ストレージ デバイス上の永続ストレージを定義する
storageClassを使用して、クラスタ内の SSD ごとに永続ボリュームを手動で作成する。
データベースの汎用ボリュームでディスク キャッシュを有効にするには、次の操作を行います。
データベース クラスタ マニフェストを変更して、
specセクションのfeaturesセクションにultraFastCache属性を追加します。apiVersion: alloydbomni.dbadmin.goog/v1 kind: DBCluster metadata: name: CLUSTER_NAME spec: databaseVersion: "17.5.0" primarySpec: features: ultraFastCache: cacheSize: DISK_CACHE_SIZE genericVolume: storageClass: "STORAGE_CLASS_NAME" ...
次のように置き換えます。
DB_CLUSTER_NAME: データベース クラスタの名前。これは、作成時に宣言したデータベース クラスタ名と同じです。DISK_CACHE_SIZE: キャッシュのサイズ(例:100Gi)。shared_buffersよりも大きい値にしてください。このフィールドは省略可能です。このフィールドの値を指定しない場合、AlloyDB Omni はディスク上の残りのスペースをすべて使用します。これは、コンテナ内の AlloyDB Omni と Kubernetes クラスタの両方に適用されます。STORAGE_CLASS_NAME: 超高速キャッシュ ボリュームのstorage classの名前。例:local-storage
- マニフェストを再度適用します。
ローカル ボリュームでディスク キャッシュを有効にする
ローカル ボリュームを使用する場合は、永続ボリュームを作成する必要はありません。代わりに、次の最適化を行うことができます。
たとえば、GKE を使用しているときに永続ボリュームと storageClass が準備できていない場合は、ローカル ボリュームでディスク キャッシュを有効にする前に、次のことが完了していることを確認してください。
- ローカル SSD ベースのストレージを使用するクラスタを作成する。
- ローカル ボリュームの静的プロビジョナーを実行するの手順 1 で、ボリュームを
ext4ファイル システムにフォーマットする。
データベースのローカル ボリュームでディスク キャッシュを有効にするには、次の操作を行います。
データベース クラスタ マニフェストを変更して、
specセクションのfeaturesセクションにultraFastCache属性を追加します。apiVersion: alloydbomni.dbadmin.goog/v1 kind: DBCluster metadata: name: CLUSTER_NAME spec: databaseVersion: "17.5.0" primarySpec: features: ultraFastCache: cacheSize: DISK_CACHE_SIZE localVolume: path: "LOCAL_VOLUME_PATH" nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: "LABEL_KEY" operator: "OPERATOR_VALUE" values: - "LABEL_KEY_VALUE" ...
次のように置き換えます。
CLUSTER_NAME: データベース クラスタの名前。これは、作成時に宣言したデータベース クラスタ名と同じです。DISK_CACHE_SIZE: キャッシュのサイズ(例:100Gi)。shared_buffersよりも大きい値にしてください。このフィールドは省略可能です。このフィールドの値を指定しない場合、AlloyDB Omni はディスク上の残りのスペースをすべて使用します。これは、コンテナ内の AlloyDB Omni と Kubernetes クラスタの両方に適用されます。STORAGE_CLASS_NAME: ストレージ クラスの名前。LOCAL_VOLUME_PATH: ローカル ボリュームのパス。例:/mnt/disks/raid/0LABEL_KEY: ロケーション インジケーターとして機能し、クラスタ全体に Pod を均等に分散するキーのノードラベル。例:cloud.google.com/gke-local-nvme-ssdOPERATOR_VALUE: キーと値のセットの関連付け(例:In)。パラメータは次のいずれかに設定します。-
In: values 配列は空にできません。 -
NotIn: values 配列は空にできません。 -
Exists: values 配列は空にする必要があります。 -
DoesNotExist: values 配列は空にする必要があります。 -
Gt: values 配列には、整数として解釈される単一の要素が必要です。 -
Lt: values 配列には、整数として解釈される単一の要素が必要です。
-
LABEL_KEY_VALUE: ラベルキーの値(例:true)。次のように、パラメータに文字列値の配列を設定します。- 演算子が
InまたはNotInの場合、値の配列は空にできません。 - 演算子が
ExistsまたはDoesNotExistの場合、値の配列は空にする必要があります。 - 演算子が
GtまたはLtの場合、値の配列には整数として解釈される単一の要素が必要です。
- 演算子が
- マニフェストを再度適用します。
エフェメラル ボリュームでディスク キャッシュを有効にする
emptyDir ボリュームを使用してディスク キャッシュを有効にできます。このボリュームは、Pod のライフサイクルに直接関連付けられた一時ストレージを提供します。ボリュームは、Pod がノードに割り当てられたときに作成され、Pod がそのノードで実行されている限り存続します。
Pod がノードから削除されると、emptyDir のデータは完全に削除されます。このタイプのボリュームは、一時的な高速ストレージを提供するため、キャッシュに適しています。Pod が再スケジュールされた場合、キャッシュ内のデータを永続化する必要はありません。
データベースの一時ボリュームでディスク キャッシュを有効にするには、次の操作を行います。
データベース クラスタ マニフェストを変更して、
specセクションのfeaturesセクションにultraFastCache属性を追加し、emptyDirVolumeを指定します。apiVersion: alloydbomni.dbadmin.goog/v1 kind: DBCluster metadata: name: CLUSTER_NAME spec: databaseVersion: "17.5.0" primarySpec: features: ultraFastCache: cacheSize: DISK_CACHE_SIZE emptyDirVolume: {} ...
次のように置き換えます。
CLUSTER_NAME: データベース クラスタの名前。これは、作成時に宣言したデータベース クラスタ名と同じです。DISK_CACHE_SIZE: キャッシュのサイズ(例: 200Gi)。
- マニフェストを再度適用します。
ディスク キャッシュの構成を確認する
AlloyDB Omni ディスク キャッシュを有効にしたら、iotop や iostat などの利用可能なユーティリティを使用してディスクへの読み取り / 書き込みアクティビティをモニタリングし、ディスク キャッシュにアクセスされていることを確認します。
また、AlloyDB Omni ディスク キャッシュが開いているかどうかを確認することもできます。
AlloyDB Omni のディスク キャッシュ構成を確認するには、次のコマンドを使用します。
kubectl exec -i $DATABASE_POD -c database -n $DBCLUSTER_NAMESPACE -- cat /obs/diagnostic/postgresql.log | grep "opened omni disk cache"ディスク キャッシュが正しく構成されている場合、ログに Successfully opened omni disk cache ... メッセージが記録されます。