LQRS: Learned Query Re-optimization Framework for Spark SQL

본 논문은 실행 중 생성된 런타임 관측치를 활용하여 동적 계획 수정을 가능하게 하는 'LQRS'라는 학습 기반 쿼리 재최적화 프레임워크를 제안하며, 이를 통해 Spark SQL 환경에서 기존 학습 기반 최적화 기법 대비 최대 90% 의 실행 시간 단축을 달성함을 보여줍니다.

Jiahao He, Yutao Cui, Cuiping Li, Jikang Jiang, Yuheng Hou, Hong Chen

게시일 2026-03-05
📖 3 분 읽기☕ 가벼운 읽기

Each language version is independently generated for its own context, not a direct translation.

🍳 비유: "현장에서 레시피를 즉석으로 수정하는 천재 요리사"

1. 기존 방식의 문제점: "예상만 믿는 요리사"

기존의 데이터베이스 (Spark SQL) 나 최신 학습형 최적화기 (Lero 등) 는 마치 미리 정해진 레시피대로만 요리하는 요리사와 같습니다.

  • 문제: 요리 시작 전에 "양파가 5 개 정도 들어갈 거야"라고 예상하고 레시피를 짭니다. 하지만 실제 요리 도중 양파가 50 개나 들어오거나, 재료가 생각보다 훨씬 적게 나올 수 있습니다.
  • 결과: 레시피가 틀렸는데도, 요리사가 "아, 내 예상대로야"라고 믿고 계속 잘못된 순서로 요리를 진행합니다. 결국 요리가 늦어지거나, 재료가 넘쳐서 냄비가 터지는 (메모리 부족) 상황이 발생합니다.

2. LQRS 의 혁신: "실시간 관찰과 즉석 수정"

LQRS 는 이 문제를 해결하기 위해 실시간으로 상황을 보고 레시피를 수정하는 천재 요리사를 도입했습니다.

  • 핵심 아이디어: "요리하기 전에 계획을 세우되, 요리하는 도중에도 재료가 어떻게 나오는지 보고 계획을 바꿀 수 있어!"
  • 예시:
    • 상황: 1 단계 요리 (첫 번째 재료를 다지는 것) 를 해보니, 예상과 달리 양파가 1 개만 나왔습니다.
    • 기존 방식: "아, 레시피대로 2 단계로 넘어가자." (계속 잘못된 경로)
    • LQRS 방식: "어? 양파가 하나밖에 없네? 그럼 이걸 먼저 다른 재료와 섞는 게 훨씬 빠르겠다!"라고 즉석에서 조리 순서를 바꿉니다.

3. LQRS 가 어떻게 작동하나요? (3 단계 과정)

① 관찰 (눈을 뜨다)
요리사가 재료를 다지는 동안, LQRS 는 옆에서 **"어? 지금 재료가 5 개밖에 안 나왔네?"**라고 실시간으로 관찰합니다. 기존 시스템은 요리가 끝날 때까지 이 사실을 모릅니다.

② 학습 (경험을 쌓다)
LQRS 는 **강화 학습 (Reinforcement Learning)**이라는 기술을 사용합니다. 마치 바둑이나 체스 AI 가 수만 번의 게임을 통해 "이 수를 두면 이긴다"를 배우는 것처럼, LQRS 도 수많은 쿼리 실행을 통해 **"이런 상황에서는 저렇게 순서를 바꾸면 빨라진다"**는 것을 스스로 배웁니다.

  • 교과서 학습 (Curriculum Learning): 처음엔 쉬운 결정 (예: "이 재료 먼저 섞기") 만 배우고, 점점 어려운 상황 (예: "여러 재료를 섞는 순서 바꾸기") 을 배워갑니다.

③ 수정 (계획 변경)
배운 지식을 바탕으로, 요리가 진행되는 중간 중간에 레시피를 수정합니다.

  • 플러그인 (Planner Extension): LQRS 는 Spark SQL 이라는 큰 주방 시스템에 별도의 보조 요리사처럼 끼워 넣습니다. 이 보조 요리사는 주방장이 (Spark) 요리를 멈추지 않고도, "지금 이 순서로 바꾸면 더 빨라요!"라고 조언하고 즉시 실행합니다.

4. 왜 이것이 중요한가요? (성과)

이 논문은 LQRS 를 다양한 테스트 (JOB, TPC-H 등) 에 적용해 보았습니다. 결과는 놀라웠습니다.

  • 최대 90% 속도 향상: 다른 최신 시스템보다 훨씬 빠르게 쿼리를 처리했습니다.
  • 실패 감소: 잘못된 계획을 고집하다가 실패하는 경우가 줄었습니다.
  • 유연성: 데이터의 양이나 종류가 변해도, 실시간으로 관찰해서 적응하므로 기존 시스템보다 훨씬 똑똑하게 대처합니다.

💡 한 줄 요약

"LQRS 는 요리가 끝날 때까지 기다리지 않고, 요리하는 도중 재료가 어떻게 나오는지 실시간으로 확인하며 레시피를 수정하는 '현명한 요리사'입니다. 덕분에 요리 (쿼리 실행) 시간이 획기적으로 단축됩니다."

이 시스템은 데이터가 너무 많거나 복잡해져서 기존 방식으로는 처리가 느려지는 현대의 빅데이터 환경에서, 실시간 지능을 통해 속도와 효율을 극대화하는 획기적인 해결책입니다.