Vista TABLE_STORAGE
A vista INFORMATION_SCHEMA.TABLE_STORAGE
oferece um resumo atual da utilização do armazenamento para tabelas e vistas materializadas. Quando consulta a vista INFORMATION_SCHEMA.TABLE_STORAGE
, os resultados da consulta contêm uma linha para cada tabela ou vista materializada do projeto atual.
Os dados na vista INFORMATION_SCHEMA.TABLE_STORAGE
não são mantidos em tempo real e as atualizações são normalmente atrasadas alguns segundos ou minutos. As alterações ao armazenamento causadas apenas pela partição ou pela expiração da tabela, ou causadas por modificações na janela de viagem no tempo do conjunto de dados, podem demorar até um dia a serem refletidas na vista INFORMATION_SCHEMA.TABLE_STORAGE
.
Nos casos de eliminação de conjuntos de dados em que o conjunto de dados contém mais de 1000 tabelas, esta vista não reflete a alteração até que o intervalo de tempo do conjunto de dados eliminado tenha passado.
As vistas de armazenamento de tabelas oferecem-lhe uma forma conveniente de observar o seu consumo de armazenamento atual e, além disso, fornecem detalhes sobre se o seu armazenamento usa bytes lógicos não comprimidos, bytes físicos comprimidos ou bytes de viagem no tempo. Estas informações podem ajudar em tarefas como o planeamento do crescimento futuro e a compreensão dos padrões de atualização das tabelas.
Dados incluídos nas *_BYTES
colunas
As colunas *_BYTES
nas vistas de armazenamento de tabelas incluem informações sobre a sua utilização de bytes de armazenamento. Estas informações são determinadas através da análise da sua utilização de armazenamento para vistas materializadas e os seguintes tipos de tabelas:
- Tabelas permanentes criadas através de qualquer um dos métodos descritos no artigo Crie e use tabelas.
- Tabelas temporárias criadas em sessões. Estas tabelas são colocadas em conjuntos de dados com nomes gerados, como "_c018003e063d09570001ef33ae401fad6ab92a6a".
- Tabelas temporárias criadas em consultas com várias declarações ("scripts"). Estas tabelas são colocadas em conjuntos de dados com nomes gerados, como "_script72280c173c88442c3a7200183a50eeeaa4073719".
Os dados armazenados na
cache de resultados da consulta
não lhe são cobrados e, por isso, não estão incluídos nos valores da coluna *_BYTES
.
Os clones e as capturas de ecrã mostram os valores das colunas *_BYTES
como se fossem tabelas completas, em vez de mostrarem a diferença em relação ao armazenamento usado pela tabela base, pelo que são uma sobrestimação. A sua fatura tem em conta corretamente esta diferença na utilização do armazenamento. Para mais informações sobre os bytes delta armazenados e faturados por clones e
cópias instantâneas, consulte a TABLE_STORAGE_USAGE_TIMELINE
vista.
Preveja a faturação do armazenamento
Para prever a faturação de armazenamento mensal de um conjunto de dados, pode usar as colunas logical
ou physical *_BYTES
nesta vista, consoante o modelo de faturação de armazenamento do conjunto de dados usado pelo conjunto de dados. Tenha em atenção que esta é apenas uma previsão aproximada e
os valores de faturação precisos são calculados com base na utilização pela
infraestrutura de faturação do armazenamento do BigQuery e visíveis na
faturação do Google Cloud.
Para conjuntos de dados que usam um modelo de faturação lógico, pode prever os custos de armazenamento mensais da seguinte forma:
((ACTIVE_LOGICAL_BYTES
value / POW
(1024, 3)) * active logical bytes pricing) +
((LONG_TERM_LOGICAL_BYTES
value / POW
(1024, 3)) * long-term logical bytes pricing)
O valor ACTIVE_LOGICAL_BYTES
de uma tabela reflete os bytes ativos usados atualmente por essa tabela.
Para conjuntos de dados que usam um modelo de faturação físico, pode prever os custos de armazenamento da seguinte forma:
((ACTIVE_PHYSICAL_BYTES + FAIL_SAFE_PHYSICAL_BYTES
valor / POW
(1024, 3)) * preço dos bytes físicos ativos) +
((LONG_TERM_PHYSICAL_BYTES
valor / POW
(1024, 3)) * preço dos bytes físicos a longo prazo)
O valor ACTIVE_PHYSICAL_BYTES
de uma tabela reflete os bytes ativos usados atualmente por essa tabela, além dos bytes usados para a funcionalidade de viagem no tempo dessa tabela.
Para ver os bytes ativos apenas da tabela, subtraia o valor TIME_TRAVEL_PHYSICAL_BYTES
ao valor ACTIVE_PHYSICAL_BYTES
.
Para mais informações, consulte os preços de armazenamento.
Funções necessárias
Para obter as autorizações de que
precisa para consultar a vista INFORMATION_SCHEMA.TABLE_STORAGE
,
peça ao seu administrador para lhe conceder a função de IAM de
leitor de metadados do BigQuery (roles/bigquery.metadataViewer
)
no projeto.
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Esta função predefinida contém
as autorizações necessárias para consultar a vista INFORMATION_SCHEMA.TABLE_STORAGE
. Para ver as autorizações exatas que são
necessárias, expanda a secção Autorizações necessárias:
Autorizações necessárias
São necessárias as seguintes autorizações para consultar a vista INFORMATION_SCHEMA.TABLE_STORAGE
:
-
bigquery.tables.get
-
bigquery.tables.list
Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.
Esquema
A vista INFORMATION_SCHEMA.TABLE_STORAGE
tem o seguinte esquema:
Nome da coluna | Tipo de dados | Valor |
---|---|---|
PROJECT_ID |
STRING |
O ID do projeto que contém o conjunto de dados. |
PROJECT_NUMBER |
INT64 |
O número do projeto que contém o conjunto de dados. |
TABLE_CATALOG |
STRING |
O ID do projeto que contém o conjunto de dados. |
TABLE_SCHEMA |
STRING |
O nome do conjunto de dados que contém a tabela ou a vista materializada,
também conhecido como datasetId . |
TABLE_NAME |
STRING |
O nome da tabela ou da vista materializada, também conhecido como
tableId . |
CREATION_TIME |
TIMESTAMP |
A hora de criação da tabela. |
TOTAL_ROWS |
INT64 |
O número total de linhas na tabela ou na vista materializada. |
TOTAL_PARTITIONS |
INT64 |
O número de partições presentes na tabela ou na vista materializada. As tabelas não particionadas devolvem 0. |
TOTAL_LOGICAL_BYTES |
INT64 |
O número total de bytes lógicos (não comprimidos) na tabela ou na vista materializada. |
ACTIVE_LOGICAL_BYTES |
INT64 |
Número de bytes lógicos (não comprimidos) com menos de 90 dias. |
LONG_TERM_LOGICAL_BYTES |
INT64 |
Número de bytes lógicos (não comprimidos) com mais de 90 dias. |
CURRENT_PHYSICAL_BYTES |
INT64 |
Número total de bytes físicos para o armazenamento atual da tabela em todas as partições. |
TOTAL_PHYSICAL_BYTES |
INT64 |
Número total de bytes físicos (comprimidos) usados para armazenamento, incluindo bytes ativos, a longo prazo e de viagem no tempo (dados eliminados ou alterados). Os bytes de segurança (dados eliminados ou alterados retidos após o período de recuperação) não estão incluídos. |
ACTIVE_PHYSICAL_BYTES |
INT64 |
Número de bytes físicos (comprimidos) com menos de 90 dias, incluindo bytes de viagem no tempo (dados eliminados ou alterados). |
LONG_TERM_PHYSICAL_BYTES |
INT64 |
Número de bytes físicos (comprimidos) com mais de 90 dias. |
TIME_TRAVEL_PHYSICAL_BYTES |
INT64 |
Número de bytes físicos (comprimidos) usados pelo armazenamento de viagem no tempo (dados eliminados ou alterados). |
STORAGE_LAST_MODIFIED_TIME |
TIMESTAMP |
A hora mais recente em que os dados foram escritos na tabela. |
DELETED |
BOOLEAN |
Indica se a tabela foi eliminada ou não. |
TABLE_TYPE |
STRING |
O tipo de tabela. Por exemplo, BASE TABLE .
|
MANAGED_TABLE_TYPE |
STRING |
Esta coluna está em pré-visualização. O tipo gerido da tabela. Por exemplo,
NATIVE ou BIGLAKE .
|
FAIL_SAFE_PHYSICAL_BYTES |
INT64 |
Número de bytes físicos (comprimidos) usados pelo armazenamento à prova de falhas (dados eliminados ou alterados). |
LAST_METADATA_INDEX_REFRESH_TIME |
TIMESTAMP |
A hora da última atualização do índice de metadados da tabela. |
TABLE_DELETION_REASON |
STRING |
Motivo da eliminação da tabela se o campo DELETED for verdadeiro. Os
valores possíveis são os seguintes:
|
TABLE_DELETION_TIME |
TIMESTAMP |
A hora de eliminação da tabela. |
Âmbito e sintaxe
As consultas nesta vista têm de incluir um qualificador de região. A tabela seguinte explica o âmbito da região para esta vista:
Nome da visualização de propriedade | Âmbito do recurso | Âmbito da região |
---|---|---|
[`PROJECT_ID`.]`region-REGION`.INFORMATION_SCHEMA.TABLE_STORAGE[_BY_PROJECT] |
Nível do projeto | REGION |
-
Opcional:
PROJECT_ID
: o ID do seu projeto do Google Cloud Google Cloud. Se não for especificado, é usado o projeto predefinido. -
REGION
: qualquer nome da região do conjunto de dados. Por exemplo,`region-us`
.
O exemplo seguinte mostra como devolver informações de armazenamento para tabelas num projeto especificado:
SELECT * FROM `myProject`.`region-REGION`.INFORMATION_SCHEMA.TABLE_STORAGE;
O exemplo seguinte mostra como devolver informações de armazenamento para tabelas numa região especificada:
SELECT * FROM `region-REGION`.INFORMATION_SCHEMA.TABLE_STORAGE_BY_PROJECT;
Exemplos
Exemplo 1:
O exemplo seguinte mostra o total de bytes lógicos faturados para o projeto atual.
SELECT SUM(total_logical_bytes) AS total_logical_bytes FROM `region-REGION`.INFORMATION_SCHEMA.TABLE_STORAGE;
O resultado é semelhante ao seguinte:
+---------------------+ | total_logical_bytes | +---------------------+ | 971329178274633 | +---------------------+
Exemplo 2:
O exemplo seguinte mostra diferentes bytes de armazenamento em GiB ao nível dos conjuntos de dados para o projeto atual.
SELECT table_schema AS dataset_name, -- Logical SUM(total_logical_bytes) / power(1024, 3) AS total_logical_gib, SUM(active_logical_bytes) / power(1024, 3) AS active_logical_gib, SUM(long_term_logical_bytes) / power(1024, 3) AS long_term_logical_gib, -- Physical SUM(total_physical_bytes) / power(1024, 3) AS total_physical_gib, SUM(active_physical_bytes) / power(1024, 3) AS active_physical_gib, SUM(active_physical_bytes - time_travel_physical_bytes) / power(1024, 3) AS active_no_tt_physical_gib, SUM(long_term_physical_bytes) / power(1024, 3) AS long_term_physical_gib, SUM(time_travel_physical_bytes) / power(1024, 3) AS time_travel_physical_gib, SUM(fail_safe_physical_bytes) / power(1024, 3) AS fail_safe_physical_gib FROM `region-REGION`.INFORMATION_SCHEMA.TABLE_STORAGE WHERE table_type ='BASE TABLE' GROUP BY table_schema ORDER BY dataset_name
Exemplo 3:
O exemplo seguinte mostra como prever a diferença de preços por conjunto de dados entre os modelos de faturação lógicos e físicos para os próximos 30 dias. Este exemplo pressupõe que a utilização de armazenamento futura é constante nos próximos 30 dias a partir do momento em que a consulta foi executada. Tenha em atenção que a previsão está limitada às tabelas base e exclui todos os outros tipos de tabelas num conjunto de dados.
Os preços usados nas variáveis de preços para esta consulta são para a região de us-central1
. Se quiser executar esta consulta para uma região diferente,
atualize as variáveis de preços adequadamente. Consulte os preços de armazenamento para ver informações de preços.
Abra a página do BigQuery na Google Cloud consola.
Introduza a seguinte consulta GoogleSQL na caixa Editor de consultas.
INFORMATION_SCHEMA
requer a sintaxe GoogleSQL. O GoogleSQL é a sintaxe predefinida na Google Cloud consola.DECLARE active_logical_gib_price FLOAT64 DEFAULT 0.02; DECLARE long_term_logical_gib_price FLOAT64 DEFAULT 0.01; DECLARE active_physical_gib_price FLOAT64 DEFAULT 0.04; DECLARE long_term_physical_gib_price FLOAT64 DEFAULT 0.02; WITH storage_sizes AS ( SELECT table_schema AS dataset_name, -- Logical SUM(IF(deleted=false, active_logical_bytes, 0)) / power(1024, 3) AS active_logical_gib, SUM(IF(deleted=false, long_term_logical_bytes, 0)) / power(1024, 3) AS long_term_logical_gib, -- Physical SUM(active_physical_bytes) / power(1024, 3) AS active_physical_gib, SUM(active_physical_bytes - time_travel_physical_bytes) / power(1024, 3) AS active_no_tt_physical_gib, SUM(long_term_physical_bytes) / power(1024, 3) AS long_term_physical_gib, -- Restorable previously deleted physical SUM(time_travel_physical_bytes) / power(1024, 3) AS time_travel_physical_gib, SUM(fail_safe_physical_bytes) / power(1024, 3) AS fail_safe_physical_gib, FROM `region-REGION`.INFORMATION_SCHEMA.TABLE_STORAGE_BY_PROJECT WHERE total_physical_bytes + fail_safe_physical_bytes > 0 -- Base the forecast on base tables only for highest precision results AND table_type = 'BASE TABLE' GROUP BY 1 ) SELECT dataset_name, -- Logical ROUND(active_logical_gib, 2) AS active_logical_gib, ROUND(long_term_logical_gib, 2) AS long_term_logical_gib, -- Physical ROUND(active_physical_gib, 2) AS active_physical_gib, ROUND(long_term_physical_gib, 2) AS long_term_physical_gib, ROUND(time_travel_physical_gib, 2) AS time_travel_physical_gib, ROUND(fail_safe_physical_gib, 2) AS fail_safe_physical_gib, -- Compression ratio ROUND(SAFE_DIVIDE(active_logical_gib, active_no_tt_physical_gib), 2) AS active_compression_ratio, ROUND(SAFE_DIVIDE(long_term_logical_gib, long_term_physical_gib), 2) AS long_term_compression_ratio, -- Forecast costs logical ROUND(active_logical_gib * active_logical_gib_price, 2) AS forecast_active_logical_cost, ROUND(long_term_logical_gib * long_term_logical_gib_price, 2) AS forecast_long_term_logical_cost, -- Forecast costs physical ROUND((active_no_tt_physical_gib + time_travel_physical_gib + fail_safe_physical_gib) * active_physical_gib_price, 2) AS forecast_active_physical_cost, ROUND(long_term_physical_gib * long_term_physical_gib_price, 2) AS forecast_long_term_physical_cost, -- Forecast costs total ROUND(((active_logical_gib * active_logical_gib_price) + (long_term_logical_gib * long_term_logical_gib_price)) - (((active_no_tt_physical_gib + time_travel_physical_gib + fail_safe_physical_gib) * active_physical_gib_price) + (long_term_physical_gib * long_term_physical_gib_price)), 2) AS forecast_total_cost_difference FROM storage_sizes ORDER BY (forecast_active_logical_cost + forecast_active_physical_cost) DESC;
Clique em Executar.
O resultado é semelhante ao seguinte:
+--------------+--------------------+-----------------------+---------------------+------------------------+--------------------------+-----------------------------+------------------------------+----------------------------------+-------------------------------+----------------------------------+--------------------------------+ | dataset_name | active_logical_gib | long_term_logical_gib | active_physical_gib | long_term_physical_gib | active_compression_ratio | long_term_compression_ratio | forecast_active_logical_cost | forecaset_long_term_logical_cost | forecast_active_physical_cost | forecast_long_term_physical_cost | forecast_total_cost_difference | +--------------+--------------------+-----------------------+---------------------+------------------------+--------------------------+-----------------------------+------------------------------+----------------------------------+-------------------------------+----------------------------------+--------------------------------+ | dataset1 | 10.0 | 10.0 | 1.0 | 1.0 | 10.0 | 10.0 | 0.2 | 0.1 | 0.04 | 0.02 | 0.24 |