Optimizar el almacenamiento para mejorar el rendimiento de las consultas
En esta página se describen las prácticas recomendadas para optimizar el almacenamiento de BigQuery y mejorar el rendimiento de las consultas. También puedes optimizar el almacenamiento para reducir los costes. Aunque estas prácticas recomendadas se centran principalmente en las tablas que usan el almacenamiento de BigQuery, también se pueden aplicar a las tablas externas.
BigQuery almacena los datos en formato de columnas. Las bases de datos orientadas a columnas están optimizadas para cargas de trabajo analíticas que agregan datos de un número muy elevado de registros. Como las columnas suelen tener más redundancia que las filas, esta característica permite una mayor compresión de datos mediante técnicas como la codificación de longitud de racha. Para obtener más información sobre cómo almacena datos BigQuery, consulta el artículo Información general sobre el almacenamiento de BigQuery. Optimizar el almacenamiento de BigQuery mejora el rendimiento de las consultas y controla los costes.
BigQuery proporciona detalles sobre el consumo de almacenamiento de tus recursos.
Para ver los metadatos de almacenamiento de tablas, consulta las siguientes vistas 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
Datos de tablas agrupadas en clústeres
Práctica recomendada: crea tablas agrupadas en clústeres.
Para optimizar el almacenamiento de las consultas, empieza por agrupar los datos de las tablas. Si agrupa en clústeres las columnas que se usan con frecuencia, puede reducir el volumen total de datos analizados por la consulta. Para obtener información sobre cómo crear clústeres, consulta el artículo Crear y usar tablas agrupadas en clústeres.
Datos de la tabla de particiones
Práctica recomendada: Divide las tablas grandes en particiones.
Con las particiones, puedes agrupar y ordenar tus datos por un conjunto de características de columna definidas, como una columna de números enteros, una columna de unidades de tiempo o la hora de ingestión. Las particiones mejoran el rendimiento de las consultas y controlan los costes, ya que reducen el número de bytes que lee una consulta.
Para obtener más información sobre las particiones, consulta el artículo Introducción a las tablas con particiones.
Usar la configuración de vencimiento de tablas y particiones
Práctica recomendada: para optimizar el almacenamiento, configure los ajustes de caducidad predeterminados de los conjuntos de datos, las tablas y las tablas particionadas.
Puede controlar los costes de almacenamiento y optimizar el uso del almacenamiento configurando la caducidad predeterminada de las tablas recién creadas en un conjunto de datos. Cuando una tabla caduca, se elimina junto con todos los datos que contiene. Si define la propiedad cuando se crea el conjunto de datos, cualquier tabla creada en el conjunto de datos se eliminará una vez transcurrido el periodo de vencimiento. Si define la propiedad después de crear el conjunto de datos, solo se eliminarán las tablas nuevas una vez transcurrido el periodo de conservación.
Por ejemplo, si defines que las tablas caduquen en siete días, los datos antiguos se eliminarán automáticamente al cabo de una semana.
Esta opción es útil si solo necesitas acceder a los datos más recientes. También es útil si estás experimentando con datos y no necesitas conservarlos.
Si tus tablas están particionadas por fecha, la caducidad de tabla predeterminada del conjunto de datos se aplica a las particiones individuales. También puedes controlar la caducidad de las particiones con la marca time_partitioning_expiration
en la herramienta de línea de comandos bq o con el ajuste de configuración expirationMs
en la API. Cuando caduca una partición, se eliminan los datos de la partición, pero la tabla con particiones no se elimina, aunque esté vacía.
Por ejemplo, el siguiente comando hace que las particiones caduquen después de tres días:
bq mk \ --time_partitioning_type=DAY \ --time_partitioning_expiration=259200 \ project_id:dataset.table
Agrega datos a largo plazo
Práctica recomendada: Identifica si los datos a nivel de fila deben almacenarse a largo plazo. Si no es así, almacena solo los datos agregados a largo plazo.
En muchos casos, los detalles que contienen los datos transaccionales o a nivel de fila son útiles a corto plazo, pero se consultan menos a largo plazo. En estos casos, puedes crear consultas de agregación para calcular y almacenar las métricas asociadas a estos datos y, a continuación, usar la caducidad de tablas o particiones para eliminar sistemáticamente los datos a nivel de fila. De esta forma, se reducen los cargos por almacenamiento y se mantienen las métricas disponibles para su uso a largo plazo.
Siguientes pasos
- Consulta cómo optimizar los costes.
- Consulta cómo optimizar las consultas.
- Consulta cómo optimizar las funciones.