Looker reduce la carga en tu base de datos y mejora el rendimiento usando los resultados almacenados en caché de las consultas SQL anteriores cuando están disponibles y cuando tu política de almacenamiento en caché permite esta función. En esta página, se describe la política de almacenamiento en caché predeterminada de Looker, junto con las opciones disponibles para modificar la duración de los resultados almacenados en caché en tu instancia de Looker.
Cómo usa Looker las consultas almacenadas en caché
En el caso de las consultas en SQL, el mecanismo de almacenamiento en caché de Looker funciona de la siguiente manera:
Cuando se ejecuta una consulta en SQL desde un Explorar, un Look o un panel, Looker verifica la caché para ver si ya hay resultados almacenados en caché para esa consulta. Los resultados almacenados en caché solo se usarán si todos los aspectos de la búsqueda son iguales, incluidos los campos, los filtros, los parámetros y los límites de filas.
Si se encuentran resultados almacenados en caché, Looker verifica la política de almacenamiento en caché definida en el modelo de LookML para determinar si los resultados almacenados en caché vencieron. Si los resultados almacenados en caché no vencieron, Looker los usa para la consulta.
Si no se encuentran resultados almacenados en caché para la consulta o si estos vencieron, Looker ejecutará la consulta en la base de datos. Luego, se almacenarán en caché los resultados de la nueva búsqueda.
La política de retención de caché predeterminada es de una hora. En la siguiente sección, Cómo modificar las políticas de retención de caché, se explica cómo acortar o alargar este período, y se describen las opciones para sincronizar tu política de retención de caché con el proceso de ETL (extracción, transformación y carga) de tu base de datos.
Cómo modificar las políticas de retención de caché
Puedes especificar políticas de retención de caché a nivel de la función Explorar de LookML y a nivel del modelo de LookML.
El mecanismo de almacenamiento en caché recomendado es usar un parámetro datagroup
a nivel del modelo. Los grupos de datos te permiten sincronizar la política de retención de caché de un modelo con el programa de ETL de tu base de datos usando el parámetro sql_trigger
y configurando un intervalo de vencimiento de caché con el parámetro max_cache_age
. Para obtener más información, consulta la sección Almacenamiento en caché de consultas y recompilación de tablas derivadas persistentes (PDT) con grupos de datos.
Para un enfoque más simple, puedes usar el parámetro persist_for
a nivel del modelo o del Explorador. Usar el parámetro persist_for
de esta manera te permite establecer un intervalo de caducidad de la caché que anula el intervalo predeterminado de una hora. Sin embargo, usar persist_for
es menos sólido que usar grupos de datos por varios motivos, como se explica en la sección Almacenamiento en caché de consultas con persist_for.
Si un Explore o un modelo tienen un grupo de datos o un persist_for
definidos, la política de almacenamiento en caché se modifica de la siguiente manera:
- Antes de que venza el intervalo de
persist_for
o el intervalo demax_cache_age
del grupo de datos: Si se vuelve a ejecutar la consulta, Looker extrae los datos de la caché. - En el momento en que vence el intervalo de
persist_for
o el intervalo demax_cache_age
del grupo de datos, Looker borra los datos de la caché. - Después de que vence el intervalo
persist_for
o el intervalomax_cache_age
del grupo de datos: Si se vuelve a ejecutar la consulta, Looker extrae los datos directamente de la base de datos y restablece el intervalopersist_for
omax_cache_age
.
Un punto clave aquí es que los datos se borran de la caché cuando vence el intervalo de persist_for
o max_cache_age
.
Si la caché alcanza el límite de almacenamiento, los datos se expulsan según un algoritmo de datos menos usados recientemente (LRU), sin garantía de que los datos con intervalos persist_for
o max_cache_age
vencidos se borrarán de una sola vez.
Minimizar el tiempo que tus datos pasan en la caché
Looker siempre escribirá los resultados de las consultas en la caché. Incluso si los intervalos persist_for
y max_cache_age
se establecen en cero, es posible que los datos almacenados en caché se sigan almacenando durante un máximo de 10 minutos. Todos los datos del cliente que se almacenan en la caché de disco están encriptados con el Estándar de encriptación avanzada (AES).
Para minimizar la cantidad de tiempo que los datos se almacenan en la caché, haz lo siguiente:
- Para cualquier parámetro
persist_for
(para un modelo o un Explore) o parámetromax_cache_age
(para un grupo de datos), establece el valor en0 minutes
. Looker borra la caché cuando vence el intervalo depersist_for
o cuando los datos alcanzan el intervalo demax_cache_age
que se especifica en su datagroup. No es necesario establecer el parámetropersist_for
de las tablas derivadas persistentes (PDT) en0 minutes
para minimizar la cantidad de datos que se almacenan en la caché. Las PDT se escriben en la base de datos, no en la caché. - Establece el parámetro
suggest_persist_for
en un intervalo pequeño. El valor desuggest_persist_for
especifica durante cuánto tiempo Looker debe mantener las sugerencias de filtros en la caché. Las sugerencias de filtros se basan en una consulta de los valores del campo que se está filtrando. Estos resultados de la consulta se conservan en la caché para que Looker pueda proporcionar sugerencias rápidamente a medida que el usuario escribe en el campo de texto del filtro. El valor predeterminado es almacenar en caché las sugerencias de filtros durante 6 horas. Para minimizar el tiempo que tus datos permanecen en la caché, establece el valor desuggest_persist_for
en un valor más bajo, como5 minutes
.
Cómo verificar si una búsqueda se devolvió desde la caché
En una ventana de Explorar, puedes determinar si una consulta se devolvió desde la caché consultando la información que aparece junto al botón Ejecutar después de ejecutar una consulta.
Cuando se devuelve una búsqueda desde la caché, se muestra el texto "desde la caché". De lo contrario, se muestra la cantidad de tiempo que tardó en devolver la consulta.
Forzar la generación de resultados nuevos a partir de la base de datos
En una ventana de Explorar, puedes forzar la recuperación de resultados nuevos de la base de datos. Después de ejecutar una consulta (incluidas las consultas de resultados combinados), selecciona la opción Borrar caché y actualizar en el menú de ajustes Acciones de Explorar.
Almacenar consultas en caché y volver a compilar tablas derivadas persistentes (PDT) con grupos de datos
Usa grupos de datos para coordinar el programa de ETL (extracción, transformación y carga) de tu base de datos con la política de almacenamiento en caché de Looker y el programa de recompilación de tablas derivadas persistentes (PDT).
Puedes usar un grupo de datos para especificar el activador de recompilación de PDTs según el momento en que se agregan datos nuevos a tu base de datos. Luego, puedes aplicar el mismo grupo de datos a tu Explorar o modelo para que los resultados almacenados en caché también venzan cuando se vuelvan a compilar tus PDT.
Como alternativa, puedes usar un grupo de datos para desacoplar el activador de recompilación de la PDT de la antigüedad máxima de la caché. Esto puede ser útil si tienes una exploración que se basa en datos que se actualizan con mucha frecuencia y que se une a un PDT que se vuelve a compilar con menos frecuencia. En este caso, es posible que desees que la caché de consultas se restablezca con más frecuencia que la que se recompila tu PDT.
Cómo definir un grupo de datos
Define un grupo de datos con el parámetro datagroup
, ya sea en un archivo de modelo o en su propio archivo de LookML. Puedes definir varios grupos de datos si deseas políticas de almacenamiento en caché y de recompilación de tablas derivadas persistentes (PDT) diferentes para distintos Explorar o PDT en tu proyecto.
El parámetro datagroup
puede tener los siguientes subparámetros:
label
: Especifica una etiqueta opcional para el grupo de datos.description
: Especifica una descripción opcional para el grupo de datos que se puede usar para explicar el propósito y el mecanismo del grupo de datos.max_cache_age
: Especifica una cadena que define un período. Cuando la antigüedad de la caché de una consulta supera el período, Looker invalida la caché. La próxima vez que se ejecute la consulta, Looker la enviará a la base de datos para obtener resultados actualizados.sql_trigger
: Especifica una consulta en SQL que devuelve una fila con una columna. Si el valor que devuelve la consulta es diferente de los resultados anteriores de la consulta, el grupo de datos pasa a un estado activado.interval_trigger
: Especifica un programa horario para activar el grupo de datos, como"24 hours"
.
Como mínimo, un grupo de datos debe tener al menos el parámetro max_cache_age
, el parámetro sql_trigger
o el parámetro interval_trigger
.
Este es un ejemplo de un grupo de datos que tiene un sql_trigger
configurado para volver a compilar el PDT todos los días. Además, el max_cache_age
está configurado para borrar la caché de consultas cada dos horas, en caso de que alguna exploración una PDT a otros datos que se actualicen con mayor frecuencia que una vez al día.
datagroup: customers_datagroup {
sql_trigger: SELECT DATE(NOW());;
max_cache_age: "2 hours"
}
Una vez que definas el grupo de datos, podrás asignarlo a los Explorar y a las PDT:
- Para asignar el grupo de datos a un PDT, usa el parámetro
datagroup_trigger
en el parámetroderived_table
. Consulta la sección Cómo usar un grupo de datos para especificar un activador de recompilación para las PDT en esta página para ver un ejemplo. - Para asignar el grupo de datos a un Explore, usa el parámetro
persist_with
en el nivel del modelo o en el nivel del Explore. Para ver un ejemplo, consulta la sección Cómo usar un grupo de datos para especificar el restablecimiento de la caché de consultas para Explorar en esta página.
Cómo usar un grupo de datos para especificar un activador de recompilación para las PDT
Para definir un activador de recompilación de PDT con grupos de datos, crea un parámetro datagroup
con el subparámetro sql_trigger
o interval_trigger
. Luego, asigna el grupo de datos a PDT individuales con el subparámetro datagroup_trigger
en la definición derived_table
de la PDT. Si usas datagroup_trigger
para tu PDT, no es necesario que especifiques ninguna otra estrategia de persistencia para la tabla derivada. Si especificas varias estrategias de persistencia para un PDT, recibirás una advertencia en el IDE de Looker y solo se usará datagroup_trigger
.
A continuación, se muestra un ejemplo de una definición de PDT que usa el grupo de datos customers_datagroup
. Esta definición también agrega varios índices, tanto en customer_id
como en first_order_date
. Para obtener más información sobre cómo definir PDT, consulta la página de documentación Tablas derivadas en Looker.
view: customer_order_facts {
derived_table: {
sql: ... ;;
datagroup_trigger: customers_datagroup
indexes: ["customer_id", "first_order_date"]
}
}
Consulta la página de documentación Tablas derivadas en Looker para obtener más información sobre cómo funcionan los grupos de datos con las PDT.
Cómo usar un grupo de datos para especificar el restablecimiento de la caché de consultas para las Exploraciones
Cuando se activa un grupo de datos, el regenerador de Looker volverá a compilar las PDT que usan ese grupo de datos como estrategia de persistencia. Una vez que se vuelvan a compilar las PDT del grupo de datos, Looker borrará la caché de los Explorar que usen las PDT recompiladas del grupo de datos. Puedes agregar el parámetro max_cache_age
a la definición de tu grupo de datos si deseas personalizar un programa de restablecimiento de la caché de consultas para el grupo de datos. El parámetro max_cache_age
te permite borrar la caché de consultas según un programa especificado, además del restablecimiento automático de la caché de consultas que realiza Looker cuando se vuelven a compilar las PDT del grupo de datos.
Para definir una política de almacenamiento en caché de consultas con grupos de datos, crea un parámetro datagroup
con el subparámetro max_cache_age
.
Para especificar un grupo de datos que se usará para restablecer la caché de consultas en los Explorar, usa el parámetro persist_with
:
- Para asignar el grupo de datos como predeterminado para todos los Explorar de un modelo, usa el parámetro
persist_with
a nivel del modelo (en un archivo de modelo). - Para asignar el grupo de datos a Explorar individuales, usa el parámetro
persist_with
en un parámetroexplore
.
En los siguientes ejemplos, se muestra un grupo de datos llamado orders_datagroup
que se define en un archivo de modelo. El grupo de datos tiene un parámetro sql_trigger
, que especifica que la consulta select max(id) from my_tablename
se usará para detectar cuándo se produjo un ETL. Incluso si esa ETL no se produce durante un tiempo, el max_cache_age
del grupo de datos especifica que los datos almacenados en caché se usarán solo durante un máximo de 24 horas.
El parámetro persist_with
del modelo apunta a la política de almacenamiento en caché orders_datagroup
, lo que significa que esta será la política de almacenamiento en caché predeterminada para todas las Exploraciones del modelo. Sin embargo, no queremos usar la política de almacenamiento en caché predeterminada del modelo para los Explorar customer_facts
y customer_background
, por lo que podemos agregar el parámetro persist_with
para especificar una política de almacenamiento en caché diferente para estos dos Explorar. Los Explorar orders
y orders_facts
no tienen un parámetro persist_with
, por lo que usarán la política de almacenamiento en caché predeterminada del modelo: orders_datagroup
.
datagroup: orders_datagroup {
sql_trigger: SELECT max(id) FROM my_tablename ;;
max_cache_age: "24 hours"
}
datagroup: customers_datagroup {
sql_trigger: SELECT max(id) FROM my_other_tablename ;;
}
persist_with: orders_datagroup
explore: orders { ... }
explore: order_facts { ... }
explore: customer_facts {
persist_with: customers_datagroup
...
}
explore: customer_background {
persist_with: customers_datagroup
...
}
Si se especifican persist_with
y persist_for
, recibirás una advertencia de validación y se usará persist_with
.
Usa un grupo de datos para activar entregas programadas
Los grupos de datos también se pueden usar para activar la entrega de un panel o un Look. Con esta opción, Looker enviará tus datos cuando se complete el grupo de datos, de modo que el contenido programado esté actualizado.
Cómo usar el panel Admin para los grupos de datos
Si tienes el rol de administrador de Looker, puedes usar la página Datagroups del panel Admin para ver los datagroups existentes. Puedes ver la conexión, el modelo y el estado actual de cada grupo de datos y, si se especificó en LookML, una etiqueta y una descripción para cada grupo de datos. También puedes restablecer la caché de un grupo de datos, activarlo o navegar al LookML del grupo de datos.
Almacenar consultas en caché con persist_for
Usa el parámetro persist_for
a nivel del modelo o del Explorar para modificar el intervalo de retención de caché predeterminado de Looker de 1 hora. Puedes establecer intervalos de hasta 0 minutes
y de hasta 8760 hours
(1 año) o más.
Definir parámetros persist_for
puede ser más rápido y sencillo, pero menos robusto que definir grupos de datos. Se recomiendan los grupos de datos en lugar de persist_for
por los siguientes motivos:
- Los grupos de datos se pueden sincronizar con el proceso de ETL de tu base de datos.
- Puedes reutilizar grupos de datos en varios modelos y Exploraciones. Esto significa que puedes actualizar el
max_cache_age
de un grupo de datos y se actualizará la política de almacenamiento en caché en cada lugar donde se use el grupo de datos. - Puedes borrar toda la caché asociada a un grupo de datos desde la página Datagroups.