Acelerar o desempenho do banco de dados usando o cache do disco

Selecione uma versão da documentação:

Esta página descreve como provisionar, configurar e usar o cache em disco no AlloyDB Omni para aumentar a performance da instalação do AlloyDB Omni.

Além dos buffers compartilhados na memória padrão do PostgreSQL, 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 em disco do AlloyDB Omni não é persistente, o que significa que os dados armazenados em cache são perdidos na reinicialização.

Por padrão, o cache em disco do AlloyDB Omni usa todo o armazenamento informado pelo sistema de arquivos. É possível definir a quantidade de armazenamento reservado para dados de cache usando o parâmetro omni_disk_cache_file_size.

Ativar o cache em disco do AlloyDB Omni

Para ativar o cache em disco, conclua todas as subseções a seguir:

  1. Provisionar discos e criar um sistema de arquivos
  2. Ativar o cache em disco do AlloyDB Omni

Provisionar discos e criar um sistema de arquivos

Para o cache em disco do AlloyDB Omni, crie um sistema de arquivos em um ou vários discos e ative-o. Além disso, é possível usar utilitários como mdadm ou lvm para agrupar a capacidade usando vários discos e qualquer sistema de arquivos.

As etapas a seguir demonstram o uso de lvm e ext4 usando SSDs NVMe.

  1. Crie um grupo de volumes com todos os dispositivos físicos disponíveis:

    nvme_prefix="STORAGE_PREFIX"
    nvme_list=$(ls "$nvme_prefix"*)
    sudo vgcreate VOLUME_GROUP ${nvme_list}

    Substitua o seguinte:

    • STORAGE_PREFIX: o prefixo do caminho dos discos locais de destino anexados a uma máquina virtual usando a interface de memória não volátil expressa (NVMe). Por exemplo, no Google Cloud, os caminhos de dispositivos NVMe sempre começam com /dev/nvme0n.
    • VOLUME_GROUP: o nome de um grupo de volumes em que seus SSDs estão combinados. Por exemplo, omni-disk-cache-volume.
  2. Para criar um volume lógico com a capacidade livre do grupo de volumes da etapa anterior, use o seguinte comando:

    sudo lvcreate -n LOGICAL_VOLUME -l 100%FREE VOLUME_GROUP

    Substitua LOGICAL_VOLUME pelo nome de um volume lógico tratado como uma partição pelo LVM. Por exemplo, omni_disk_cache_device.

  3. Crie o sistema de arquivos ext4 no volume lógico. Se necessário, especifique outras opções de ext4 sujeitas à segurança dos dados.
    sudo mkfs.ext4 /dev/VOLUME_GROUP/LOGICAL_VOLUME
  4. Para criar um diretório que sirva como ponto de montagem na máquina host e monte o sistema de arquivos, use o seguinte comando:

    sudo mkdir /OMNI_DISK_CACHE_DIRECTORY
    sudo mount /dev/VOLUME_GROUP/LOGICAL_VOLUME /OMNI_DISK_CACHE_DIRECTORY

    Substitua OMNI_DISK_CACHE_DIRECTORY pelo nome do diretório ou um caminho para o diretório que serve como um ponto de montagem, por exemplo, omni_disk_cache_directory.

Conceder permissões ao diretório de cache em disco

Antes de ativar o cache em disco para o AlloyDB Omni, conceda permissões de acesso total ao diretório de cache em disco. Para conceder permissões, execute os seguintes comandos:

sudo chown postgres:postgres /OMNI_DISK_CACHE_DIRECTORY
sudo chmod -R a+rw  /OMNI_DISK_CACHE_DIRECTORY

Substitua OMNI_DISK_CACHE_DIRECTORY pelo caminho do diretório de cache em disco.

Ativar o cache em disco

Para ativar o cache em disco do banco de dados, siga estas etapas:

  1. Conecte-se ao banco de dados como um SUPERUSER.

    /usr/lib/postgresql/18/bin/psql -h localhost -U postgres
  2. Defina as flags da Grand Unified Configuration (GUC) omni_disk_cache_enabled e omni_disk_cache_directory.

    ALTER SYSTEM SET omni_disk_cache_enabled=on;
    ALTER SYSTEM SET omni_disk_cache_directory='/OMNI_DISK_CACHE_DIRECTORY';
    
  3. (Opcional) Por padrão, o AlloyDB Omni usa todo o espaço disponível no sistema de arquivos. Se necessário, substitua isso atualizando a flag omni_disk_cache_file_size da GUC.

    ALTER SYSTEM SET omni_disk_cache_file_size=SIZE_IN_MB;
    

    Substitua SIZE_IN_MB pela quantidade de espaço em disco, em MB, que você quer que o cache em disco use.

  4. Reinicie o AlloyDB Omni.

    sudo systemctl restart alloydbomni18

Verificar a configuração do cache em 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, é possível verificar se o cache em disco do AlloyDB Omni está aberto.

Para verificar a configuração do cache em disco do AlloyDB Omni, use o seguinte comando.

sudo journalctl -u alloydbomni18 | grep "opened omni disk cache"

Se o cache em disco estiver configurado corretamente, a mensagem Successfully opened omni disk cache ... vai aparecer nos registros.

A seguir