Optimizar el rendimiento de Looker

Estas prácticas recomendadas reflejan las recomendaciones que ha compartido 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 asegurarte de que las consultas se crean y se ejecutan de forma óptima en tu base de datos, sigue 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 se puede maximizar el uso de la caché 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, sobre todo 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 PDTs.
  • No combines vistas en Exploraciones con claves principales concatenadas que estén 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 una vista.
  • Usa la herramienta Explicar en SQL Runner 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 un 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 de control con 25 o más baldosas suelen dar problemas de rendimiento.
  • Usa la función de actualización automática del panel 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á cuando se cargue 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 esta 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. Cuando haya un gran número de vistas en un proyecto, considere la posibilidad de incluir solo los archivos de vista que sean necesarios en cada modelo. Te recomendamos que uses convenciones de nomenclatura estratégicas para los nombres de los archivos de vistas, de forma que puedas incluir grupos de vistas en un modelo. Se incluye 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 Looks y los baldosas de los paneles de control. Las consultas que devuelvan miles de puntos de datos consumirán más memoria. Asegúrese de que los datos se limitan siempre que sea posible aplicando filtros de frontend a los paneles, los Looks y las Exploraciones, así como a nivel de LookML con los parámetros required filters, conditionally_filter y sql_always_where.
  • 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.
  • Entender el impacto del rendimiento de la conexión en toda la instancia de Looker. Looker usa recursos compartidos para procesar las consultas de todas las conexiones de bases de datos. Entre estos recursos se incluyen los pods de Kubernetes, las colas de consultas y los grupos de subprocesos. Debido a esta infraestructura compartida, una conexión de base de datos lenta o sobrecargada puede afectar negativamente al rendimiento de las consultas en todas las demás conexiones. Si detectas una degradación generalizada del rendimiento, investiga el estado de todas tus conexiones de base de datos, no solo las que estén directamente relacionadas con los paneles de control o las Exploraciones lentos.

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.