KR20180035035A - 데이터 엔진에서의 질의 최적화 방법 및 장치 - Google Patents

데이터 엔진에서의 질의 최적화 방법 및 장치 Download PDF

Info

Publication number
KR20180035035A
KR20180035035A KR1020160125004A KR20160125004A KR20180035035A KR 20180035035 A KR20180035035 A KR 20180035035A KR 1020160125004 A KR1020160125004 A KR 1020160125004A KR 20160125004 A KR20160125004 A KR 20160125004A KR 20180035035 A KR20180035035 A KR 20180035035A
Authority
KR
South Korea
Prior art keywords
query
execution plan
analysis
operator
intermediate representation
Prior art date
Application number
KR1020160125004A
Other languages
English (en)
Inventor
이명철
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR1020160125004A priority Critical patent/KR20180035035A/ko
Priority to US15/485,801 priority patent/US20180089268A1/en
Publication of KR20180035035A publication Critical patent/KR20180035035A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24542Plan optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24537Query rewriting; Transformation of operators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/254Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses

Abstract

데이터 엔진에서 질의 최적화 방법 및 장치가 제공된다. 사용자 질의에 해당하는 입력되는 실행 플랜에 대해 질의 워크로드 분석을 수행하며, 실행 플랜에 대한 질의 워크로드 분석 결과가 OLAP(OnLine Analytical Processing) 분석이면 실행 플랜 전체를 대상으로 중간 표현을 생성하고, 질의 워크로드 분석 결과가 OLTP(OnLine Transaction Processing) 질의이면 실행 플랜 전체에서 일부 연산자를 중심으로 중간 표현을 생성한다. 그리고 중간 표현을 인메모리 머신 코드로 컴파일하여 질의 실행기를 획득하고, 질의 실행기를 수행한다.

Description

