다음을 통해 공유


작업 시뮬레이션을 사용하여 쿼리 최적화

ASA(Azure Stream Analytics) 작업의 성능을 개선시키는 한 가지 방법은 쿼리에 병렬 처리를 적용하는 것입니다. 이 문서에서는 Azure Portal 및 VS Code(Visual Studio Code)에서 작업 시뮬레이션을 사용하여 Stream Analytics 작업에 대한 쿼리 병렬 처리를 평가하는 방법을 보여 줍니다. 다양한 수의 스트리밍 단위로 쿼리 실행을 시각화하고 편집 제안을 기반으로 쿼리 병렬 처리를 개선하는 방법을 알아봅니다.

병렬 쿼리란?

쿼리 병렬 처리는 여러 프로세스(또는 스트리밍 노드)를 만들어 쿼리의 워크로드를 분할하고 병렬로 실행합니다. 쿼리의 전체 실행 시간이 크게 단축되므로 필요한 스트리밍 시간이 줄어듭니다.

작업이 병렬이 되려면 모든 입력, 출력 및 쿼리 단계가 정렬되고 동일한 파티션 키를 사용해야 합니다. 쿼리 논리 분할은 집계(GROUP BY)에 사용되는 키에 의해 결정됩니다.

쿼리 병렬화에 대해 자세히 알아보려면 Azure Stream Analytics에서 쿼리 병렬화 활용을 참조하세요.

VS Code에서 작업 시뮬레이션 사용

작업 시뮬레이션 기능은 작업이 Azure에서 토폴로지를 실행하는 방식을 시뮬레이션합니다. 이 자습서에서는 편집 제안을 기반으로 쿼리 성능을 개선하고 병렬로 실행하는 방법을 알아봅니다. 예를 들어, 이벤트 허브에서 입력 데이터를 가져와 다른 이벤트 허브로 결과를 보내는 비병렬 작업을 사용하고 있습니다.

필수 조건:

  • VS Code용 ASA 도구 확장. 아직 설치하지 않았다면 이 가이드에 따라 설치합니다.
  • Stream Analytics 작업에 대한 라이브 입력 및 라이브 출력을 구성합니다.
  • 쿼리에 라이브 입력 및 출력을 포함해야 합니다.

참고 항목

작업 시뮬레이션은 로컬 입력 및 출력에 대한 작업 실행 토폴로지를 시뮬레이션할 수 없습니다. 시뮬레이션 중에는 데이터가 출력 대상으로 전송되지 않습니다.

  1. VS Code에서 ASA 프로젝트를 엽니다. 쿼리 파일 *.asaql로 이동하고 작업 시뮬레이션을 선택하여 작업 시뮬레이션을 시작합니다.

    Screenshot of the VS Code opening job diagram simulator in query file.

  2. 다이어그램 탭에는 작업에 할당된 스트리밍 노드 수와 각 스트리밍 노드의 파티션 수가 표시됩니다. 다음 스크린샷은 데이터가 노드 간에 흐르는 비병렬 작업의 예입니다.

    Screenshot of the VS Code using job diagram simulator and showing job topology.

  3. 이 쿼리는 병렬이 아닙니다. 따라서 개선된 기능 탭을 선택하여 쿼리 개선에 대한 제안 사항을 볼 수 있습니다.

    Screenshot of the VS Code using job diagram simulator and showing the query edit suggestions.

  4. 향상 목록에서 쿼리 단계를 선택하면 해당 줄이 강조 표시되고 제안에 따라 쿼리를 편집할 수 있습니다.

    Screenshot of the VS Code using job diagram simulator and highlighting the query step.

    참고 항목

    쿼리 병렬 처리를 개선하기 위한 편집 제안입니다. 그러나 모든 파티션에서 집계 함수를 사용하는 경우 병렬 쿼리가 해당 시나리오에 적용되지 않을 수 있습니다.

  5. 이 예에서는 PartitionId를 22번 줄에 추가하고 변경 내용을 저장합니다. 그런 다음, 시뮬레이션 새로 고침을 사용하여 새 다이어그램을 가져올 수 있습니다.

    Screenshot that shows the refresh diagram after updating query.

  6. 또한 스트리밍 단위를 조정하여 스트리밍 노드가 다른 SU에 할당되는 방식을 자극할 수 있습니다. 워크로드를 처리하는 데 필요한 SU 수에 대한 아이디어를 제공합니다.

    Screenshot of the VS Code using SU adjuster.

Azure Portal에서 작업 시뮬레이션 사용

  1. Azure Portal의 쿼리 편집기로 이동하여 하단 창에서 작업 시뮬레이션을 선택합니다. 쿼리 및 미리 정의된 스트리밍 단위를 기반으로 작업 실행 토폴로지를 시뮬레이션합니다. A screenshot shows opening job simulation in the portal.
  2. 쿼리 병렬 처리 개선을 위한 제안 사항을 보려면 개선된 기능을 선택합니다. A screenshot shows open job simulation enhancements in the portal.
  3. 스트리밍 단위를 조정하여 워크로드 처리에 필요한 SU 수를 확인합니다. A screenshot showing how to adjust su in the portal.

프로세서 수준 다이어그램

작업의 토폴로지를 시뮬레이트하도록 스트리밍 단위를 조정한 후에는 스트리밍 노드를 확장하여 프로세서 수준에서 데이터가 처리되는 방식을 관찰할 수 있습니다.

A screenshot in gif format showing the processor level diagram of the simulator.

프로세서 수준 다이어그램을 사용하면 다음을 수행할 수 있습니다.

  • 각 스트리밍 노드에서 입력 파티션이 할당되고 처리되는 방식을 관찰합니다.
  • 각 컴퓨팅 프로세서에 대한 시간 이동이란 무엇인지 알아보세요.
  • 입력 및 출력 프로세서가 병렬로 정렬되는지 여부에 대한 정보를 제공합니다.

프로세서를 쿼리 단계와 매핑하려면 다이어그램에서 두 번 선택합니다. 이 기능은 집계를 수행하는 쿼리 단계를 찾는 데 도움이 됩니다.

A screenshot shows the job simulation mapping feature in VS Code.

개선 사항 제안

개선 사항에 대한 추가 설명은 다음과 같습니다.

Type 의미
사용자 지정 파티션이 지원되지 않음 입력된 'xxx' 파티션 키를 'xxx'로 변경합니다.
일치하지 않는 파티션 수 입력과 출력은 동일한 수의 파티션을 가져야 합니다.
파티션 키가 일치하지 않음 입력, 출력 및 각 쿼리 단계는 동일한 파티션 키를 사용해야 합니다.
일치하지 않는 입력 파티션 수 모든 입력에는 동일한 수의 파티션이 있어야 합니다.
입력 파티션 키가 일치하지 않음 모든 입력은 동일한 파티션 키를 사용해야 합니다.
낮은 호환성 수준 JobConfig.json 파일에서 CompatibilityLevel을 업그레이드합니다.
출력 파티션 키를 찾을 수 없음 출력에 지정된 파티션 키를 사용해야 합니다.
사용자 지정 파티션이 지원되지 않음 미리 정의된 파티션 키만 사용할 수 있습니다.
파티션을 사용하지 않는 쿼리 단계 사용자의 쿼리는 PARTITION BY 절을 사용하지 않습니다.

다음 단계

쿼리 병렬화 및 작업 다이어그램에 대해 자세히 알아보려면 다음 자습서를 확인하세요.