Elastic Pipelining in an In Memory Database Cluster
An in memory database cluster consists of multiple interconnected nodes with a large capacity of RAM and modern multi core CPUs. As a conventional query processing strategy, pipelining remains a promising solution for in memory parallel database systems, as it avoids expensive intermediate result materialization and parallelizes the data processing among nodes. However, to fully unleash the power of pipelining in a cluster with multi core nodes, it is crucial for the query optimizer to generate good query plans with appropriate intra node parallelism, in order to maximize CPU and network bandwidth utilization. A suboptimal plan, on the contrary, causes load imbalance in the pipelines and consequently degrades the query performance. Parallelism assignment optimization at compile time is nearly impossible, as the workload in each node is affected by numerous factors and is highly dynamic during query evaluation. To tackle this problem, we propose elastic pipelining, which makes it possible to optimize intra node parallelism assignments in the pipelines based on the actual workload at runtime. It is achieved with the adoption of new elastic iterator model and a fully optimized dynamic scheduler. The elastic iterator model generally upgrades traditional iterator model with new dynamic multi core execution adjustment capability. And the dynamic scheduler efficiently provisions CPU cores to query execution segments in the pipelines based on the light weight measurements on the operators. Extensive experiments on real and synthetic (TPC H) data show that our proposal achieves almost full CPU utilization on typical decision making analytical queries, outperforming state of the art open source systems by a huge margin.
SIGMOD Conference