데이터 엔진에서의 질의 최적화 방법 및 장치{Method and apparatus for optimizing query in data engine}
본 발명은 데이터 엔진에서의 질의 최적화 방법 및 장치에 관한 것이다.
종래의 기업 의사 결정은 트랜잭션(transaction) 처리 업무에서 발생한 운영 데이터를 주기적으로 데이터 웨어하우스(warehouse) 시스템에 복제한 후 분석하고 그 분석 결과를 바탕으로 이루어지기 때문에, 현대의 실시간 기업 환경에서 요구하는 온라인 데이터 기반 실시간 분석 및 즉각적인 의사 결정이 불가하였다. 특히, 다차원 데이터 구조를 이용하여 다차원의 복잡한 질의를 고속으로 처리하는 데이터 분석 기술인 OLAP(OnLine Analytical Processing)의 경우, 사전에 집계하는 집계 위주의 처리로 인하여, 점차 복잡해지고 다양해지는 질의들에 대한 민첩한 대응이 불가한 문제가 있었다.
최근 실시간 기업 환경 지원을 통한 기업 경쟁력 확보를 위해, 대규모 트랜잭션 발생과 동시에 이를 실시간으로 분석하고 분석 결과를 활용하고자 하는 요구가, 금융 이상 거래 탐지, 지능형 지속 보안 공격 탐지, 결제 즉시 고객 성향을 분석 활용하는 유통사 온라인 마케팅 등 전 산업 분야에 걸쳐 요구되고 있다. 이에 따라 데이터의 이동 없이 기업의 비즈니스 운영 환경 기반으로 실시간 분석 및 의사 결정 환경을 제공할 수 있도록 “대규모 트랜잭션 처리와 복합 분석을 단일 플랫폼에서 지원하는 일체형 데이터 엔진(HTAP: Hybrid Transaction/Analytical Processing)”기술에 대한 시장의 관심 및 수요가 급격히 증가하고 있다.
일체형 데이터 엔진 실현을 위해서는 다양한 장벽 돌파 기술이 필요하다. 최신 데이터베이스 시스템들은 질의 실행 코드를 보다 압축된 형태로 변환하고, 최신 하드웨어가 제공하는 기능을 보다 잘 활용하여 가능한 데이터가 레지스터/캐쉬에 오래 머물고, SIMD(Single Instruction Multiple Data) 유닛과 같은 벡터 처리 기능을 활용할 수 있도록 컴파일러 최적화 기법, 즉 JIT(Just-In-Time) 컴파일 기반의 SQL 최적화 기법을 채택하고 있다.
그러나 대부분의 시스템들은 OLAP 분석 또는 저장 프로시저 등 일부 워크로드 타입만 잘 지원하거나 각 워크로드의 특성을 충분히 고려하지 못하고 JIT 컴파일을 수행하는 데 한계가 있다.
질의에 따라 워크로드 특성이 다르고, 워크로드 특성에 따라 JIT 컴파일 시 효과가 서로 상이한 문제를 해결하기 위하여 자동적으로 JIT 컴파일에 적당한 질의를 식별하여 선택적으로 JIT 컴파일을 적용하는 방법이 필요하다.
본 발명이 해결하고자 하는 과제는 OLTP(OnLine Transaction Processing) 질의와 OLAP(OnLine Analytical Processing) 분석 워크로드를 동시 지원하는 일체형 데이터 엔진에서의 질의 최적화 방법 및 장치를 제공하는 것이다.
본 발명의 특징에 따른 장치는, 데이터 엔진에서 질의 최적화를 위한 장치로서, 사용자 질의에 해당하는 실행 플랜에 대해 질의 워크로드 분석을 수행하여 해당 실행 플랜이 OLTP(OnLine Transaction Processing) 질의인지 OLAP(OnLine Analytical Processing) 분석인지를 판단하는 질의 워크로드 분석기; 실행 플랜에 대한 질의 워크로드 분석 결과가 OLAP 분석이면 실행 플랜 전체를 대상으로 중간 표현을 생성하고, 상기 질의 워크로드 분석 결과가 OLTP 질의이면 실행 플랜 전체에서 일부 연산자를 중심으로 중간 표현을 생성하는 중간 표현 생성기; 및 상기 중간 표현 생성기로부터 제공되는 중간 표현을 인메모리 머신 코드로 컴파일하여 질의 실행기를 획득하고, 질의 실행기를 수행하는 JIT 기반 질의 처리 제어기를 포함한다.
상기 질의 워크로드 분석기는, 분석 함수 및 집계 함수의 사용 여부 및 질의 선택율을 토대로 실행 플랜이 OLTP 질의인지 OLAP 분석인지를 판단할 수 있다.
상기 질의 워크로드 분석기는, 분석 함수 및 집계 함수가 모두 사용되는 경우 실행 플랜이 OLAP 분석인 것으로 판단하고, 상기 분석 함수 및 집계 함수가 모두 사용되지 않는 경우 예측된 질의 선택율이 미리 설정된 임계치 보다 크면 실행 플랜이 OLTP 질의인 것으로 판단하며, 상기 질의 선택율이 미리 설정된 임계치 이하이면 실행 플랜이 OLAP 분석인 것으로 판단할 수 있다.
상기 질의 워크로드 분석기는, 입력 방식, 실행 시간, 실행 패턴을 추가로 고려하여, 실행 플랜이 OLTP 질의인지 OLAP 분석인지를 판단할 수 있다.
상기 중간 표현 생성기는, 상기 질의 워크로드 분석 결과가 분석 결과가 OLTP 질의이면, 실행 플랜 전체를 사전 컴파일된 인터프리터를 이용하여 처리하여 실행 플랜 트리를 획득하고, 실행 플랜 트리의 각 노드를 탑-다운(Top-Down) 방식으로 순회하면서 연산자가 미리 설정된 연산자인지를 확인하고, 미리 설정된 연산자인 경우 해당 연산자를 연산자 수준에서 중간 표현으로 변환할 수 잇다.
상기 미리 설정된 연산자는, SORT, JOIN, GROUP-BY를 포함하는 주요 관계 연산자일 수 있다.
상기 장치는, 상기 중간 표현 생성기로부터 제공되는 중간 표현에 대하여 중간 표현 구문 기반 최적화 규칙을 적용시켜, 최적화된 중간 표현을 상기 JIT 기반 질의 처리 제어기로 제공하는, 최적화 규칙 실행기; 및 상기 최적화 규칙 실행기로 중간 표현 구문에 기반한 최적화 규칙 라이브러리를 제공하는, 최적화 규칙 제공기를 더 포함할 수 있다.
상기 장치는, 이전 사용자 질의의 실행 플랜으로부터 생성된 중간 표현을 캐쉬하고, 상기 이전 사용자 질의에 해당하는 실행 플랜이 입력되는 경우, 캐쉬된 중간 표현을 상기 JIT 기반 질의 처리 제어기로 제공하는 중간 표현 관리기를 더 포함할 수 있다.
상기 질의 최적화 장치는, 일체형 데이터 엔진에 대해 확장 모듈 형태로 동작할 수 있다.
본 발명의 다른 특징에 따른 방법은, 일체형 데이터 엔진에서 질의 최적화 장치가 질의 최적화를 수행하는 방법으로서, 사용자 질의에 해당하는 입력되는 실행 플랜에 대해 질의 워크로드 분석을 수행하여 해당 실행 플랜이 OLTP 질의인지 OLAP 분석인지를 판단하는 단계; 실행 플랜에 대한 질의 워크로드 분석 결과가 OLAP 분석이면 실행 플랜 전체를 대상으로 중간 표현을 생성하고, 상기 질의 워크로드 분석 결과가 OLTP 질의이면 실행 플랜 전체에서 일부 연산자를 중심으로 중간 표현을 생성하는 단계; 및 상기 중간 표현을 인메모리 머신 코드로 컴파일하여 질의 실행기를 획득하고, 질의 실행기를 수행하는 단계를 포함한다.
상기 판단하는 단계는, 분석 함수 및 집계 함수의 사용 여부 및 질의 선택율을 토대로 실행 플랜이 OLTP 질의인지 OLAP 분석인지를 판단할 수 있다.
상기 판단하는 단계는, 분석 함수 및 집계 함수가 모두 사용되는지를 판단하는 단계; 상기 분석 함수 및 집계 함수가 모두 사용되는 경우 실행 플랜이 OLAP 분석인 것으로 판단하는 단계; 상기 분석 함수 및 집계 함수가 모두 사용되지 않는 경우 질의 선택율을 예측하고, 예측된 질의 선택율을 미리 설정된 임계치와 비교하는 단계; 상기 질의 선택율이 상기 미리 설정된 임계치 보다 크면 실행 플랜이 OLTP 질의인 것으로 판단하는 단계; 및 상기 질의 선택율이 상기 미리 설정된 임계치 이하이면 실행 플랜이 OLAP 분석인 것으로 판단하는 단계를 포함할 수 있다.
상기 중간 표현을 생성하는 단계는, 상기 질의 워크로드 분석 결과가 분석 결과가 OLTP 질의이면, 실행 플랜 전체를 사전 컴파일된 인터프리터를 이용하여 처리하여 실행 플랜 트리를 획득하는 단계; 상기 실행 플랜 트리의 각 노드를 탑-다운 방식으로 순회하면서 연산자가 미리 설정된 연산자인지를 확인하는 단계; 및 미리 설정된 연산자인 경우 해당 연산자를 연산자 수준에서 중간 표현으로 변환하는 단계를 포함할 수 있다.
상기 미리 설정된 연산자는, SORT, JOIN, GROUP-BY를 포함하는 주요 관계 연산자일 수 있다.
상기 중간 표현을 생성하는 단계 이후에, 상기 방법은, 상기 중간 표현에 대하여 중간 표현 구문 기반 최적화 규칙을 적용시켜, 최적화된 중간 표현을 생성하는 단계를 더 포함할 수 있다.
상기 이전 사용자 질의의 실행 플랜으로부터 생성된 중간 표현을 캐쉬하는 단계를 더 포함할 수 있다. 이 경우, 상기 중간 표현을 생성하는 단계는 상기 사용자 질의가 상기 캐쉬된 중간 표현에 대응하는 이전 사용자 질의인 경우, 상기 캐쉬된 중간 표현을 사용하는 단계를 더 포함할 수 있다.
본 발명의 실시 예에 따르면, JIT 컴파일을 통해 질의 최적화를 지원하는 일체형 데이터 엔진에서, OLTP 질의와 OLAP 분석 워크로드 인지 기반으로 실행 플랜 또는 연산자 수준의 선택적 JIT 컴파일을 수행함으로써, 기존 데이터베이스 시스템에서 인터프리터 기반 질의 처리로 인한 성능 향상 한계를 극복하고, 또한 OLTP 질의와 OLAP 분석을 동시에 효율적으로 지원할 수 있다.
또한, 선택적 질의 최적화에 따라, OLTP 질의와 OLAP 분석을 모두 지원하고자 하는 일체형 데이터 엔진에서 상이한 워크로드 특성 및 JIT 컴파일 효과를 갖는 OLTP 질의와 OLAP 분석에 모두 최적으로 JIT 컴파일을 적용하여 질의 처리 성능을 향상시킬 수 있다.
도 1은 일체형 데이터 엔진을 나타낸 도이다.
도 2는 본 발명의 실시 예에 따른 최적화 대상으로 하는 사용자 SQL 질의와 이에 대응하는 실행 플랜의 일 실시 예를 나타낸 도이다.
도 3은 본 발명의 실시 예에 따른, JIT 컴파일 기반 질의 최적화를 위해 도 2의 실행 플랜으로부터 생성한 중간 표현의 일 실시 예를 나타낸 도이다.
도 4는 본 발명의 실시 예에 따라, 선택적 JIT 컴파일 기반 질의 최적화가 실행 플랜 수준 또는 연산자 수준에서 적용되는 일 실시 예를 나타낸 도이다.
도 5는 본 발명의 실시 예에 따른 선택적 JIT 컴파일을 통한 질의 최적화 장치의 구조를 나타낸 도이다.
도 6은 본 발명의 실시 예에서는 선택적 JIT 컴파일을 통한 질의 최적화 방법의 흐름도이다.
도 7은 본 발명의 실시 예에 따른 다른 질의 최적화 장치의 구조도이다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시 예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성 요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
일체형 데이터 엔진(HTAP: Hybrid Transaction/Analytical Processing) 실현을 위해서는 다양한 장벽 돌파 기술이 필요한데, 1) 대규모 트랜잭션 및 분석 데이터에 대한 인메모리(In-memory) 데이터 관리 기술, 2) 대규모 데이터에 대한 최신 하드웨어(예를 들어, 슈퍼스칼라(Superscalar) 다중 코어/프로세서, 매니코어(manicore), NUMA(Non-Uniform Access Memory) 구조 등)의 병렬성 극대화 및 메모리 장벽 극복을 통한 고성능 질의 처리 기술, 3) 상이한 워크로드(workload)(예를 들어, OLTP(OnLine Transaction Processing) 질의, OLAP(OnLine Analytical Processing) 분석, 저장 프로시저 등)를 갖는 질의 간 상호 간섭을 배제하면서 성능을 극대화하기 위한 워크로드 인지 기반 선택적 최적화 기술 등이 차례로 요구된다.
인메모리 데이터 관리 기술 측면에서 보면, 기존 디스크 기반 DBMS(Data Base Management System)들이 DRAM(Dynamic Random Access Memory)의 가격이 저렴해지면서, DRAM의 고속 접근 기능을 이용할 수 있도록 인메모리 DBMS로 변화하고 있다. 그러나, 대부분의 인메모리 DBMS 들이 사전 컴파일된 인터프리터 방식 실행기를 이용해서 전통적인 볼카노(Volcano) 방식의 이터레이터(iterator) 모델 및 한번에 한 튜플만 처리(tuple-at-a-time) 모델로 질의 처리를 수행한다.
볼카노 방식의 이터레이터 모델에서는, 사전 컴파일된 인터프리터 방식 질의 실행기가 SQL(Structured Query Language) 질의로부터 생성된 실행 플랜의 트리를 탑다운(Top-Down) 방식으로 순회하면서 각 연산자 노드를 방문하고 해당 연산자를 처리하여, 충분한 결과가 만들어질 때까지 결과 튜플(tuple)을 한번에 하나씩 생성하여 아래에서 위로 결과를 계속 올려 보내는 방식으로 질의 처리를 수행한다. 이러한 이터레이터 모델 기반 질의 처리는 아주 단순해서 어떤 연산자 조합에도 적용이 쉬운 장점이 있다.
그러나 이터레이터 모델 기반 질의 처리는 최신 고병렬 하드웨어를 활용함에도 불구하고 성능에 한계를 보이는 문제점을 보이고 있다. 이는 이터레이터 모델에서 보이는 다수의 함수 호출 및 한 튜플 단위의 처리 등으로 인해 최신 CPU(Central Processing Unit) 가 제공하는 파이프라인 처리 활용 어려움 및 레지스터/캐시의 지역성(locality) 활용 미진, 브랜치 예측 정확도 저하 등의 문제로 인해 메모리 접근 속도 이상의 성능을 내기 어렵기 때문이다.
이에 따라, HIQUE, HyPer, MonetDB, Hekaton, Impala, LegoBase 등의 최신 데이터베이스 시스템들은 질의 실행 코드를 보다 압축된 형태로 변환하고, 최신 하드웨어가 제공하는 기능을 보다 잘 활용하여 가능한 데이터가 레지스터/캐쉬에 오래 머물고, SIMD(Single Instruction Multiple Data) 유닛과 같은 벡터 처리 기능을 활용할 수 있도록 컴파일러 최적화 기법, 즉 JIT(Just-In-Time) 컴파일 기반의 SQL 최적화 기법을 채택하고 있다.
그러나 대부분의 시스템들은 OLAP 분석 또는 저장 프로시저 등 일부 워크로드 타입만 잘 지원하거나 각 워크로드의 특성을 충분히 고려하지 못하고 JIT (Just-In Time) 컴파일을 수행하는 한계가 있다. 예를 들어, Hekaton은 저장 프로시저에 대해서만 JIT 컴파일을 지원하고, HyPer는 OLAP/OLTP에 상관없이 JIT 컴파일하고 실행하여 OLTP 질의와 OLAP 분석 워크로드의 특성을 반영한 JIT 컴파일을 지원하지 못하고 있다.
JIT 컴파일을 수행하면 컴파일된 질의 실행기 자체의 성능은 개선되나, JIT 컴파일 시간이 다소 소요되는 특성을 갖고 있다. 따라서, JIT 컴파일은 대부분의 레코드에 접근하여 분석을 수행하고, 이에 따라 장시간 수행되는 특성을 갖는 OLAP 분석과, 한번 컴파일하면 여러 번 실행되므로 컴파일 시간이 중요하지 않은 저장 프로시저에 적합하고, 일부 레코드만 접근하여 저장/검색/변경을 수행하는 OLTP 질의에는 적합하지 않은 것으로 알려져 있다.
또한, OLAP 분석의 경우 전체 질의의 수행 시간이 길면서 JIT 컴파일 시간이 중요한 요소가 아니기 때문에, 질의 실행 플랜 전체를 JIT 컴파일하여 처리하는 것이 좋으나, OLTP 질의의 경우, 전체 수행 시간은 기본적으로 짧지만, JOIN, SORT, GROUP-BY 등 일부 주요 연산자의 사용 시에 수행 시간이 급격히 증가하는 특성을 가지며, JIT 컴파일 시간이 중요한 요소가 된다. 이에 따라서 OLTP 질의의 경우 전체 실행 플랜을 JIT 컴파일하는 것보다는 일부 주요 연산자만을 JIT 컴파일하여 기존 인터프리터 모델의 연산자 처리에 통합을 시키는 것이 더 좋은 성능을 보일 수 있다.
그러나 어떤 질의가 OLTP 성 질의이고 어떤 질의가 OLAP 성 분석인지 명확히 판단하는 기준은 존재하지 않으며, 이에 따라 JIT 컴파일을 언제 적용할 지 판단하는 기준도 명확하게 정의되어 있지 않은 것이 현실이다. 이에 질의에 따라 워크로드 특성이 다르고, 워크로드 특성에 따라 JIT 컴파일 시 효과가 서로 상이한 문제를 해결하기 위하여 자동적으로 JIT 컴파일에 적당한 질의를 식별하여 선택적으로 JIT 컴파일을 적용하는 방법이 필요하다.
본 발명의 실시 예에서는, OLTP 질의와 OLAP 분석 워크로드를 동시 지원하는 일체형 데이터 엔진에서의 질의 최적화 방법 및 장치를 제공한다. 더욱 상세하게는, JIT 컴파일 기법을 적용하여 입력 사용자 질의마다 최적 머신 코드로 컴파일된 질의 실행기를 생성 및 실행함으로서, 볼카노(Volcano) 스타일 반복(iteration)에 기반한 인터프리터 방식으로 사용자 질의를 처리하면서 발생하는 데이터베이스 질의 성능 한계를 극복하고자 하는 일체형 데이터 엔진에서, 질의 실행 플랜 또는 부분 연산자를 OLTP 질의와 OLAP 분석 워크로드 인지(awareness)에 기반하여 선택적으로 머신 코드로 JIT 컴파일하여 실행하도록 하는 질의 최적화 방법 및 장치를 제공한다.
본 발명의 실시 예에 따른 질의 최적화 방법은 인메모리 데이터 관리 기능을 제공하면서 OLTP 질의와 OLAP 분석 워크로드를 모두 지원하는 일체형 데이터 엔진에 적용하는 경우에는 특별히 더 유용하게 활용 가능하나, 디스크 데이터 관리 또는 인메모리 데이터 관리, 로우(row) 기반 또는 컬럼(column) 기반 데이터 저장 구조 등의 형태에 제약적이지 않으며, 일반적인 형태의 데이터베이스 시스템에 널리 적용될 수 있다.
이하, 도면을 참조하여 본 발명의 실시 예에 따른 질의 최적화 방법 및 장치에 대하여 설명한다.
도 1은 일체형 데이터 엔진을 나타낸 도이다.
첨부한 도 1에서와 같이, 일체형 데이터 엔진(1)은 크게 저장 관리기(Storage Manager)(10)와 질의 처리기(Query Processor)(20)를 포함한다.
저장 관리기(10)는 디스크 또는 메모리 상에 관리되는 데이터에 대한 관리 및 접근 방법을 질의 처리기(20)에 제공하며, 질의 처리기(20)는 저장 관리기(10)가 제공하는 관리 및 접근 방법을 이용해서 사용자가 입력한 질의를 처리하여 그 결과를 사용자에게 제공한다.
저장 관리기(10)는 디스크 또는 인메모리에 저장된 데이터의 효율적 로딩을 위한 버퍼 관리기(Buffer Manager)(11), 데이터에 대한 다중 접근 제어를 위한 잠금 관리기(Lock Manager)(12), 그리고 트랜잭션 관리를 위한 로그 관리기(Log Manager)(13)를 포함하며, 사용자에 대한 데이터 접근 방법(Access Methods)을 질의 처리기(20)로 전달한다.
질의 처리기(20)는 OLTP 질의 또는 OLAP 분석을 위한 사용자 질의를 파싱하는 질의 파서(Query Parser)(21), 파싱 결과인 추상 신택스 트리(Abstract Syntax Tree)를 실행 가능한 실행 플랜(Execution plan)으로 변환하는 질의 변환기(Query Rewriter)(22), 실행 플랜을 최적화된 형태로 변환하는 질의 최적화기(Query Optimizer)(23), 그리고 최적화된 트리 형태의 실행 플랜을 탑-다운(Top-Down) 방식으로 순회(traverse)해 가면서 질의 처리를 수행하고 질의 결과를 바텀-업(Bottom-Up) 방식으로 생성하여 전달해 나가는 인터프리터 기반 질의 실행기(Interpreted Executor)(24)를 포함한다.
도 1에 도시된 일체형 데이터 엔진(1)의 구조는 일반적인 DBMS들이 보편적으로 채택하고 있는 구조이다.
도 2는 본 발명의 실시 예에 따른 최적화 대상으로 하는 사용자 SQL 질의와 이에 대응하는 실행 플랜의 일 실시 예를 나타낸 도이다.
도 2에 도시된 사용자 SQL 질의와 실행 플랜을 도 1에 도시된 일체형 데이터 엔진에 적용하면, 데이터 엔진의 인터프리터 기반 질의 실행기는 도 2와 같은 실행 플랜에 따라, 루트 노드에서부터 단말 노드로 순회해 가면서 연산자를 나타내는 각 노드의 타입(연산자 종류)에 따른 처리를 수행하는 함수(예, 조인(JOIN) 노드의 경우 join() 함수)를 호출한다. 각 함수는 해당 노드의 결과를 생성하기 위해서 차례로 하위 노드의 함수를 수행하여 그 결과를 차례로 제공받는다. 따라서 이와 같은 처리 방식에서는 다수의 함수 호출이 발생하며, 최신 CPU 가 제공하는 파이프라인 처리 기능, 레지스터/캐쉬 활용 등이 어려워지고 단일 튜플 단위 처리로 인해 병렬 처리가 불가하게 된다. 따라서 이와 같은 인터프리터 방식 질의 처리로 인해 데이터베이스 시스템들이 최신 하드웨어의 활용에도 불구하고 성능 향상의 한계 문제를 겪고 있다.
본 발명의 실시 예에서는 실행 플랜을 중간 표현(IR, Intermediate Representation)의 형태로 변환하여 사용한다.
도 3은 본 발명의 실시 예에 따른, JIT 컴파일 기반 질의 최적화를 위해 도 2의 실행 플랜으로부터 생성한 중간 표현의 일 실시 예를 나타낸 도이다.
중간 표현 형태로 표현된 실행 플랜은 다수의 저수준 연산자 함수의 호출로 구성이 된다. 각 연산자 함수는 이미 중간 표현 형태로 변환되어 관리되고 있다가, 실행 플랜이 중간 표현으로 변환되면서 최적화 방법에 따라 실행 플랜과 연결되어, 종합적인 최적화가 수행될 수도 있다.
본 발명의 실시 예에 따른 중간 표현은, 다양한 SQL 질의를 저수준 플랫폼의 독립적인 표현으로 나타내고 다양한 최적화를 적용할 수 있도록, 오픈 소스 프로젝트인 LLVM(Low Level Virtual Machine)의 중간 표현(Intermediate Representation) 구문을 활용하여 나타내는데, 이에 한정되는 것은 아니다. 중간 표현은 최적화가 적용되면 최적화된 중간 표현으로 변환되고, 최종적으로는 플랫폼 의존적인 머신 코드로 변환되어 실행된다.
도 4는 본 발명의 실시 예에 따라, 선택적 JIT 컴파일 기반 질의 최적화가 실행 플랜 수준 또는 연산자 수준에서 적용되는 일 실시 예를 나타낸 도이다.
SQL 질의는 SQL 실행 플랜 전체가 중간 표현 기반으로 JIT 컴파일되어 실행될 수도 있고, 관계형 트리 기반 SQL 실행 플랜 상태에서 사전 컴파일된 인터프리터 방식의 SQL 질의 실행기에 의해 SQL 실행 플랜이 주요 관계 연산자 단위로 JIT 컴파일되어 실행될 수도 있다. 실행 플랜 전체가 JIT 컴파일되어 SQL 질의가 실행 되면 사용자에게 질의 결과를 제공한 후 질의 처리가 바로 종료된다. 연산자 수준에서 JIT 컴파일되어 SQL 질의가 실행되면 그 결과를 인터프리터 기반 질의 실행기에게 돌려 주고, 인터프리터 기반 질의 실행기는 다음 연산자 노드에 대한 질의 처리를 이어서 수행한다.
본 발명의 실시 예에서는 이러한 선택적 JIT 컴파일 기반 질의 최적화를 일체형 데이터 엔진에 적용할 수 있다.
도 5는 본 발명의 실시 예에 따른 선택적 JIT 컴파일을 통한 질의 최적화 장치의 구조를 나타낸 도이다. 구체적으로 도 5는 본 발명의 실시 예에 따른 선택적 JIT 컴파일을 통한 질의 최적화 장치가 일체형 데이터 엔진에 적용된 구조를 나타낸다.
첨부한 도 5에서와 같이, 본 발명의 실시 예에 따른 선택적 JIT 컴파일을 통한 질의 최적화 장치(100)는, 질의 워크로드 분석기(Workload Analyzer)(110), 중간 표현 생성기(IR Generator)(120), 중간 표현 관리기(130), 최적화 규칙 제공기(Optimization Rules)(140), 최적화 규칙 실행기(IR Optimizer)(150), JIT 기반 질의 처리 제어기(160)를 포함한다.
이러한 질의 최적화 장치(100)는 도 1에 도시된 일체형 데이터 엔진(10)에 대해 확장 모듈 형태로 동작한다. 이에 따라, 본 발명의 실시 예에 따른 선택적 JIT 컴파일을 통한 질의 최적화는 일반적인 DBMS 구조에 널리 적용이 가능하다.
질의 워크로드 분석기(110)는, 사용자의 애드혹(ad-hoc) 입력 질의에 대해 어떤 질의가 JIT 컴파일 기반 실행에 최적인지를 판단한다. 질의 워크로드 분석기(110)는 JIT 컴파일 시간을 고려해서 미리 설정된 판정 기준을 토대로 OLTP 질의인 경우보다는 OLAP 분석인 경우, 해당 질의가 JIT 컴파일 기반 실행에 최적인 것으로 판단한다. 미리 설정된 판정 기준에 따른 판단은, 예를 들어, 애드혹 입력 질의가 분석/집계 함수를 사용하거나 질의 선택율(selectivity)이 낮으면 OLAP 분석인 것, 즉 JIT 컴파일이 효율적이라고 판단하며, 그 외에는 OLTP 질의, 즉 JIT 컴파일이 비효율적이라고 판단한다.
중간 표현 생성기(120)는, SQL 질의 실행 플랜으로부터 중간 표현(예를 들어, LLVM 중간 표현)을 생성한다. 중간 표현 생성기(120)는 OLAP 분석과 저장 프로시저의 경우 SQL 실행 플랜 전체를 대상으로 중간 표현을 생성하며, OLTP 질의의 경우 SQL 실행 플랜 전체에서 일부 주요 관계 연산자(SORT, JOIN, GROUP-BY 등)를 중심으로 중간 표현을 생성한다.
중간 표현 관리기(130)는, 이전 SQL 질의로부터 생성된 중간 표현을 캐쉬하여 제공한다. 이에 따라 자주 수행되는 질의의 경우 중간 표현을 생성하는 시간을 단축할 수 있다. 또한, 중간 표현 관리기(130)는 컴파일된 질의를 관리하기 위한 한정된 메모리 공간을 고려하여, 언제/어떤 질의를 관리하고 내보낼지를 제어하는 적절한 캐쉬 진입 제어 정책을 제공한다. OLTP 질의의 경우 수행 시간이 짧기 때문에, 중간 표현 생성 시간을 줄이는 것이 전체 수행 시간 단축에 도움이 된다.
최적화 규칙 제공기(140)는, SQL 질의의 의미 및 중간 표현 구문에 기반한 최적화 규칙 라이브러리를 제공한다. SQL 질의 의미 기반 주요 최적화 규칙으로는 연산자간 푸쉬(Push) 기반 데이터 전달, 중복 실체화 제거, 데이터 레이아웃 변환, 조인 순서 최적화, 동시성 제어 수준별 중간 코드 기반 트랜잭션 처리 기본 연산 최적화 등을 지원한다. 중간 표현 구문 기반 최적화 규칙으로는 중복 코드 제거, 불필요 코드 제거, 함수 인라인, 루프 병합, SIMD 활용 최적화 등이 있으며, 일부 중간 표현 구문 기반 최적화 규칙은 예를 들어, LLVM이 제공하는 최적화 규칙을 활용하여 제공된다.
최적화 규칙 실행기(150)는, 다양한 실행 플랜 수준의 매크로(macro) 최적화와 연산자, 그리고 실행 플랜 및 연산자 통합 수준의 마이크로(micro) 최적화를 중간 표현에 적용한다. 적용되는 최적화 규칙은 최적화 규칙 제공기(140)가 제공하는 SQL 질의 의미 기반 최적화 규칙과 중간 표현 구문 기반 최적화 규칙이 선택적으로 적용된다. 최적화 규칙 실행기(150)는, 자주 같이 사용되는 최적화 규칙을 묶어서 적용할 수 있도록 최적화 모듈 파이프라인 기능을 제공하며, 시스템 제공 빌트인 파이프라인과 사용자 정의 파이프라인 구성 기능을 지원한다.
JIT 기반 질의 처리 제어기(160)는, 중간 표현을 인메모리 머신 코드로 컴파일하고, 인메모리 머신 코드 형태로 생성된 컴파일된 질의 실행기를 수행한다. 컴파일된 질의 실행기는 메인 질의 처리 쓰레드(thread)와 같은 프로세스 공간 내에서 별도의 쓰레드 또는 함수 호출 형태로 수행된다.
OLTP 질의와 OLAP 분석 워크로드 인지 기반 선택적 JIT 컴파일을 통한 질의 최적화를 지원하기 위하여, 본 발명의 실시 예에서는 표 1과 같은 질의 워크로드 분석 기준을 제공한다.
분석 기준 OLTP 질의 OLAP 분석
분석 함수(window, over, rank 등) 사용 X O
집계 함수(sum, min, max 등) 사용 O O
입력 방식 주로 단순
ad-hoc 질의
ad-hoc 질의
+ 저장 프로시저 호출
실행 시간 아주 짧다 보통 길다
실행 패턴 동일 질의가
단시간에 자주 수행
시간/일 단위
주기적 반복
WHERE 절의 조건문에 따른 질의 선택율 (전체 레코드 개수 대비 접근/반환되는 레코드 개수 비율의 역) High
(결과 개수가 적다)
Low
(결과 개수가 많다)
질의 워크로드 분석 기준은, 질의 워크로드 분석기(110) 모듈에서 종합적으로 계산되어 수행된다.
다음 표 2는 JIT 컴파일 행위를 나타낸다. 구체적으로 표 2는 질의 워크로드 분석기(100)에서 표 1의 질의 워크로드 분석 기준을 종합적으로 계산한 질의 워크로드 분석 결과에 따라, OLTP 질의와 OLAP 분석 워크로드에 선택적으로 적용되는 JIT 컴파일 행위를 나타낸다.
JIT 컴파일 행위 OLTP 질의 OLAP 분석
JIT 컴파일 적용 범위 전체 플랜 대상으로는 JIT 컴파일 미적용 전체 실행 플랜을 대상으로 JIT 컴파일 적용
일부 주요 연산자(SORT, JOIN, GROUP-BY 등)의 경우 JIT 컴파일 적용
적용되는 최적화 규칙 OLTP 질의의 활용 및 워크로드 특성을 고려하여, OLTP 질의의 실행 시간 단축을 위한 중간 표현 기반 최적화 규칙 적용 OLAP 분석의 활용 및 워크로드 특성을 고려하여, OLAP 분석의 실행 시간 단축을 위한 중간 표현 기반 최적화 규칙 적용
질의 캐쉬 JIT 컴파일 시간 단축을 위해 가능하면 JIT 컴파일된 중간 표현을 캐쉬에 관리 캐쉬 필요성 낮음(Low)
다음에는 본 발명의 실시 예에 따른 OLTP 질의와 OLAP 분석 워크로드 인지 기반 선택적 JIT 컴파일을 통한 질의 최적화에 대해 설명한다.
도 6은 본 발명의 실시 예에서는 선택적 JIT 컴파일을 통한 질의 최적화 방법의 흐름도이다.
첨부한 도 6에 도시되어 있듯이, 실행 플랜이 입력되면(S100), 본 발명의 실시 예에 따른 질의 최적화 장치(100)는 입력된 실행 플랜에 대해 질의 워크로드 분석을 수행하여 해당 실행 플랜이 OLTP 질의 인지 OLAP 분석인지를 판단한다. 구체적으로, 분석/집계 함수가 모두 사용되는 경우 실행 플랜이 OLAP 분석으로 판단한다(S110, S120). 분석/집계 함수가 모두 사용되는 것이 아니면 질의 선택율을 예측하고(S130), 예측된 질의 선택율과 미리 설정된 임계치를 비교하여(S140) 질의 선택율이 임계치 이하이면 실행 플랜이 OLAP 분석으로 판단한다(S120). 반면, 질의 선택율이 임계치보다 크면 실행 플랜이 OLTP 질의인 것으로 판단한다(S150). 이때 사용하는 임계치는 실험에 의해 가변적으로 설정하여 사용할 수 있다. 한편, 실행 플랜에 대해 질의 워크로드 분석시, 표 1과 같은 질의 워크로드 분석 기준을 사용하여 해당 실행 플랜이 OLTP 질의 인지 OLAP 분석인지를 판단할 수 있다.
실행 플랜에 대한 질의 워크로드 분석 결과가 OLAP 분석이면(S160), 실행 플랜 전체를 중간 표현 기반으로 변환한 후 최적화 과정을 거쳐서 머신 코드로 JIT 컴파일하고(S170), 컴파일된 질의 실행기를 생성 및 실행한다(S180).
한편, 실행 플랜에 대한 질의 워크로드 분석 결과가 OLTP 질의이면, 실행 플랜 전체를 기본적으로 사전 컴파일된 인터프리터를 이용하여 처리한다(S190). 실행 플랜 트리의 각 노드를 탑-다운(Top-Down) 방식으로 순회하면서 연산자가 주요 관계 연산자(SORT, JOIN, GROUP-BY 등)인지를 확인한다(S200~ S220). 확인 결과 주요 관계 연산자이면 연산자 JIT 컴파일을 한다. 즉, 해당 연산자를 연산자 수준에서 중간 표현으로 변환한 후 최적화 과정을 거쳐서 머신 코드로 JIT 컴파일한다(S230). 이후 컴파일된 연산자 기반 실행기를 수행한다(S240). 실행 결과는 상위 연산자 노드에 전달되어 다음 연산의 처리에 활용된다. 한편, 확인 결과 주요 관계 연산자가 아니면, 해당 연산자를 수행하고(S250) 다음 연산자 존재 여부에 따라 위의 과정을 반복한다.
위에 기술된 바와 같은 본 발명의 실시 예에 따르면, OLTP 질의와 OLAP 분석 워크로드 특성을 고려하여 각 워크로드에 맞게 JIT 컴파일 여부를 결정하고, 각 워크로드 특성에 맞는 최적화를 수행하여, OLTP 질의와 OLAP 분석 워크로드를 모두 지원하는 일체형 데이터 엔진에서 최신 하드웨어가 제공하는 고병렬 파이프라인드 처리 및 고속 레지스터/메모리를 활용할 수 있게 되어 일체형 데이터 엔진의 전반적인 질의 처리 성능을 향상할 수 있다.
도 7은 본 발명의 실시 예에 따른 다른 질의 최적화 장치의 구조도이다.
첨부한 도 7에 도시되어 있듯이, 본 발명의 실시 예에 따른 질의 최적화 장치(200)는, 프로세서(210), 메모리(220) 및 입출력부(230)를 포함한다. 프로세서(210)는 위의 도 2 내지 도 6를 토대로 설명한 방법들을 구현하도록 구성될 수 있다. 예를 들어, 프로세서(210)는 질의 워크로드 분석기, 중간 표현 관리기, 최적화 규칙 제공기, 최적화 규칙 실행기, JIT 기반 질의 처리 제어기의 기능을 수행하도록 구성될 수 있다.
메모리(220)는 프로세서(210)와 연결되고 프로세서(210)의 동작과 관련한 다양한 정보를 저장한다. 메모리(220)는 프로세서(210)에서 수행하기 위한 동작을 위한 명령어(instructions)를 저장하고 있거나 저장 장치(도시하지 않음)로부터 명령어를 로드하여 일시 저장할 수 있다. 또한, 메모리(220)는 예를 들어, 질의 처리 데이터 인메모리 저장부의 기능을 수행하도록 구성될 수 있다.
프로세서(210)는 메모리(220)에 저장되어 있거나 로드된 명령어를 실행할 수 있다. 프로세서(210)와 메모리(220)는 버스(도시하지 않음)를 통해 서로 연결되어 있으며, 버스에는 입출력 인터페이스(도시하지 않음)도 연결되어 있을 수 있다.
입출력부(230)는 프로세서(210)의 처리 결과를 출력하거나 임의 데이터를 프로세서(210)로 입력하도록 구성된다.
본 발명의 실시 예는 이상에서 설명한 장치 및/또는 방법을 통해서만 구현이 되는 것은 아니며, 본 발명의 실시예의 구성에 대응하는 기능을 실현하기 위한 프로그램, 그 프로그램이 기록된 기록 매체 등을 통해 구현될 수도 있으며, 이러한 구현은 앞서 설명한 실시예의 기재로부터 본 발명이 속하는 기술분야의 전문가라면 쉽게 구현할 수 있는 것이다.
이상에서 본 발명의 실시 예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.

