Além dos buffers compartilhados na memória do PostgreSQL padrão, o cache em disco do AlloyDB Omni permite armazenar buffers em armazenamento rápido, como unidades de estado sólido (SSDs). O cache em disco acelera a recuperação de dados em instalações do AlloyDB Omni com diretórios de dados localizados em armazenamento mais lento.
Assim como os buffers compartilhados do PostgreSQL, o cache de disco do AlloyDB Omni não é permanente, o que significa que os dados armazenados em cache são perdidos na reinicialização.
Por padrão, o cache de disco do AlloyDB Omni usa todo o armazenamento informado pelo sistema de arquivos. É possível definir a quantidade de armazenamento reservada para dados de cache usando o parâmetro omni_disk_cache_file_size.
Ativar o cache de disco do AlloyDB Omni
As etapas usadas para ativar o cache de disco do AlloyDB Omni dependem de você executar o AlloyDB Omni em um contêiner ou em um cluster do Kubernetes.
Ativar o cache de disco em um volume genérico
É possível ativar o cache em disco usando um volume genérico.
Para ativar o cache em disco em um volume genérico no operador do Kubernetes do AlloyDB Omni, é necessário ter um volume permanente pronto com antecedência e um storageClass.
Por exemplo, se você usa o GKE e não tem o volume permanente e o storageClass prontos, verifique se você fez o seguinte antes de ativar o cache de disco em um volume genérico:
- Criou um cluster com armazenamento baseado em SSD local.
- Formate o volume para o sistema de arquivos ext4 usando a etapa 1 de Executar o provisionador estático do volume local.
- Crie manualmente um volume permanente para cada SSD no cluster com o
storageClassque define o armazenamento permanente em um dispositivo de armazenamento.
Para ativar o cache de disco em um volume genérico para seu banco de dados, siga estas etapas:
Modifique o manifesto do cluster de banco de dados para adicionar o atributo
ultraFastCacheà seçãofeaturesda seçãospec: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" ...
Substitua:
DB_CLUSTER_NAME: o nome do cluster de banco de dados. É o mesmo nome de cluster de banco de dados que você declarou ao criá-lo.DISK_CACHE_SIZE: o tamanho do cache, por exemplo,100Gi. Precisa ser um valor maior do queshared_buffers. Esse campo é opcional. Se você não especificar o valor desse campo, o AlloyDB Omni vai usar todo o espaço restante no disco, o que se aplica ao AlloyDB Omni em um contêiner e em um cluster do Kubernetes.STORAGE_CLASS_NAME: o nome dostorage classdo volume de cache ultrarrápido. Por exemplo,local-storage.
- Reaplique o manifesto.
Ativar o cache de disco em um volume local
Se você quiser usar um volume local, não é necessário criar um volume permanente. Em vez disso, use a seguinte otimização.
Por exemplo, se você usa o GKE e não tem o volume permanente e o storageClass prontos, verifique se você fez o seguinte antes de ativar o cache de disco em um volume local:
- Criou um cluster com armazenamento baseado em SSD local.
- Formate o volume para o sistema de arquivos
ext4usando a etapa 1 de Executar o provisionador estático do volume local.
Para ativar o cache de disco em um volume local do banco de dados, faça o seguinte:
Modifique o manifesto do cluster de banco de dados para adicionar o atributo
ultraFastCacheà seçãofeaturesda seçãospec: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" ...
Substitua:
CLUSTER_NAME: o nome do cluster de banco de dados. É o mesmo nome de cluster de banco de dados que você declarou ao criá-lo.DISK_CACHE_SIZE: o tamanho do cache, por exemplo,100Gi. Precisa ser um valor maior do queshared_buffers. Esse campo é opcional. Se você não especificar o valor desse campo, o AlloyDB Omni vai usar todo o espaço restante no disco, o que se aplica ao AlloyDB Omni em um contêiner e em um cluster do Kubernetes.STORAGE_CLASS_NAME: o nome da classe de armazenamento.LOCAL_VOLUME_PATH: o caminho para o volume local, por exemplo,/mnt/disks/raid/0.LABEL_KEY: o rótulo do nó para a chave que serve como um indicador de local e facilita a distribuição uniforme de pods no cluster, por exemplo,cloud.google.com/gke-local-nvme-ssd.OPERATOR_VALUE: a relação da chave com um conjunto de valores, por exemplo,In. Defina o parâmetro como um dos seguintes:-
In: a matriz de valores não pode estar vazia. -
NotIn: a matriz de valores não pode estar vazia. -
Exists: a matriz de valores precisa estar vazia. -
DoesNotExist: a matriz de valores precisa estar vazia. -
Gt: a matriz de valores precisa ter um único elemento, que será interpretado como um número inteiro. -
Lt: a matriz de valores precisa ter um único elemento, que será interpretado como um número inteiro.
-
LABEL_KEY_VALUE: o valor da chave do rótulo, por exemplo,true. Defina o parâmetro como uma matriz de valores de string da seguinte maneira:- Se o operador for
InouNotIn, a matriz de valores não poderá estar vazia. - Se o operador for
ExistsouDoesNotExist, a matriz de valores precisará estar vazia. - Se o operador for
GtouLt, a matriz de valores precisará ter um único elemento, que será interpretado como um número inteiro.
- Se o operador for
- Reaplique o manifesto.
Ativar o cache de disco em um volume temporário
É possível ativar o cache em disco usando um volume emptyDir, que fornece armazenamento temporário vinculado diretamente ao ciclo de vida do seu pod. O volume é criado quando um pod é atribuído a um nó e existe enquanto o pod estiver em execução nesse nó.
Quando um pod é removido de um nó, os dados no emptyDir são excluídos permanentemente. Esse tipo de volume é adequado para um cache porque oferece armazenamento temporário e rápido. Os dados no cache não precisam ser persistidos se o pod for reagendado.
Para ativar o cache de disco em um volume efêmero para seu banco de dados, siga estas etapas:
Modifique o manifesto do cluster de banco de dados para adicionar o atributo
ultraFastCacheà seçãofeaturesda seçãospece especifiqueemptyDirVolume:apiVersion: alloydbomni.dbadmin.goog/v1 kind: DBCluster metadata: name: CLUSTER_NAME spec: databaseVersion: "17.5.0" primarySpec: features: ultraFastCache: cacheSize: DISK_CACHE_SIZE emptyDirVolume: {} ...
Substitua:
CLUSTER_NAME: o nome do cluster de banco de dados. É o mesmo nome de cluster de banco de dados que você declarou ao criá-lo.DISK_CACHE_SIZE: o tamanho do cache, por exemplo, 200Gi.
- Reaplique o manifesto.
Verificar a configuração do cache de disco
Depois de ativar o cache em disco do AlloyDB Omni, verifique se ele está sendo acessado monitorando a atividade de leitura e gravação nos discos usando utilitários disponíveis, como iotop ou iostat.
Além disso, você pode verificar se o cache de disco do AlloyDB Omni está aberto.
Para verificar a configuração do cache de disco do AlloyDB Omni, use o seguinte comando.
kubectl exec -i $DATABASE_POD -c database -n $DBCLUSTER_NAMESPACE -- cat /obs/diagnostic/postgresql.log | grep "opened omni disk cache"Se o cache de disco estiver configurado corretamente, a mensagem Successfully opened omni disk cache ... vai aparecer nos registros.
A seguir
- Sobre o gerenciamento automático de memória
- Sobre discos SSD locais
- Como criar e iniciar uma instância de VM