Affiliation:
1. University of Washington, Seattle, WA
2. MIT CSAIL, Cambridge, MA
Abstract
Many web applications store persistent data in databases. During execution, such applications spend a significant amount of time communicating with the database for retrieval and storing of persistent data over the network. These network round-trips represent a significant fraction of the overall execution time for many applications (especially those that issue a lot of database queries) and, as a result, increase their latency. While there has been prior work that aims to eliminate round-trips by batching queries, they are limited by (1) a requirement that developers manually identify batching opportunities, or (2) the fact that they employ static program analysis techniques that cannot exploit many opportunities for batching, as many of these opportunities require knowing precise information about the state of the running program.
In this article, we present S
loth
, a new system that extends traditional
lazy evaluation
to expose query batching opportunities during application execution, even across loops, branches, and method boundaries. Many such opportunities often require expensive and sophisticated static analysis to recognize from the application source code. Rather than doing so, S
loth
instead makes use of dynamic analysis to capture information about the program state and, based on that information, decides how to batch queries and when to issue them to the database. We formalize extended lazy evaluation and prove that it preserves program semantics when executed under standard semantics. Furthermore, we describe our implementation of S
loth
and our experience in evaluating S
loth
using over 100 benchmarks from two large-scale open-source applications, in which S
loth
achieved up to a 3 × reduction in page load time by delaying computation using extended lazy evaluation.
Funder
Intel Science and Technology Center for Big Data and the National Science Foundation
Publisher
Association for Computing Machinery (ACM)
Reference67 articles.
1. Lance Andersen. 2014. JSR 221: JDBC 4.0 API Specification. http://jcp.org/en/jsr/detail?id=221. (2014). Lance Andersen. 2014. JSR 221: JDBC 4.0 API Specification. http://jcp.org/en/jsr/detail?id=221. (2014).
2. Optimization of query streams using semantic prefetching
3. Program transformations for asynchronous query submission
Cited by
5 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献