Claims (16)

  1. 데이터 엔진에서 질의 최적화를 위한 장치로서,
    사용자 질의에 해당하는 실행 플랜에 대해 질의 워크로드 분석을 수행하여 해당 실행 플랜이 OLTP(OnLine Transaction Processing) 질의인지 OLAP(OnLine Analytical Processing) 분석인지를 판단하는 질의 워크로드 분석기;
    실행 플랜에 대한 질의 워크로드 분석 결과가 OLAP 분석이면 실행 플랜 전체를 대상으로 중간 표현을 생성하고, 상기 질의 워크로드 분석 결과가 OLTP 질의이면 실행 플랜 전체에서 일부 연산자를 중심으로 중간 표현을 생성하는 중간 표현 생성기; 및
    상기 중간 표현 생성기로부터 제공되는 중간 표현을 인메모리 머신 코드로 컴파일하여 질의 실행기를 획득하고, 질의 실행기를 수행하는 JIT 기반 질의 처리 제어기
    를 포함하는, 질의 최적화 장치.
  2. 제1항에 있어서,
    상기 질의 워크로드 분석기는, 분석 함수 및 집계 함수의 사용 여부 및 질의 선택율을 토대로 실행 플랜이 OLTP 질의인지 OLAP 분석인지를 판단하는, 질의 최적화 장치.
  3. 제2항에 있어서,
    상기 질의 워크로드 분석기는, 분석 함수 및 집계 함수가 모두 사용되는 경우 실행 플랜이 OLAP 분석인 것으로 판단하고, 상기 분석 함수 및 집계 함수가 모두 사용되지 않는 경우 예측된 질의 선택율이 미리 설정된 임계치 보다 크면 실행 플랜이 OLTP 질의인 것으로 판단하며, 상기 질의 선택율이 미리 설정된 임계치 이하이면 실행 플랜이 OLAP 분석인 것으로 판단하는, 질의 최적화 장치.
  4. 제2항에 있어서,
    상기 질의 워크로드 분석기는, 입력 방식, 실행 시간, 실행 패턴을 추가로 고려하여, 실행 플랜이 OLTP 질의인지 OLAP 분석인지를 판단하는, 질의 최적화 장치.
  5. 제1항에 있어서,
    상기 중간 표현 생성기는, 상기 질의 워크로드 분석 결과가 분석 결과가 OLTP 질의이면, 실행 플랜 전체를 사전 컴파일된 인터프리터를 이용하여 처리하여 실행 플랜 트리를 획득하고, 실행 플랜 트리의 각 노드를 탑-다운(Top-Down) 방식으로 순회하면서 연산자가 미리 설정된 연산자인지를 확인하고, 미리 설정된 연산자인 경우 해당 연산자를 연산자 수준에서 중간 표현으로 변환하는, 질의 최적화 장치.
  6. 제5항에 있어서,
    상기 미리 설정된 연산자는, SORT, JOIN, GROUP-BY를 포함하는 주요 관계 연산자인, 질의 최적화 장치.
  7. 제1항에 있어서,
    상기 중간 표현 생성기로부터 제공되는 중간 표현에 대하여 중간 표현 구문 기반 최적화 규칙을 적용시켜, 최적화된 중간 표현을 상기 JIT 기반 질의 처리 제어기로 제공하는, 최적화 규칙 실행기; 및
    상기 최적화 규칙 실행기로 중간 표현 구문에 기반한 최적화 규칙 라이브러리를 제공하는, 최적화 규칙 제공기
    를 더 포함하는, 질의 최적화 장치.
  8. 제1항에 있어서,
    이전 사용자 질의의 실행 플랜으로부터 생성된 중간 표현을 캐쉬하고, 상기 이전 사용자 질의에 해당하는 실행 플랜이 입력되는 경우, 캐쉬된 중간 표현을 상기 JIT 기반 질의 처리 제어기로 제공하는 중간 표현 관리기
    를 더 포함하는, 질의 최적화 장치.
  9. 제1항에 있어서,
    상기 질의 최적화 장치는, 일체형 데이터 엔진에 대해 확장 모듈 형태로 동작하는, 질의 최적화 장치.
  10. 일체형 데이터 엔진에서 질의 최적화 장치가 질의 최적화를 수행하는 방법으로서,
    사용자 질의에 해당하는 입력되는 실행 플랜에 대해 질의 워크로드 분석을 수행하여 해당 실행 플랜이 OLTP 질의인지 OLAP 분석인지를 판단하는 단계;
    실행 플랜에 대한 질의 워크로드 분석 결과가 OLAP 분석이면 실행 플랜 전체를 대상으로 중간 표현을 생성하고, 상기 질의 워크로드 분석 결과가 OLTP 질의이면 실행 플랜 전체에서 일부 연산자를 중심으로 중간 표현을 생성하는 단계; 및
    상기 중간 표현을 인메모리 머신 코드로 컴파일하여 질의 실행기를 획득하고, 질의 실행기를 수행하는 단계
    를 포함하는, 질의 최적화 방법.
  11. 제10항에 있어서,
    상기 판단하는 단계는, 분석 함수 및 집계 함수의 사용 여부 및 질의 선택율을 토대로 실행 플랜이 OLTP 질의인지 OLAP 분석인지를 판단하는, 질의 최적화 방법.
  12. 제11항에 있어서,
    상기 판단하는 단계는,
    분석 함수 및 집계 함수가 모두 사용되는지를 판단하는 단계;
    상기 분석 함수 및 집계 함수가 모두 사용되는 경우 실행 플랜이 OLAP 분석인 것으로 판단하는 단계;
    상기 분석 함수 및 집계 함수가 모두 사용되지 않는 경우 질의 선택율을 예측하고, 예측된 질의 선택율을 미리 설정된 임계치와 비교하는 단계;
    상기 질의 선택율이 상기 미리 설정된 임계치 보다 크면 실행 플랜이 OLTP 질의인 것으로 판단하는 단계; 및
    상기 질의 선택율이 상기 미리 설정된 임계치 이하이면 실행 플랜이 OLAP 분석인 것으로 판단하는 단계
    를 포함하는, 질의 최적화 방법.
  13. 제10항에 있어서,
    상기 중간 표현을 생성하는 단계는,
    상기 질의 워크로드 분석 결과가 분석 결과가 OLTP 질의이면, 실행 플랜 전체를 사전 컴파일된 인터프리터를 이용하여 처리하여 실행 플랜 트리를 획득하는 단계;
    상기 실행 플랜 트리의 각 노드를 탑-다운 방식으로 순회하면서 연산자가 미리 설정된 연산자인지를 확인하는 단계; 및
    미리 설정된 연산자인 경우 해당 연산자를 연산자 수준에서 중간 표현으로 변환하는 단계
    를 포함하는, 질의 최적화 방법.
  14. 제13항에 있어서,
    상기 미리 설정된 연산자는, SORT, JOIN, GROUP-BY를 포함하는 주요 관계 연산자인, 질의 최적화 방법.
  15. 제10항에 있어서,
    상기 중간 표현을 생성하는 단계 이후에,
    상기 중간 표현에 대하여 중간 표현 구문 기반 최적화 규칙을 적용시켜, 최적화된 중간 표현을 생성하는 단계
    를 더 포함하는, 질의 최적화 방법.
  16. 제10항에 있어서,
    이전 사용자 질의의 실행 플랜으로부터 생성된 중간 표현을 캐쉬하는 단계
    를 더 포함하고,
    상기 중간 표현을 생성하는 단계는 상기 사용자 질의가 상기 캐쉬된 중간 표현에 대응하는 이전 사용자 질의인 경우, 상기 캐쉬된 중간 표현을 사용하는 단계
    를 더 포함하는, 질의 최적화 방법.

