Além das buffers partilhadas na memória padrão do PostgreSQL, a cache de disco do AlloyDB Omni permite armazenar buffers em armazenamento rápido, como unidades de estado sólido (SSDs). A colocação em cache no disco acelera a obtenção de dados em instalações do AlloyDB Omni com diretórios de dados localizados num armazenamento mais lento.
Tal como as buffers partilhados do PostgreSQL, a cache de disco do AlloyDB Omni não é persistente, o que significa que os dados em cache são perdidos no reinício.
Por predefinição, a cache de disco do AlloyDB Omni usa todo o armazenamento comunicado pelo sistema de ficheiros. Pode definir a quantidade de armazenamento reservada para dados de colocação em cache através do parâmetro omni_disk_cache_file_size.
Ative a cache do disco do AlloyDB Omni
Os passos que usa para ativar a cache de disco para o AlloyDB Omni dependem do facto de executar o AlloyDB Omni num contentor ou num cluster do Kubernetes.
Ative a cache de disco num volume genérico
Pode ativar a cache de disco através de um volume genérico.
Para ativar a cache de disco num volume genérico no operador do AlloyDB Omni Kubernetes, precisa de um volume persistente preparado antecipadamente e de um storageClass.
Por exemplo, se usar o GKE e não tiver o volume persistente e storageClass prontos, certifique-se de que realizou o seguinte antes de ativar a cache de disco num volume genérico:
- Criou um cluster com armazenamento baseado em SSD local.
- Formatou o volume para o sistema de ficheiros ext4 através do passo 1 de Executar o aprovisionador estático de volumes locais.
- Criou manualmente um volume persistente para cada SSD no seu cluster com o
storageClassque define o armazenamento persistente num dispositivo de armazenamento.
Para ativar a cache de disco num volume genérico para a sua base de dados, conclua os passos seguintes:
Modifique o manifesto do cluster da base de dados para adicionar o atributo
ultraFastCacheà secçãofeaturesda secçã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 o seguinte:
DB_CLUSTER_NAME: o nome do cluster da base de dados. É o mesmo nome do cluster da base de dados que declarou quando o criou.DISK_CACHE_SIZE: o tamanho da cache, por exemplo,100Gi. Tem de ser superior ashared_buffers. Este campo é opcional. Se não especificar o valor deste campo, o AlloyDB Omni usa todo o espaço restante no disco, o que se aplica ao AlloyDB Omni num contentor e num cluster do Kubernetes.STORAGE_CLASS_NAME: o nome dostorage classdo volume de cache ultrarrápido, por exemplo,local-storage.
- Volte a aplicar o manifesto.
Ative a cache de disco num volume local
Se quiser usar um volume local, não tem de criar um volume persistente. Em alternativa, pode usar a seguinte otimização.
Por exemplo, se usar o GKE e não tiver o volume persistente e o storageClass prontos, certifique-se de que realizou o seguinte antes de ativar a cache de disco num volume local:
- Criou um cluster com armazenamento baseado em SSD local.
- Formatou o volume para o sistema de ficheiros
ext4através do passo 1 de Executar o aprovisionador estático de volume local.
Para ativar a cache de disco num volume local para a sua base de dados, faça o seguinte:
Modifique o manifesto do cluster da base de dados para adicionar o atributo
ultraFastCacheà secçãofeaturesda secçã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 o seguinte:
CLUSTER_NAME: o nome do cluster da base de dados. É o mesmo nome do cluster da base de dados que declarou quando o criou.DISK_CACHE_SIZE: o tamanho da cache, por exemplo,100Gi. Tem de ser superior ashared_buffers. Este campo é opcional. Se não especificar o valor deste campo, o AlloyDB Omni usa todo o espaço restante no disco, o que se aplica ao AlloyDB Omni num contentor e num 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: a etiqueta do nó para a chave que serve como indicador de localização 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 para uma das seguintes opções:-
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 tem de estar vazia. -
DoesNotExist: a matriz de valores tem de estar vazia. -
Gt: a matriz de valores tem de ter um único elemento, que é interpretado como um número inteiro. -
Lt: a matriz de valores tem de ter um único elemento, que é interpretado como um número inteiro.
-
LABEL_KEY_VALUE: o valor da chave da etiqueta, por exemplo,true. Defina o parâmetro como uma matriz de valores de string da seguinte forma:- Se o operador for
InouNotIn, a matriz de valores não pode estar vazia. - Se o operador for
ExistsouDoesNotExist, a matriz de valores tem de estar vazia. - Se o operador for
GtouLt, a matriz de valores tem de ter um único elemento, que é interpretado como um número inteiro.
- Se o operador for
- Volte a aplicar o manifesto.
Ative a cache de disco num volume efémero
Pode ativar a cache de disco através de um volume emptyDir, que oferece armazenamento temporário diretamente associado ao ciclo de vida do seu pod. O volume é criado quando um pod é atribuído a um nó e existe enquanto o pod for executado nesse nó.
Quando um pod é removido de um nó, os dados no emptyDir são eliminados permanentemente. Este tipo de volume é adequado para uma cache porque oferece armazenamento temporário e rápido. Não é necessário manter os dados na cache se o pod for reagendado.
Para ativar a cache de disco num volume efémero para a sua base de dados, conclua os seguintes passos:
Modifique o manifesto do cluster da base de dados para adicionar o atributo
ultraFastCacheà secçãofeaturesda secçã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 o seguinte:
CLUSTER_NAME: o nome do cluster da base de dados. É o mesmo nome do cluster da base de dados que declarou quando o criou.DISK_CACHE_SIZE: o tamanho da cache, por exemplo, 200Gi.
- Volte a aplicar o manifesto.
Valide a configuração da cache de disco
Depois de ativar a cache de disco do AlloyDB Omni, verifique se a cache de disco é acedida monitorizando a atividade de leitura e escrita nos discos através de utilitários disponíveis, como iotop ou iostat.
Além disso, pode verificar se a cache de disco do AlloyDB Omni está aberta.
Para validar a configuração da 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 armazenamento em cache no disco estiver configurado corretamente, a mensagem Successfully opened omni disk cache ... é apresentada nos registos.
O que se segue?
- Acerca da gestão automática de memória
- Acerca dos discos SSD locais
- Criar e iniciar uma instância de VM