Optimiza el almacenamiento para mejorar el rendimiento de las consultas

En esta página, se proporcionan prácticas recomendadas para optimizar el almacenamiento de BigQuery para el rendimiento de las consultas. También puedes optimizar el almacenamiento en función del costo. Si bien estas prácticas recomendadas se enfocan principalmente en las tablas que usan el almacenamiento de BigQuery, también se pueden aplicar a las tablas externas.

BigQuery almacena datos en formato de columnas. Las bases de datos orientadas a columnas están optimizadas para cargas de trabajo analíticas que agregan datos a una gran cantidad de registros. Como las columnas suelen tener más redundancia que las filas, esta característica permite una mayor compresión de datos usando técnicas como la codificación de longitud de la ejecución. Para obtener más información sobre cómo BigQuery almacena los datos, consulta Descripción general del almacenamiento de BigQuery. La optimización del almacenamiento de BigQuery mejora el rendimiento de las consultas y controla los costos.

BigQuery proporciona detalles sobre el consumo de almacenamiento de tus recursos. Para ver los metadatos de almacenamiento de la tabla, consulta las siguientes vistas INFORMATION_SCHEMA:

Datos de tabla del clúster

Práctica recomendada: crea tablas agrupadas en clústeres.

Para optimizar el almacenamiento de las consultas, comienza por agrupar en clústeres los datos de la tabla. Si agrupas en clústeres las columnas más usadas, puedes reducir el volumen total de datos que analiza la consulta. Para obtener información sobre cómo crear clústeres, consulta Crea y usa tablas agrupadas en clústeres.

Datos de tabla de particiones

Práctica recomendada: divide las tablas grandes con particiones.

Con las particiones, puedes agrupar y ordenar los datos por un conjunto de características de columnas definidas, como una columna de números enteros, una columna de unidad de tiempo o el tiempo de transferencia. La partición mejora el rendimiento de las consultas y controla los costos reduciendo la cantidad de bytes que lee una consulta.

Para obtener más información sobre las particiones, consulta Introducción a las tablas particionadas.

Usa la configuración de vencimiento de tablas y particiones

Práctica recomendada: para optimizar el almacenamiento, establece la configuración de caducidad predeterminada para los conjuntos de datos, las tablas y las tablas particionadas.

Puedes controlar los costos de almacenamiento y optimizar el uso del almacenamiento configurando la caducidad de la tabla predeterminada para las tablas recién creadas en un conjunto de datos. Cuando una tabla caduca, se borra junto con todos los datos que contiene la tabla. Si configuras la propiedad cuando se crea el conjunto de datos, cualquier tabla creada en el conjunto de datos se borrará después del período de vencimiento. Si configuras la propiedad después de crear el conjunto de datos, solo se borrarán las nuevas tablas después del período de vencimiento.

Por ejemplo, si estableces la caducidad de la tabla predeterminada dentro de siete días, los datos más antiguos se borran automáticamente después de una semana.

Esta opción es útil si necesitas acceder solo 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 predeterminada de la tabla del conjunto de datos se aplica a las particiones individuales. También puedes controlar el vencimiento de la partición con la marca time_partitioning_expiration en la herramienta de línea de comandos de bq o el parámetro de configuración expirationMs en la API. Cuando una partición se vence, los datos en la partición se borran, pero la tabla particionada no se descarta, incluso si la tabla está vacía.

Por ejemplo, el siguiente comando establece un vencimiento para las particiones después de tres días:

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

Datos agregados a largo plazo

Práctica recomendada: Identifica si los datos a nivel de la fila deben almacenarse a largo plazo y, de lo contrario, solo almacena datos agregados a largo plazo.

En muchos casos, los detalles contenidos en los datos transaccionales o a nivel de fila son útiles a corto plazo, pero se hace referencia a ellos a largo plazo. En estas situaciones, puedes compilar consultas de agregación para calcular y almacenar las métricas asociadas con estos datos y, luego, usar el vencimiento de la tabla o de la partición para quitar sistemáticamente los datos a nivel de fila. Esto reduce los cargos de almacenamiento y mantiene las métricas disponibles para el consumo a largo plazo.

¿Qué sigue?