KR1020160125004A 2016-09-28 2016-09-28 데이터 엔진에서의 질의 최적화 방법 및 장치 KR20180035035A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020160125004A KR20180035035A (ko) 2016-09-28 2016-09-28 데이터 엔진에서의 질의 최적화 방법 및 장치
US15/485,801 US20180089268A1 (en) 2016-09-28 2017-04-12 Method and apparatus for optimizing query in data engine

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160125004A KR20180035035A (ko) 2016-09-28 2016-09-28 데이터 엔진에서의 질의 최적화 방법 및 장치

Publications (1)

Publication Number Publication Date
KR20180035035A true KR20180035035A (ko) 2018-04-05

Family

ID=61685464

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160125004A KR20180035035A (ko) 2016-09-28 2016-09-28 데이터 엔진에서의 질의 최적화 방법 및 장치

Country Status (2)

Country Link
US (1) US20180089268A1 (ko)
KR (1) KR20180035035A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110188370A (zh) * 2019-04-09 2019-08-30 成都理工大学 自动化可复用地理空间信息处理快速建模方法

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10795887B1 (en) 2016-11-06 2020-10-06 Tableau Software, Inc. Dynamic rebuilding of query execution trees and reselection of query execution operators
US10901990B1 (en) 2017-06-30 2021-01-26 Tableau Software, Inc. Elimination of common subexpressions in complex database queries
US11055284B1 (en) 2017-06-30 2021-07-06 Tableau Software, Inc. Optimizing domain queries for relational databases
US10795888B2 (en) 2018-12-21 2020-10-06 Tableau Software, Inc. Elimination of query fragment duplication in complex database queries
US11650982B2 (en) * 2019-04-01 2023-05-16 Sap Se Automatic selection of precompiled or code-generated operator variants
CN110263105B (zh) * 2019-05-21 2021-09-10 北京百度网讯科技有限公司 查询处理方法、查询处理系统、服务器和计算机可读介质
US11640398B2 (en) * 2019-08-16 2023-05-02 Bank Of America Corporation Method and system for data communication with relational database management
CN111475588B (zh) * 2020-06-19 2020-12-08 阿里云计算有限公司 数据处理方法及装置
CN113076332B (zh) * 2021-03-25 2023-08-01 东北大学 一种数据库预编译查询语句的执行方法
CN113535771B (zh) * 2021-06-21 2023-11-28 跬云(上海)信息科技有限公司 持续迭代优化的预计算方法和装置
US11645231B1 (en) * 2022-04-24 2023-05-09 Morgan Stanley Services Group Inc. Data indexing for distributed query execution and aggregation
CN114756629B (zh) * 2022-06-16 2022-10-21 之江实验室 基于sql的多源异构数据交互分析引擎及方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US337276A (en) * 1886-03-02 meyer
US8930347B2 (en) * 2011-12-14 2015-01-06 International Business Machines Corporation Intermediate result set caching for a database system
US9329899B2 (en) * 2013-06-24 2016-05-03 Sap Se Parallel execution of parsed query based on a concurrency level corresponding to an average number of available worker threads
GB2531537A (en) * 2014-10-21 2016-04-27 Ibm Database Management system and method of operation
US9886347B2 (en) * 2015-01-08 2018-02-06 International Business Machines Corporation Data replication in a database management system
US11341132B2 (en) * 2015-09-01 2022-05-24 Sybase, Inc. Generating a producer-driven execution plan from a consumer-driven iterator-based execution plan
US11068506B2 (en) * 2016-05-10 2021-07-20 Sap Se Selective dispatching of OLAP requests using execution statistics

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110188370A (zh) * 2019-04-09 2019-08-30 成都理工大学 自动化可复用地理空间信息处理快速建模方法
CN110188370B (zh) * 2019-04-09 2021-11-05 成都理工大学 自动化可复用地理空间信息处理快速建模方法

