Redefining The Query Optimization Process
Traditionally, query optimizers have been designed for computer systems that share a common architecture, consisting of a CPU, main memory and disk subsystem. The efficiency of query optimizers and their successful employment relied on the fact that these architectures basically stayed the same over the last decades. However, recently the performance increase of serial instruction execution has stagnated. As a consequence, computer architectures have started to diversify. Combined with the fact that the size of main memories has significantly increased it becomes more important to exploit intrinsic internal features of computer systems (data coherence mechanisms, TLB and instruction cache performance, among others) rather than mainly focusing on minimizing disk I/O. Time has come for a re-evaluation of how (traditional) query optimization is implemented. Query optimizers must be able to cope with disruptive advances in computer architecture and employ methods to optimize for architecture-specific features. In this paper, the query optimization process is redefined so that compiler optimizations are taken into the game much earlier than traditionally is done and employ compiler optimizations as the driving force in query optimization. This new generation of query optimizers will be capable of optimizing queries to perform significantly better than contemporary state-of-the-art query optimizers.
READ FULL TEXT