Looker 성능 최적화

이 권장사항에는 Looker에 익숙한 교차 기능팀에서 공유한 권장사항이 반영되어 있습니다. 이 유용한 정보는 Looker 고객과 함께한 구현부터 장기적 성공에 이르는 수년간의 경험을 통해 얻은 것입니다. 대부분의 사용자와 상황에 적합하도록 권장사항을 작성했지만 권장사항을 구현할 때는 항상 신중하게 판단하시기 바랍니다.

쿼리 성능 최적화

다음과 같은 프런트엔드 및 백엔드 팁을 사용하여 데이터베이스에 대해 쿼리를 최적으로 빌드하고 실행할 수 있습니다.

  • 가능하면 many_to_one 조인을 사용하여 Explore를 빌드하세요. 가장 세분화된 수준에서 가장 높은 수준의 세부정보(many_to_one)까지 뷰를 조인하면 일반적으로 쿼리 성능이 가장 뛰어납니다.
  • 캐싱을 극대화하여 ETL 정책과 동기화하면 데이터베이스 쿼리 트래픽을 줄일 수 있습니다. 기본적으로 Looker는 쿼리를 1시간 동안 캐시합니다. persist_with 매개변수를 사용하여 Explore 내에서 데이터 그룹을 적용하여 캐싱 정책을 제어하고 Looker 데이터 새로고침을 ETL 프로세스와 동기화할 수 있습니다. 따라서 Looker는 백엔드 데이터 파이프라인과 더 긴밀하게 통합되므로 비활성 데이터를 분석하지 않고도 캐시 사용량을 극대화할 수 있습니다. 이름이 지정된 캐싱 정책은 전체 모델 또는 개별 Explore 및 영구 파생 테이블(PDT)에 적용할 수 있습니다.
  • Looker의 집계 인식 기능을 사용하면 특히 대규모 데이터베이스의 일반적인 쿼리에서 Looker가 쿼리에 사용할 수 있는 롤업 또는 요약 표를 만들 수 있습니다. 집계 인식을 활용하여 전체 대시보드의 성능을 크게 개선할 수도 있습니다. 자세한 내용은 집계 인식 튜토리얼을 참조하세요.
  • 더 빠른 쿼리를 위해 PDT를 사용합니다. 뷰가 미리 조인되어 런타임 전에 준비되도록 하려면 Explore를 여러 복잡한 조인 또는 성능이 떨어지는 조인으로, 또는 하위 쿼리나 하위 선택이 있는 측정기준을 PDT로 변환합니다.
  • 데이터베이스 언어가 증분 PDT를 지원하는 경우 Looker가 PDT 테이블을 다시 빌드하는 데 소요되는 시간을 줄이도록 증분 PDT를 구성합니다.
  • Looker에 정의된 연결된 기본 키에서 Explore에 뷰를 조인하지 마세요. 대신 뷰에서 연결된 기본 키를 구성하는 기본 필드를 조인합니다. 또는 뷰의 LookML이 아니라 테이블의 SQL 정의에 사전 정의된 연결된 기본 키를 사용하여 뷰를 PDT로 다시 만듭니다.
  • 벤치마킹에 SQL Runner의 Explain을 활용하세요. EXPLAIN은 지정된 SQL 쿼리에 대한 데이터베이스의 쿼리 실행 계획에 대한 개요를 생성하므로 최적화할 수 있는 쿼리 구성요소를 감지할 수 있습니다. EXPLAIN으로 SQL을 최적화하는 방법 커뮤니티 게시물에서 자세히 알아보세요.
  • 색인을 선언합니다. 테이블의 톱니바퀴 아이콘을 클릭하고 색인 표시를 선택하면 SQL Runner에서 바로 Looker에서 각 테이블의 색인을 볼 수 있습니다.

    색인의 혜택을 받을 수 있는 가장 일반적인 열은 중요한 날짜와 외래 키입니다. 이러한 열에 색인을 추가하면 거의 모든 쿼리의 성능이 향상됩니다. 이는 PDT에도 적용됩니다. indexes, sort keys, distribution와 같은 LookML 매개변수를 적절하게 적용할 수 있습니다.
  • 하드웨어가 부족하거나 대용량 데이터 세트를 처리하는 데 필요한 프로비저닝된 리소스(예: AWS)가 있는 데이터베이스의 메모리, 코어, I/O(입력/출력)를 늘려 쿼리 성능을 높입니다.

Looker 서버 성능 최적화

또한 Looker 서버 및 애플리케이션이 최적으로 작동하는지 확인할 수 있는 조치를 취할 수 있습니다.

  • 개별 대시보드 내의 요소 수를 제한합니다. 각 요소의 설계는 다양한 요인에 따라 메모리 소비에 영향을 미치므로 요소 수를 정의하는 정확한 규칙은 없습니다. 하지만 타일이 25개 이상인 대시보드는 성능 측면에서 문제가 되는 경향이 있습니다.
  • 전략적으로 대시보드 자동 새로고침 기능을 사용합니다. 대시보드에서 자동 새로고침을 사용하는 경우 백그라운드에서 실행되는 ETL 프로세스보다 더 빠르게 새로고침하지 마세요.
  • 피벗을 전략적으로 사용하고 대시보드 타일과 Look에 피벗을 과도하게 사용하지 마세요. 피벗된 측정기준이 있는 쿼리는 더 많은 메모리를 사용합니다. 피벗되는 측정기준이 많을수록 콘텐츠(Explore, Look 또는 대시보드)가 로드될 때 더 많은 메모리가 사용됩니다.
  • 병합 결과, 커스텀 필드, 테이블 계산과 같은 쿼리 후처리 기능은 가급적 사용하지 마세요. 이 기능은 모델을 설계하는 데 도움이 되는 개념 증명으로 사용됩니다. LookML에서 자주 사용되는 계산 및 함수를 하드코딩하여 데이터베이스에서 처리할 SQL을 생성하는 것이 좋습니다. 과도한 계산이 Looker 인스턴스의 자바 메모리와 경쟁하여 Looker 인스턴스가 더 느리게 응답할 수 있습니다.
  • 많은 수의 뷰 파일이 있는 경우 모델에 포함된 뷰를 제한합니다. 단일 모델에 모든 뷰를 포함하면 성능이 저하될 수 있습니다. 프로젝트 내에 많은 뷰가 있는 경우 각 모델 내에 필요한 뷰 파일만 포함하는 것이 좋습니다. 모델 내에서 뷰 그룹을 쉽게 포함할 수 있도록 뷰 파일 이름에 전략적 이름 지정 규칙을 사용하는 것이 좋습니다. 예시는 includes 매개변수 문서에 설명되어 있습니다.
  • 대시보드 타일과 Look 내에서 기본적으로 많은 수의 데이터 포인트를 반환하지 않도록 합니다. 수천 개의 데이터 포인트를 반환하는 쿼리는 더 많은 메모리를 사용합니다. 프런트엔드 필터를 대시보드, Look, Explore, 그리고 required filters, conditionally_filtersql_always_where 매개변수가 있는 LookML 수준에 적용하여 최대한 데이터를 제한합니다.
  • 모든 결과 옵션을 꼭 필요한 경우에만 사용하여 여유롭게 쿼리를 전송하거나 다운로드하세요. 일부 쿼리는 매우 크며 처리 시 Looker 서버에 부담을 줄 수 있습니다.

성능 문제의 원인을 파악하는 데 도움이 필요하면 성능 개요 권장사항 페이지를 확인하세요.