Otimizar o armazenamento para o desempenho da consulta
Esta página apresenta as práticas recomendadas para otimizar o armazenamento do BigQuery para melhorar a performance da consulta. Você também pode otimizar o armazenamento para custo. Embora essas práticas recomendadas se concentrem principalmente em tabelas que usam o armazenamento do BigQuery, elas também podem ser aplicadas a tabelas externas.
O BigQuery armazena dados em formato de colunas. Os bancos de dados orientados por coluna são otimizados para cargas de trabalho analíticas que agregam dados sobre um número muito grande de registros. Como as colunas costumam ter mais redundância do que as linhas, essa característica permite uma maior compactação de dados usando técnicas como codificação de duração de execução. Para mais informações sobre como o BigQuery armazena dados, consulte Informações gerais do armazenamento do BigQuery. A otimização do armazenamento do BigQuery melhora o desempenho da consulta e o controle de custos.
O BigQuery fornece detalhes sobre o consumo de armazenamento dos
recursos.
Para acessar os metadados de armazenamento de tabelas, consulte as seguintes visualizações INFORMATION_SCHEMA
:
INFORMATION_SCHEMA.TABLE_STORAGE
INFORMATION_SCHEMA.TABLE_STORAGE_BY_ORGANIZATION
INFORMATION_SCHEMA.TABLE_STORAGE_USAGE_TIMELINE
INFORMATION_SCHEMA.TABLE_STORAGE_USAGE_TIMELINE_BY_ORGANIZATION
Dados da tabela de clusters
Práticas recomendadas: crie tabelas em cluster.
Para otimizar o armazenamento de consultas, comece agrupando os dados da tabela em cluster. Ao agrupar colunas usadas com frequência, é possível reduzir o volume total de dados verificados pela consulta. Para informações sobre como criar clusters, consulte Criar e usar tabelas em cluster.
Dados da tabela de partições
Prática recomendada: divida tabelas grandes com partições.
Com as partições, é possível agrupar e classificar os dados por um conjunto de características de coluna definidas, como uma coluna de número inteiro, uma coluna de unidade de tempo ou o tempo de ingestão. O particionamento melhora o desempenho da consulta e os custos de controle, reduzindo o número de bytes lidos por uma consulta.
Para mais informações sobre partições, consulte Introdução às tabelas particionadas.
Usar as configurações de expiração de tabela e partições
Prática recomendada: para otimizar o armazenamento, defina as configurações de expiração padrão paraconjuntos de dados ,mesas etabelas particionadas de dois minutos.
Controle custos de armazenamento e otimize o uso dele definindo a validade padrão da tabela para tabelas recém-criadas em um conjunto de dados. Quando uma tabela expira, ela é excluída com todos os dados que ela contém. Se você definir a propriedade quando o conjunto de dados for criado, qualquer tabela criada no conjunto de dados será excluída depois do período de expiração. Se você definir a propriedade depois que o conjunto de dados tiver sido criado, somente as novas tabelas serão excluídas depois do período de expiração.
Por exemplo, se você definir a expiração da tabela padrão como sete dias, os dados mais antigos serão excluídos automaticamente depois de uma semana.
Essa opção será útil se você precisar ter acesso apenas aos dados mais recentes. Isso também será útil se você estiver fazendo testes com dados e não precisar preservá-los.
Se as tabelas forem particionadas por data, a expiração da tabela padrão do conjunto de dados se
aplicará às partições individuais. Também é possível controlar a validade da partição
usando a sinalização time_partitioning_expiration
na ferramenta de linha de comando bq ou a configuração expirationMs
na API. Quando uma partição expira,
os dados dela são excluídos, mas a tabela particionada não é descartada mesmo
que a tabela esteja vazia.
Por exemplo, o comando a seguir expira as partições após três dias:
bq mk \ --time_partitioning_type=DAY \ --time_partitioning_expiration=259200 \ project_id:dataset.table
Agregar dados de longo prazo
Prática recomendada:identifique se os dados no nível da linha precisam ser armazenados em longo prazo e, se não, armazene apenas dados agregados de longo prazo.
Em muitos casos, os detalhes contidos nos dados transacionais ou no nível da linha são úteis a curto prazo, mas são menos referenciados a longo prazo. Nessas situações, é possível criar consultas de agregação para calcular e armazenar as métricas associadas a esses dados e, em seguida, usar a expiração da tabela ou partição para remover sistematicamente os dados no nível da linha. Isso reduz as cobranças de armazenamento e mantém as métricas disponíveis para consumo de longo prazo.
A seguir
- Saiba como otimizar os custos.
- Saiba como otimizar a consulta.
- Saiba como otimizar as funções.