Also Published As

Publication number Publication date
US20180089268A1 (en) 2018-03-29

Similar Documents

Publication Publication Date Title
KR20180035035A (ko) 데이터 엔진에서의 질의 최적화 방법 및 장치
Manegold et al. Database architecture evolution: Mammals flourished long before dinosaurs became extinct
Olston et al. Automatic optimization of parallel dataflow programs
US9424313B2 (en) Many-core algorithms for in-memory column store databases
Yuan et al. Spark-GPU: An accelerated in-memory data processing engine on clusters
US8732163B2 (en) Query optimization with memory I/O awareness
US9189047B2 (en) Organizing databases for energy efficiency
US10372707B2 (en) Query execution pipelining with pump operators
US7941426B2 (en) Optimizing database queries
US10706052B2 (en) Method for performing in-memory hash join processing in relational database systems
US8312007B2 (en) Generating database query plans
Baldacci et al. A cost model for SPARK SQL
US20160203409A1 (en) Framework for calculating grouped optimization algorithms within a distributed data store
Floratos et al. NestGPU: Nested query processing on GPU
Garg Optimization of multiple queries for big data with apache Hadoop/Hive
Li et al. Machine learning for data management: A system view
WO2018192479A1 (en) Adaptive code generation with a cost model for jit compiled execution in a database system
Chao-Qiang et al. RDDShare: reusing results of spark RDD
Jindal et al. Query and Resource Optimizations: A Case for Breaking the Wall in Big Data Systems
Pankratius et al. Moving database systems to multicore: An auto-tuning approach
Wei et al. SkinnerMT: Parallelizing for Efficiency and Robustness in Adaptive Query Processing on Multicore Platforms
US20180025094A1 (en) Increasing performance of in-memory databases using re-ordered query execution plans
US20230281201A1 (en) On-demand access of database table partitions
Kukreja Apache Hive: enterprise SQL on big data frameworks
Singhal A framework for predicting query response time