Making an Embedded DBMS JIT-friendly

Authors Carl Friedrich Bolz, Darya Kurilova, Laurence Tratt

Thumbnail PDF


  • Filesize: 0.57 MB
  • 24 pages

Document Identifiers

Author Details

Carl Friedrich Bolz
Darya Kurilova
Laurence Tratt

Cite AsGet BibTex

Carl Friedrich Bolz, Darya Kurilova, and Laurence Tratt. Making an Embedded DBMS JIT-friendly. In 30th European Conference on Object-Oriented Programming (ECOOP 2016). Leibniz International Proceedings in Informatics (LIPIcs), Volume 56, pp. 4:1-4:24, Schloss Dagstuhl – Leibniz-Zentrum für Informatik (2016)


While database management systems (DBMSs) are highly optimized, interactions across the boundary between the programming language (PL) and the DBMS are costly, even for in-process embedded DBMSs. In this paper, we show that programs that interact with the popular embedded DBMS SQLite can be significantly optimized -- by a factor of 3.4 in our benchmarks -- by inlining across the PL / DBMS boundary. We achieved this speed-up by replacing parts of SQLite's C interpreter with RPython code and composing the resulting meta-tracing virtual machine (VM) -- called SQPyte -- with the PyPy VM. SQPyte does not compromise stand-alone SQL performance and is 2.2% faster than SQLite on the widely used TPC-H benchmark suite.
  • DBMSs
  • JIT
  • performance
  • tracing


  • Access Statistics
  • Total Accesses (updated on a weekly basis)
    PDF Downloads


  1. Vasanth Bala, Evelyn Duesterwald, and Sanjeev Banerjia. Dynamo: A transparent dynamic optimization system. In PLDI, 2000. Google Scholar
  2. Edd Barrett, Carl Friedrich Bolz, and Laurence Tratt. Approaches to interpreter composition. Comput. Lang. Syst. Str., abs/1409.0757, 2015. URL:
  3. Michael Bebenita, Florian Brandner, Manuel Fahndrich, Francesco Logozzo, Wolfram Schulte, Nikolai Tillmann, and Herman Venter. SPUR: A trace-based JIT compiler for CIL. In OOPSLA, 2010. Google Scholar
  4. Carl Friedrich Bolz, Antonio Cuni, Maciej Fijałkowski, and Armin Rigo. Tracing the meta-level: PyPy’s tracing JIT compiler. In ICOOOLPS, 2009. Google Scholar
  5. Carl Friedrich Bolz and Laurence Tratt. The impact of meta-tracing on VM design and implementation. To appear J. SCICO, 2014. Google Scholar
  6. Donald D. Chamberlin, Morton M. Astrahan, Michael W. Blasgen, James N. Gray, W. Frank King, Bruce G. Lindsay, Raymond Lorie, James W. Mehl, Thomas G. Price, Franco Putzolu, Patricia Griffiths Selinger, Mario Schkolnick, Donald R. Slutz, Irving L. Traiger, Bradford W. Wade, and Robert A. Yost. A history and evaluation of System R. Commun. ACM, 24(10), 1981. Google Scholar
  7. Craig Chambers, David Ungar, and Elgin Lee. An efficient implementation of SELF a dynamically-typed object-oriented language based on prototypes. In OOPSLA, 1989. URL:
  8. Andreas Gal, Christian W. Probst, and Michael Franz. HotpathVM: an effective JIT compiler for resource-constrained devices. In VEE, 2006. Google Scholar
  9. Miguel Garcia, Anastasia Izmaylova, and Sibylle Schupp. Extending Scala with database query capability. JOT, 9(4), 2010. URL:
  10. George Giorgidze, Torsten Grust, Tom Schreiber, and Jeroen Weijers. Haskell boards the Ferry: Database-supported program execution for Haskell. In IFL, 2010. URL:
  11. Goetz Graefe and William J. McKenna. The Volcano optimizer generator: extensibility and efficient search. In ICDE, 1993. Google Scholar
  12. Torsten Grust and Manuel Mayr. A deep embedding of queries into Ruby. In ICDE, 2012. Google Scholar
  13. Torsten Grust, Manuel Mayr, Jan Rittinger, and Tom Schreiber. Ferry: Database-supported program execution. In SIGMOD, 2009. Google Scholar
  14. Carl-Philip Haensch, Thomas Kissinger, Dirk Habich, and Wolfgang Lehner. Plan operator specialization using reflective compiler techniques. In BTW, 2015. Google Scholar
  15. Yannis Klonatos, Christoph Koch, Tiark Rompf, and Hassan Chafi. Building efficient query engines in a high-level language. PVLDB, 7(10), 2014. URL:
  16. Yannis Klonatos, Christoph Koch, Tiark Rompf, and Hassan Chafi. Errata for "Building efficient query engines in a high-level language": PVLDB 7(10):853-864. PVLDB, 7(13), 2014. Google Scholar
  17. Konstantinos Krikellas, Stratis D. Viglas, and Marcelo Cintra. Generating code for holistic query evaluation. In ICDE, 2010. Google Scholar
  18. Chris Lattner and Vikram Adve. LLVM: A compilation framework for lifelong program analysis &transformation. In CGO, 2004. Google Scholar
  19. Anatole Le, Ondřej Lhoták, and Laurie Hendren. Using inter-procedural side-effect information in JIT optimizations. In CC, 2005. Google Scholar
  20. Raymond A Lorie. XRM - an extended (n-ary) relational memory. Technical Report G320-2096, IBM Research Report, 1974. Google Scholar
  21. Toni Mattis, Johannes Henning, Patrick Rein, Robert Hirschfeld, and Malte Appeltauer. Columnar objects: Improving the performance of analytical applications. In Onward!, 2015. Google Scholar
  22. James George Mitchell. The design and construction of flexible and efficient interactive programming systems. PhD thesis, Carnegie Mellon University, 1970. Google Scholar
  23. Thomas Neumann. Efficiently compiling efficient query plans for modern hardware. PVLDB, 4(9), 2011. Google Scholar
  24. Jun Rao, Hamid Pirahesh, C. Mohan, and Guy Lohman. Compiled query execution engine using JVM. In ICDE, 2006. Google Scholar
  25. Tiark Rompf and Nada Amin. Functional pearl: A SQL to C compiler in 500 lines of code. In ICFP, 2015. Google Scholar
  26. Tom Schreiber, Simone Bonetti, Torsten Grust, Manuel Mayr, and Jan Rittinger. Thirteen new players in the team: A Ferry-based LINQ to SQL provider. PVLDB, 3(1-2), 2010. Google Scholar
  27. Gregory T. Sullivan, Derek L. Bruening, Iris Baron, Timothy Garnett, and Saman Amarasinghe. Dynamic native optimization of interpreters. In IVME, 2003. Google Scholar
  28. Transaction Processing Performance Council. TPC-H, a decision support benchmark., 2015. Google Scholar
  29. Thomas Würthinger, Christian Wimmer, Andreas Wöß, Lukas Stadler, Gilles Duboscq, Christian Humer, Gregor Richards, Doug Simon, and Mario Wolczko. One VM to rule them all. In Onward!, 2013. Google Scholar
  30. Alexander Yermolovich, Christian Wimmer, and Michael Franz. Optimization of dynamic languages using hierarchical layering of virtual machines. In DLS, 2009. Google Scholar