Otimizar a performance em buckets com namespace hierárquico ativado

Esta página oferece orientações sobre como otimizar a performance em buckets com namespace hierárquico ativado.

Como listar objetos

Confira a seguir as considerações de desempenho para listar objetos:

  • Em buckets com namespace hierárquico ativado, listar todos os objetos de um bucket inteiro ou com um prefixo consome muitos recursos, porque a operação precisa percorrer cada pasta e subpasta, semelhante ao comando ls -r em um sistema de arquivos. Consequentemente, quanto mais pastas houver no bucket, mais lenta será a listagem de objetos. Um grande número de pastas vazias também pode afetar negativamente a performance da listagem de objetos. Para não afetar a performance, recomendamos que você maximize o número de objetos em cada pasta e exclua regularmente as pastas vazias.
  • A listagem ou recuperação de objetos e subpastas em uma pasta específica usando um delimitador e um prefixo específico é mais eficiente em buckets com namespace hierárquico ativado, porque os objetos são organizados em uma estrutura de pastas. Para otimizar a performance da listagem ao usar um delimitador e um prefixo específico, defina o parâmetro includeFoldersAsPrefixes. Caso contrário, o Cloud Storage vai realizar verificações adicionais para excluir pastas vazias, o que pode desacelerar a operação. Para mais informações sobre como usar includeFoldersAsPrefixes ao listar objetos, consulte Como listar objetos.

Gerenciamento de pastas

Para um gerenciamento eficiente de pastas, recomendamos o seguinte:

  • Criar estrutura de pastas com antecedência:em vez de depender da criação automática de pastas durante as operações de upload, reescrita e composição de objetos, use a operação de criação de pastas para ter a estrutura de pastas desejada com antecedência. A pré-criação da estrutura de pastas melhora a consistência e a previsibilidade do desempenho.
  • Maximizar a proporção de objetos por pasta:procure ter uma proporção alta de objetos para pastas, porque isso reduz a sobrecarga associada à criação e ao gerenciamento de pastas.
  • Limitar solicitações de criação e exclusão de pastas:criar ou excluir pastas consome mais recursos do que trabalhar com objetos individuais devido à natureza hierárquica. Para garantir um bom desempenho, o Cloud Storage limita essas operações a 1.000 solicitações por segundo para cada bucket. As solicitações que excedem esse limite não são restritas explicitamente, mas a disponibilidade de recursos determina se elas podem ser processadas.
  • Exclua regularmente as pastas vazias:as pastas vazias podem se acumular, especialmente quando você usa o Gerenciamento do ciclo de vida de objetos ou exclui objetos sem excluir explicitamente as pastas mãe. As pastas acumuladas podem afetar o desempenho da operação de listagem de objetos e outras operações relacionadas a pastas. Confira a seguir alguns dos métodos que podem ser usados para excluir pastas vazias:

    • Ao usar o Cloud Storage FUSE ou o conector do Cloud Storage para interagir com um bucket ativado com namespace hierárquico, a exclusão de um diretório exclui a pasta correspondente no bucket.
    • É possível usar uma exclusão recursiva para excluir pastas automaticamente ao usar o console ou a Google Cloud CLI.
    • Você pode usar um script ou um processo automatizado para excluir periodicamente as pastas vazias. O script a seguir fornece uma abordagem básica para excluir pastas vazias. O script exclui as pastas sequencialmente, o que pode ser lento para buckets grandes. Por isso, considere otimizar o script para ambientes de produção. Além disso, o script exclui todas as pastas vazias (criadas implicitamente ou explicitamente), incluindo as gerenciadas e as políticas do IAM associadas. Se você precisar reter pastas específicas e gerenciadas, ajuste o script com base nos recursos que você quer manter.

      # List all the folders under <bucket>/<prefix> and export results into
      # folders.txt
      gcloud storage folders list gs://<bucket>/<prefix> | grep storage_url | sed 's/storage_url: //' > folders.txt
      
      # Reverse the folder list and export results into folders-reverse.txt
      sed '1!G;h;$!d' folders.txt > folders-reverse.txt
      
      # Try deleting each folder in the reverse order (to guarantee child
      # folders are deleted before parent folders). This will fail for
      # non-empty folders, so only empty folders will be deleted
      xargs -I{} gcloud storage folders delete "{}" < folders-reverse.txt
      

A seguir