Vista TABLE_STORAGE
La vista INFORMATION_SCHEMA.TABLE_STORAGE
ofrece una vista general del uso del almacenamiento de tablas y vistas materializadas. Cuando consultas la vista INFORMATION_SCHEMA.TABLE_STORAGE
, los resultados de la consulta contienen una fila por cada tabla o vista materializada del proyecto actual.
Los datos de la vista INFORMATION_SCHEMA.TABLE_STORAGE
no se conservan en tiempo real y las actualizaciones suelen retrasarse entre unos segundos y unos minutos. Los cambios en el almacenamiento que se deban únicamente a la caducidad de particiones o tablas, o a modificaciones en el periodo de viaje en el tiempo del conjunto de datos, pueden tardar hasta un día en reflejarse en la vista INFORMATION_SCHEMA.TABLE_STORAGE
.
En los casos de eliminación de conjuntos de datos que contengan más de 1000 tablas, esta vista no reflejará el cambio hasta que haya transcurrido el periodo de recuperación del conjunto de datos eliminado.
Las vistas de almacenamiento de tablas te ofrecen una forma cómoda de observar el consumo de almacenamiento actual y, además, proporcionan detalles sobre si el almacenamiento utiliza bytes lógicos sin comprimir, bytes físicos comprimidos o bytes de viajes en el tiempo. Esta información puede ayudarte con tareas como planificar el crecimiento futuro y comprender los patrones de actualización de las tablas.
Datos incluidos en las *_BYTES
columnas
Las columnas *_BYTES
de las vistas de almacenamiento de tablas incluyen información sobre el uso de bytes de almacenamiento. Esta información se determina analizando el uso del almacenamiento de las vistas materializadas y los siguientes tipos de tablas:
- Tablas permanentes creadas con cualquiera de los métodos descritos en Crear y usar tablas.
- Tablas temporales creadas en sesiones. Estas tablas se colocan en conjuntos de datos con nombres generados, como "_c018003e063d09570001ef33ae401fad6ab92a6a".
- Tablas temporales creadas en consultas de varias instrucciones ("scripts"). Estas tablas se colocan en conjuntos de datos con nombres generados, como "_script72280c173c88442c3a7200183a50eeeaa4073719".
Los datos almacenados en la caché de resultados de consultas no se te facturan, por lo que no se incluyen en los valores de la columna *_BYTES
.
Los clones y las copias de seguridad muestran los valores de las columnas *_BYTES
como si fueran tablas completas, en lugar de mostrar la diferencia del almacenamiento usado por la tabla base, por lo que son una sobreestimación. En tu factura se tiene en cuenta correctamente esta diferencia en el uso del almacenamiento. Para obtener más información sobre los bytes delta almacenados y facturados por los clones y las instantáneas, consulta la TABLE_STORAGE_USAGE_TIMELINE
vista.
Previsión de la facturación del almacenamiento
Para predecir la facturación mensual del almacenamiento de un conjunto de datos, puede usar las columnas logical
o physical *_BYTES
de esta vista, en función del modelo de facturación del almacenamiento del conjunto de datos que utilice. Ten en cuenta que esta es solo una previsión aproximada y que los importes de facturación precisos se calculan en función del uso de la infraestructura de facturación del almacenamiento de BigQuery y se muestran en Facturación de Cloud.
En el caso de los conjuntos de datos que usan un modelo de facturación lógica, puedes predecir tus costes de almacenamiento mensuales de la siguiente manera:
((Valor de ACTIVE_LOGICAL_BYTES
/ POW
(1024, 3)) * precio de bytes lógicos activos) +
((Valor de LONG_TERM_LOGICAL_BYTES
/ POW
(1024, 3)) * precio de bytes lógicos a largo plazo)
El valor ACTIVE_LOGICAL_BYTES
de una tabla refleja los bytes activos que usa esa tabla en ese momento.
En el caso de los conjuntos de datos que usan un modelo de facturación física, puedes predecir los costes de almacenamiento de la siguiente manera:
((valor de ACTIVE_PHYSICAL_BYTES + FAIL_SAFE_PHYSICAL_BYTES
/ POW
(1024, 3)) * precio de bytes físicos activos) +
((valor de LONG_TERM_PHYSICAL_BYTES
/ POW
(1024, 3)) * precio de bytes físicos a largo plazo)
El valor ACTIVE_PHYSICAL_BYTES
de una tabla refleja los bytes activos que usa actualmente esa tabla más los bytes que se usan para la función de viaje en el tiempo de esa tabla.
Para ver los bytes activos de la tabla, resta el valor de TIME_TRAVEL_PHYSICAL_BYTES
al valor de ACTIVE_PHYSICAL_BYTES
.
Para obtener más información, consulta la página Precios de almacenamiento.
Roles obligatorios
Para obtener los permisos que necesitas para consultar la vista INFORMATION_SCHEMA.TABLE_STORAGE
,
pide a tu administrador que te conceda el
rol de gestión de identidades y accesos Lector de metadatos de BigQuery (roles/bigquery.metadataViewer
) en el proyecto.
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.
Este rol predefinido contiene los permisos necesarios para consultar la vista INFORMATION_SCHEMA.TABLE_STORAGE
. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:
Permisos obligatorios
Para consultar la vista INFORMATION_SCHEMA.TABLE_STORAGE
, se necesitan los siguientes permisos:
-
bigquery.tables.get
-
bigquery.tables.list
También puedes obtener estos permisos con roles personalizados u otros roles predefinidos.
Esquema
La vista INFORMATION_SCHEMA.TABLE_STORAGE
tiene el siguiente esquema:
Nombre de la columna | Tipo de datos | Valor |
---|---|---|
PROJECT_ID |
STRING |
El ID del proyecto que contiene el conjunto de datos. |
PROJECT_NUMBER |
INT64 |
El número de proyecto del proyecto que contiene el conjunto de datos. |
TABLE_CATALOG |
STRING |
El ID del proyecto que contiene el conjunto de datos. |
TABLE_SCHEMA |
STRING |
Nombre del conjunto de datos que contiene la tabla o la vista materializada, también denominado datasetId . |
TABLE_NAME |
STRING |
Nombre de la tabla o de la vista materializada, también conocido como tableId . |
CREATION_TIME |
TIMESTAMP |
Hora de creación de la tabla. |
TOTAL_ROWS |
INT64 |
Número total de filas de la tabla o de la vista materializada. |
TOTAL_PARTITIONS |
INT64 |
Número de particiones presentes en la tabla o en la vista materializada. Las tablas sin particiones devuelven 0. |
TOTAL_LOGICAL_BYTES |
INT64 |
Número total de bytes lógicos (sin comprimir) de la tabla o de la vista materializada. |
ACTIVE_LOGICAL_BYTES |
INT64 |
Número de bytes lógicos (sin comprimir) que tienen menos de 90 días. |
LONG_TERM_LOGICAL_BYTES |
INT64 |
Número de bytes lógicos (sin comprimir) que tienen más de 90 días. |
CURRENT_PHYSICAL_BYTES |
INT64 |
Número total de bytes físicos del almacenamiento actual de la tabla en todas las particiones. |
TOTAL_PHYSICAL_BYTES |
INT64 |
Número total de bytes físicos (comprimidos) usados para el almacenamiento, incluidos los bytes activos, a largo plazo y de viajes en el tiempo (datos eliminados o modificados). No se incluyen los bytes de seguridad (datos eliminados o modificados que se conservan después del periodo de la función de viaje en el tiempo). |
ACTIVE_PHYSICAL_BYTES |
INT64 |
Número de bytes físicos (comprimidos) con una antigüedad inferior a 90 días, incluidos los bytes de viajes en el tiempo (datos eliminados o modificados). |
LONG_TERM_PHYSICAL_BYTES |
INT64 |
Número de bytes físicos (comprimidos) con más de 90 días de antigüedad. |
TIME_TRAVEL_PHYSICAL_BYTES |
INT64 |
Número de bytes físicos (comprimidos) usados por el almacenamiento de viajes en el tiempo (datos eliminados o modificados). |
STORAGE_LAST_MODIFIED_TIME |
TIMESTAMP |
La hora más reciente en la que se escribieron datos en la tabla. |
DELETED |
BOOLEAN |
Indica si la tabla se ha eliminado. |
TABLE_TYPE |
STRING |
El tipo de tabla. Por ejemplo, BASE TABLE .
|
MANAGED_TABLE_TYPE |
STRING |
Esta columna está en versión preliminar. Tipo gestionado de la tabla. Por ejemplo, NATIVE o BIGLAKE .
|
FAIL_SAFE_PHYSICAL_BYTES |
INT64 |
Número de bytes físicos (comprimidos) utilizados por el almacenamiento a prueba de fallos (datos eliminados o modificados). |
LAST_METADATA_INDEX_REFRESH_TIME |
TIMESTAMP |
La hora de la última actualización del índice de metadatos de la tabla. |
TABLE_DELETION_REASON |
STRING |
Motivo de la eliminación de la tabla si el campo DELETED es true. Los
valores posibles son los siguientes:
|
TABLE_DELETION_TIME |
TIMESTAMP |
Hora de eliminación de la tabla. |
Ámbito y sintaxis
Las consultas en esta vista deben incluir un calificador de región. En la siguiente tabla se explica el ámbito de la región de esta vista:
Nombre de la vista | Ámbito de los recursos | Ámbito de la región |
---|---|---|
[`PROJECT_ID`.]`region-REGION`.INFORMATION_SCHEMA.TABLE_STORAGE[_BY_PROJECT] |
Nivel de proyecto | REGION |
-
Opcional:
PROJECT_ID
: el ID de tu Google Cloud proyecto. Si no se especifica, se usa el proyecto predeterminado. -
REGION
: cualquier nombre de región del conjunto de datos. Por ejemplo,`region-us`
.
En el siguiente ejemplo se muestra cómo devolver información de almacenamiento de las tablas de un proyecto específico:
SELECT * FROM `myProject`.`region-REGION`.INFORMATION_SCHEMA.TABLE_STORAGE;
En el siguiente ejemplo se muestra cómo devolver información de almacenamiento de las tablas de una región específica:
SELECT * FROM `region-REGION`.INFORMATION_SCHEMA.TABLE_STORAGE_BY_PROJECT;
Ejemplos
Ejemplo 1:
En el siguiente ejemplo se muestra el total de bytes lógicos facturados del proyecto actual.
SELECT SUM(total_logical_bytes) AS total_logical_bytes FROM `region-REGION`.INFORMATION_SCHEMA.TABLE_STORAGE;
El resultado es similar al siguiente:
+---------------------+ | total_logical_bytes | +---------------------+ | 971329178274633 | +---------------------+
Ejemplo 2:
En el siguiente ejemplo se muestran los bytes de almacenamiento en GiB a nivel de conjunto de datos del proyecto actual.
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
Ejemplo 3:
En el siguiente ejemplo se muestra cómo predecir la diferencia de precio por conjunto de datos entre los modelos de facturación lógicos y físicos durante los próximos 30 días. En este ejemplo se da por supuesto que el uso del almacenamiento futuro es constante durante los próximos 30 días a partir del momento en que se ejecutó la consulta. Ten en cuenta que la previsión se limita a las tablas base y excluye todos los demás tipos de tablas de un conjunto de datos.
Los precios que se usan en las variables de precios de esta consulta corresponden a la región us-central1
. Si quieres ejecutar esta consulta en otra región,
actualiza las variables de precios según corresponda. Para obtener información sobre los precios, consulta la sección Precio del almacenamiento.
Abre la página de BigQuery en la Google Cloud consola.
Introduce la siguiente consulta de GoogleSQL en el cuadro Editor de consultas.
INFORMATION_SCHEMA
requiere la sintaxis de GoogleSQL. GoogleSQL es la sintaxis predeterminada en la 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;
Haz clic en Ejecutar.
El resultado es similar al siguiente:
+--------------+--------------------+-----------------------+---------------------+------------------------+--------------------------+-----------------------------+------------------------------+----------------------------------+-------------------------------+----------------------------------+--------------------------------+ | 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 |