Loop distribution with arbitrary control flow
Proceedings of the 1990 ACM/IEEE conference on Supercomputing
Advanced compiler design and implementation
Advanced compiler design and implementation
Sequentiality and prefetching in database systems
ACM Transactions on Database Systems (TODS)
ICDE '96 Proceedings of the Twelfth International Conference on Data Engineering
Loading a Cache with Query Results
VLDB '99 Proceedings of the 25th International Conference on Very Large Data Bases
Fido: A Cache That Learns to Fetch
VLDB '91 Proceedings of the 17th International Conference on Very Large Data Bases
Compile-time Inter-query Dependence Analysis
SPDP '96 Proceedings of the 8th IEEE Symposium on Parallel and Distributed Processing (SPDP '96)
Rewriting procedures for batched bindings
Proceedings of the VLDB Endowment
Holistic Query Transformations for Dynamic Web Applications
ICDE '09 Proceedings of the 2009 IEEE International Conference on Data Engineering
Data Flow Analysis: Theory and Practice
Data Flow Analysis: Theory and Practice
Program transformations for asynchronous query submission
ICDE '11 Proceedings of the 2011 IEEE 27th International Conference on Data Engineering
DBridge: A program rewrite tool for set-oriented query execution
ICDE '11 Proceedings of the 2011 IEEE 27th International Conference on Data Engineering
Automatic prefetching by traversal profiling in object persistence architectures
ECOOP'06 Proceedings of the 20th European conference on Object-Oriented Programming
Program analysis and transformation for holistic optimization of database applications
Proceedings of the ACM SIGPLAN International Workshop on State of the Art in Java Program analysis
Data-based research at IIT Bombay
ACM SIGMOD Record
Hi-index | 0.00 |
In this paper we address the problem of optimizing performance of database/web-service backed applications by means of automatically prefetching query results. Prefetching has been performed in earlier work based on predicting query access patterns; however such prediction is often of limited value, and can perform unnecessary prefetches. There has been some earlier work on program analysis and rewriting to automatically insert prefetch requests; however, such work has been restricted to rewriting of single procedures. In many cases, the query is in a procedure which does not offer much scope for prefetching within the procedure; in contrast, our approach can perform prefetching in a calling procedure, even when the actual query is in a called procedure, thereby greatly improving the benefits due to prefetching. Our approach does not perform any intrusive changes to the source code, and places prefetch instructions at the earliest possible points while avoiding wasteful prefetches. We have incorporated our techniques into a tool for holistic optimization called DBridge, to prefetch query results in Java programs that use JDBC. Our tool can be easily extended to handle Hibernate API calls as well as Web service requests. Our experiments on several real world applications demonstrate the applicability and significant performance gains due to our techniques.