| resource management | simple: work_mem controls per-operator memory use | How execution memory is allocated and limited. |
| spilling support | yes | "spilling" refers to the process of writing temporary data or intermediate results of a query to disk when the available memory is exhausted. This is crucial for handling large datasets or complex queries that require more memory than available. |
| model | Volcano + push for parallel run | The operator scheduling model: pull-gebaseerd (Volcano), push etc. |
| support intra-parallel query? | yes | meaning a single query can utilize multi hardware threads to run it |
| adaptive execution (AQP)? | no | Traditionally, after the optimizer determines the plan, the runtime must execute it completely without any room for adjustment, such as which of the two tables should be built. The adaptive method allows the runtime to make some adjustments based on the actual situation, and the optimizer must also prepare for this uncertainty, such as preparing an alternative plan. |
| vectorization | no native | Speed up OLAP queries using vectorized execution. A vectorized runtime exchange a bunch of rows between iterators, and these rows are physically sotre with column-oriented order. |
| iterator: join methods | all 3 | Hash Join (HJ), Sort-Merge Join (MJ) and Nested loop Join (NLJ) are 3 major ones |
| Error: out-of-range and overflow | abort the transaction | To maintain atomic requirement of ACID, database engine usually fail the statement and abort the transaction. |