This repository has been archived by the owner on Dec 16, 2022. It is now read-only.
forked from TimoKersten/db-engine-paradigms
-
Notifications
You must be signed in to change notification settings - Fork 1
Approaches
bala219 edited this page Mar 11, 2020
·
2 revisions
Execution time increases with compilation. But, compilation gives better performance. On the other hand, pre-compiled headers provide quickstart for execution but have runtime disadvantages.
Combining compilation and pre-compiled execution. Pre-compiled execution provides quickstart for execution with compilation running on the background --> hiding compilation with pre-compiled headers
- compile complete query while partial results are generated by pre-compiled headers
- partial compilation of a query while pre-compiled headers finish the remaining operators
user is given partial results with slower execution until compiled, afterward, faster results are produced advantages
- partial results are generated; i.e. fast response time
- no need for data transfer from one paradigm to another
- both the models can work in parallel
disadvantage
- generation of complete query requires more compilation time
- Data sharing is problematic across these paradigms
- Resources are wasted on both the paradigms as they share the execution
- Optimal execution from both the paradigms are not combined, i.e. advantage of one paradigm could be counteracted by another
results from pre-compiled headers are streamed into compiled execution once partial compilation ends. Pipeline-breakers can be used to connect from one paradigm to another.
advantages
- Complete resource utilization by compilation
- partial compilation leads to reduced compilation time than compiling a complete query
disadvantages
- Requires the right point to connect these paradigms; else leads to under-utilization of resources
- Transfer of result from one paradigm to another is problematic as the formats have to be changed
- Queries without pipeline-breakers cannot stream results
- pre-compiled headers process in a column-oriented and compiled executes in tuple-at-a-time, this conversion is again problematic
- requires the complete data to be produced by pre-compiled headers to feed into compiled execution