Optimizar el rendimiento de Looker

Estas prácticas recomendadas reflejan las recomendaciones de un equipo multidisciplinar de Lookers experimentados. Estas estadísticas se han obtenido a lo largo de años de experiencia trabajando con clientes de Looker, desde la implementación hasta el éxito a largo plazo. Estas prácticas se han redactado para que funcionen en la mayoría de los casos y para la mayoría de los usuarios, pero debes aplicar tu mejor criterio a la hora de implementarlas.

Optimizar el rendimiento de las consultas

Para asegurarse de que las consultas se crean y se ejecutan de forma óptima en su base de datos, siga estos consejos para el frontend y el backend:

  • Crea Exploraciones usando combinaciones many_to_one siempre que sea posible. Unir vistas desde el nivel más granular hasta el nivel de detalle más alto (many_to_one) suele ofrecer el mejor rendimiento de las consultas.
  • Maximiza el almacenamiento en caché para sincronizarlo con tus políticas de ETL siempre que sea posible y así reducir el tráfico de consultas de bases de datos. De forma predeterminada, Looker almacena en caché las consultas durante una hora. Puedes controlar la política de almacenamiento en caché y sincronizar las actualizaciones de datos de Looker con tu proceso de ETL aplicando grupos de datos en Exploraciones mediante el parámetro persist_with. De esta forma, Looker puede integrarse más estrechamente con la canalización de datos backend, por lo que el uso de la caché se puede maximizar sin el riesgo de analizar datos obsoletos. Las políticas de almacenamiento en caché con nombre se pueden aplicar a todo un modelo o a Exploraciones y tablas derivadas persistentes (PDTs) concretas.
  • Usa la función Conocimiento de agregaciones de Looker para crear resúmenes o tablas de resumen que Looker pueda usar en las consultas siempre que sea posible, especialmente en el caso de las consultas habituales de bases de datos grandes. También puedes aprovechar la notoriedad agregada para mejorar drásticamente el rendimiento de los paneles de control. Para obtener más información, consulta el tutorial sobre la notoriedad agregada.
  • Usa PDTs para hacer consultas más rápido. Convierte las Exploraciones con muchas combinaciones complejas o de bajo rendimiento, o las dimensiones con subconsultas o subselecciones, en PDTs para que las vistas se combinen previamente y estén listas antes del tiempo de ejecución.
  • Si tu dialecto de base de datos admite PDTs incrementales, configura PDTs incrementales para reducir el tiempo que Looker dedica a recompilar las tablas PDT.
  • No combines vistas en Exploraciones con claves principales concatenadas definidas en Looker. En su lugar, únete a los campos base que componen la clave principal concatenada de la vista. También puede volver a crear la vista como una PDT con la clave principal concatenada predefinida en la definición SQL de la tabla, en lugar de en el LookML de la vista.
  • Aprovecha la herramienta Explicar en Ejecutor de SQL para hacer comparativas. EXPLAIN genera un resumen del plan de ejecución de consultas de su base de datos para una consulta SQL determinada, lo que le permite detectar los componentes de la consulta que se pueden optimizar. Consulta más información en la publicación de la comunidad Cómo optimizar SQL con EXPLAIN.
  • Declara los índices. Puedes consultar los índices de cada tabla directamente en Looker desde SQL Runner. Para ello, haz clic en el icono de rueda dentada de una tabla y, a continuación, selecciona Mostrar índices.

    Las columnas más habituales que pueden beneficiarse de los índices son las fechas importantes y las claves externas. Añadir índices a estas columnas aumentará el rendimiento de casi todas las consultas. Esto también se aplica a las PDTs. Los parámetros de LookML, como indexes, sort keys y distribution, se pueden aplicar correctamente.
  • Aumenta la memoria, los núcleos y las operaciones de entrada/salida de las bases de datos con hardware insuficiente o recursos aprovisionados necesarios (como AWS) para procesar grandes conjuntos de datos y mejorar el rendimiento de las consultas.

Optimizar el rendimiento del servidor de Looker

También puede tomar medidas para asegurarse de que el servidor y la aplicación de Looker funcionen de forma óptima:

  • Limita el número de elementos de cada panel de control. No hay una regla precisa para definir el número, ya que el diseño de cada elemento influye en el consumo de memoria en función de varios factores. Sin embargo, los paneles con 25 o más baldosas suelen dar problemas de rendimiento.
  • Usa la función de actualización automática de los paneles de control de forma estratégica. Si un panel de control usa la actualización automática, asegúrate de que no se actualice más rápido que los procesos de ETL que se ejecutan en segundo plano.
  • Usa los dinamismos de forma estratégica y evita usarlos en exceso en los Looks y los baldosas de los paneles de control. Las consultas con dimensiones dinamizadas consumirán más memoria. Cuantas más dimensiones se pivoten, más memoria se consumirá al cargar el contenido (una exploración, un Look o un panel de control).
  • Usa funciones como combinar resultados, campos personalizados y cálculos de tabla con moderación. Estas funciones están pensadas para usarse como pruebas de concepto que te ayuden a diseñar tu modelo. Es una práctica recomendada codificar de forma rígida los cálculos y las funciones que se usan con frecuencia en LookML, lo que generará SQL para que se procese en tu base de datos. Si se realizan demasiados cálculos, se puede producir una competencia por la memoria Java en la instancia de Looker, lo que hará que la instancia responda más lentamente.
  • Limita el número de vistas incluidas en un modelo cuando haya un gran número de archivos de vista. Incluir todas las vistas en un solo modelo puede ralentizar el rendimiento. Si hay un gran número de vistas en un proyecto, considere la posibilidad de incluir solo los archivos de vista necesarios en cada modelo. Te recomendamos que utilices convenciones de nomenclatura estratégicas para los nombres de los archivos de vista, de modo que puedas incluir fácilmente grupos de vistas en un modelo. Puede consultar un ejemplo en la documentación del parámetro includes.
  • Evita devolver un gran número de puntos de datos de forma predeterminada en los baldosines de los paneles de control y en los Looks. Las consultas que devuelvan miles de puntos de datos consumirán más memoria. Aplica filtros de frontend a los paneles de control, los Looks y las Exploraciones, y a nivel de LookML con los parámetros required filters, conditionally_filter y sql_always_where para limitar los datos siempre que sea posible.
  • Descarga o envía consultas con la opción Todos los resultados con moderación, ya que algunas consultas pueden ser muy grandes y sobrecargar el servidor de Looker cuando se procesan.

Para obtener más ayuda a la hora de identificar la fuente de los problemas de rendimiento, consulta la página de prácticas recomendadas Resumen de rendimiento.