Otimize o armazenamento para o desempenho das consultas

Esta página fornece práticas recomendadas para otimizar o armazenamento do BigQuery para o desempenho das consultas. Também pode otimizar o armazenamento em função do custo. Embora estas práticas recomendadas se foquem principalmente em tabelas que usam o armazenamento do BigQuery, também podem ser aplicadas a tabelas externas.

O BigQuery armazena dados em formato de colunas. As bases de dados orientadas para colunas são otimizadas para cargas de trabalho analíticas que agregam dados num número muito grande de registos. Uma vez que as colunas têm normalmente mais redundância do que as linhas, esta característica permite uma maior compressão de dados através da utilização de técnicas como a codificação por comprimento de execução. Para mais informações sobre como o BigQuery armazena dados, consulte o artigo Vista geral do armazenamento do BigQuery. A otimização do armazenamento do BigQuery melhora o desempenho das consultas e controla os custos.

O BigQuery fornece detalhes sobre o consumo de armazenamento dos seus recursos. Para ver os metadados de armazenamento de tabelas, consulte as seguintes INFORMATION_SCHEMAvistas:

Dados da tabela de cluster

Prática recomendada: crie tabelas agrupadas.

Para otimizar o armazenamento para consultas, comece por agrupar os dados das tabelas. Ao agrupar colunas usadas com frequência, pode reduzir o volume total de dados analisados pela consulta. Para ver informações sobre como criar clusters, consulte o artigo Crie e use tabelas agrupadas.

Dados da tabela de partição

Prática recomendada: divida tabelas grandes com partições.

Com as partições, pode agrupar e ordenar os dados por um conjunto de características de colunas definidas, como uma coluna de números inteiros, uma coluna de unidades de tempo ou a hora de carregamento. A partição melhora o desempenho das consultas e controla os custos reduzindo o número de bytes lidos por uma consulta.

Para mais informações sobre partições, consulte o artigo Introdução às tabelas particionadas.

Use as definições de expiração de tabelas e partições

Prática recomendada: para otimizar o armazenamento, configure as predefinições de validade para conjuntos de dados, tabelas e tabelas particionadas.

Pode controlar os custos de armazenamento e otimizar a utilização do armazenamento definindo a validade predefinida das tabelas recém-criadas num conjunto de dados. Quando uma tabela expira, é eliminada juntamente com todos os dados que contém. Se definir a propriedade quando o conjunto de dados é criado, qualquer tabela criada no conjunto de dados é eliminada após o período de validade. Se definir a propriedade após a criação do conjunto de dados, apenas as novas tabelas são eliminadas após o período de expiração.

Por exemplo, se definir a expiração predefinida da tabela para sete dias, os dados mais antigos são eliminados automaticamente após uma semana.

Esta opção é útil se precisar de aceder apenas aos dados mais recentes. Também é útil se estiver a experimentar dados e não precisar de os preservar.

Se as suas tabelas estiverem particionadas por data, a expiração predefinida da tabela do conjunto de dados aplica-se às partições individuais. Também pode controlar a expiração das partições através da flag time_partitioning_expiration na ferramenta de linhas de comando bq ou da definição de configuração expirationMs na API. Quando uma partição expira, os dados na partição são eliminados, mas a tabela particionada não é eliminada, mesmo que a tabela esteja vazia.

Por exemplo, o seguinte comando faz com que as partições expirem após três dias:

bq mk \
--time_partitioning_type=DAY \
--time_partitioning_expiration=259200 \
project_id:dataset.table

Agregue dados a longo prazo

Prática recomendada: identifique se os dados ao nível da linha têm de ser armazenados a longo prazo e, caso contrário, armazene apenas dados agregados a longo prazo.

Em muitos casos, os detalhes contidos nos dados transacionais ou ao nível da linha são úteis a curto prazo, mas são menos referenciados a longo prazo. Nestas situações, pode criar consultas de agregação para calcular e armazenar as métricas associadas a estes dados e, em seguida, usar a expiração de tabelas ou partições para remover sistematicamente os dados ao nível da linha. Isto reduz os custos de armazenamento ao mesmo tempo que mantém as métricas disponíveis para consumo a longo prazo.

O que se segue?