{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,3,14]],"date-time":"2026-03-14T17:54:23Z","timestamp":1773510863826,"version":"3.50.1"},"reference-count":52,"publisher":"Association for Computing Machinery (ACM)","issue":"12","content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Proc. VLDB Endow."],"published-print":{"date-parts":[[2022,8]]},"abstract":"<jats:p>In the two decades following its initial release, SQLite has become the most widely deployed database engine in existence. Today, SQLite is found in nearly every smartphone, computer, web browser, television, and automobile. Several factors are likely responsible for its ubiquity, including its in-process design, standalone codebase, extensive test suite, and cross-platform file format. While it supports complex analytical queries, SQLite is primarily designed for fast online transaction processing (OLTP), employing row-oriented execution and a B-tree storage format. However, fueled by the rise of edge computing and data science, there is a growing need for efficient in-process online analytical processing (OLAP). DuckDB, a database engine nicknamed \"the SQLite for analytics\", has recently emerged to meet this demand. While DuckDB has shown strong performance on OLAP benchmarks, it is unclear how SQLite compares. Furthermore, we are aware of no work that attempts to identify root causes for SQLite's performance behavior on OLAP workloads. In this paper, we discuss SQLite in the context of this changing workload landscape. We describe how SQLite evolved from its humble beginnings to the full-featured database engine it is today. We evaluate the performance of modern SQLite on three benchmarks, each representing a different flavor of in-process data management, including transactional, analytical, and blob processing. We delve into analytical data processing on SQLite, identifying key bottlenecks and weighing potential solutions. As a result of our optimizations, SQLite is now up to 4.2X faster on SSB. Finally, we discuss the future of SQLite, envisioning how it will evolve to meet new demands and challenges.<\/jats:p>","DOI":"10.14778\/3554821.3554842","type":"journal-article","created":{"date-parts":[[2022,9,29]],"date-time":"2022-09-29T22:28:39Z","timestamp":1664490519000},"page":"3535-3547","source":"Crossref","is-referenced-by-count":70,"title":["SQLite"],"prefix":"10.14778","volume":"15","author":[{"given":"Kevin P.","family":"Gaffney","sequence":"first","affiliation":[{"name":"University of Wisconsin-Madison"}]},{"given":"Martin","family":"Prammer","sequence":"additional","affiliation":[{"name":"University of Wisconsin-Madison"}]},{"given":"Larry","family":"Brasfield","sequence":"additional","affiliation":[{"name":"SQLite"}]},{"given":"D. Richard","family":"Hipp","sequence":"additional","affiliation":[{"name":"SQLite"}]},{"given":"Dan","family":"Kennedy","sequence":"additional","affiliation":[{"name":"SQLite"}]},{"given":"Jignesh M.","family":"Patel","sequence":"additional","affiliation":[{"name":"University of Wisconsin-Madison"}]}],"member":"320","published-online":{"date-parts":[[2022,9,29]]},"reference":[{"key":"e_1_2_1_2_1","doi-asserted-by":"publisher","DOI":"10.14778\/2735496.2735499"},{"key":"e_1_2_1_3_1","doi-asserted-by":"publisher","DOI":"10.1145\/362686.362692"},{"key":"e_1_2_1_4_1","volume-title":"19th International Conference on Very Large Databases. 506--516","author":"Chen Ming-Syan","unstructured":"Ming-Syan Chen , Hui- I Hsiao , and Philip S. Yu . 1993. Applying Hash Filters to Improving the Execution of Bushy Trees . In 19th International Conference on Very Large Databases. 506--516 . Ming-Syan Chen, Hui-I Hsiao, and Philip S. Yu. 1993. Applying Hash Filters to Improving the Execution of Bushy Trees. In 19th International Conference on Very Large Databases. 506--516."},{"key":"e_1_2_1_5_1","doi-asserted-by":"publisher","DOI":"10.1007\/s007780050036"},{"key":"e_1_2_1_6_1","doi-asserted-by":"publisher","DOI":"10.1109\/71.159044"},{"key":"e_1_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/3318464.3389769"},{"key":"e_1_2_1_8_1","unstructured":"DuckDB. [n.d.]. Continuous Benchmarking. https:\/\/duckdb.org\/benchmarks\/.  DuckDB. [n.d.]. Continuous Benchmarking. https:\/\/duckdb.org\/benchmarks\/."},{"key":"e_1_2_1_9_1","volume-title":"Proceedings of the USENIX Annual Technical Conference (ATC). 1--14","author":"Duplyakin Dmitry","year":"2019","unstructured":"Dmitry Duplyakin , Robert Ricci , Aleksander Maricq , Gary Wong , Jonathon Duerig , Eric Eide , Leigh Stoller , Mike Hibler , David Johnson , Kirk Webb , Aditya Akella , Kuangching Wang , Glenn Ricart , Larry Landweber , Chip Elliott , Michael Zink , Emmanuel Cecchet , Snigdhaswin Kar , and Prabodh Mishra . 2019 . The Design and Operation of CloudLab . In Proceedings of the USENIX Annual Technical Conference (ATC). 1--14 . https:\/\/www.flux.utah.edu\/paper\/duplyakin-atc19 Dmitry Duplyakin, Robert Ricci, Aleksander Maricq, Gary Wong, Jonathon Duerig, Eric Eide, Leigh Stoller, Mike Hibler, David Johnson, Kirk Webb, Aditya Akella, Kuangching Wang, Glenn Ricart, Larry Landweber, Chip Elliott, Michael Zink, Emmanuel Cecchet, Snigdhaswin Kar, and Prabodh Mishra. 2019. The Design and Operation of CloudLab. In Proceedings of the USENIX Annual Technical Conference (ATC). 1--14. https:\/\/www.flux.utah.edu\/paper\/duplyakin-atc19"},{"key":"e_1_2_1_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/2094114.2094126"},{"key":"e_1_2_1_12_1","unstructured":"Raspberry Pi Foundation. [n.d.]. About us. https:\/\/www.raspberrypi.org\/about\/.  Raspberry Pi Foundation. [n.d.]. About us. https:\/\/www.raspberrypi.org\/about\/."},{"key":"e_1_2_1_13_1","unstructured":"Raspberry Pi Foundation. [n.d.]. Raspberry Pi 4. https:\/\/www.raspberrypi.com\/products\/raspberry-pi-4-model-b\/.  Raspberry Pi Foundation. [n.d.]. Raspberry Pi 4. https:\/\/www.raspberrypi.com\/products\/raspberry-pi-4-model-b\/."},{"key":"e_1_2_1_14_1","unstructured":"Raspberry Pi Foundation. [n.d.]. Raspberry Pi 4 Tech Specs. https:\/\/www.raspberrypi.com\/products\/raspberry-pi-4-model-b\/specifications\/.  Raspberry Pi Foundation. [n.d.]. Raspberry Pi 4 Tech Specs. https:\/\/www.raspberrypi.com\/products\/raspberry-pi-4-model-b\/specifications\/."},{"key":"e_1_2_1_15_1","unstructured":"Gerhard H\u00e4ring. [n.d.]. sqlite3 --- DB-API 2.0 interface for SQLite databases. https:\/\/docs.python.org\/3.10\/library\/sqlite3.html.  Gerhard H\u00e4ring. [n.d.]. sqlite3 --- DB-API 2.0 interface for SQLite databases. https:\/\/docs.python.org\/3.10\/library\/sqlite3.html."},{"key":"e_1_2_1_16_1","unstructured":"D. Richard Hipp. [n.d.]. 35% Faster Than The Filesystem. https:\/\/www.sqlite.org\/fasterthanfs.html.  D. Richard Hipp. [n.d.]. 35% Faster Than The Filesystem. https:\/\/www.sqlite.org\/fasterthanfs.html."},{"key":"e_1_2_1_17_1","unstructured":"D. Richard Hipp. [n.d.]. About SQLite. https:\/\/www.sqlite.org\/about.html.  D. Richard Hipp. [n.d.]. About SQLite. https:\/\/www.sqlite.org\/about.html."},{"key":"e_1_2_1_18_1","unstructured":"D. Richard Hipp. [n.d.]. The Advantages Of Flexible Typing. https:\/\/www.sqlite.org\/flextypegood.html.  D. Richard Hipp. [n.d.]. The Advantages Of Flexible Typing. https:\/\/www.sqlite.org\/flextypegood.html."},{"key":"e_1_2_1_19_1","unstructured":"D. Richard Hipp. [n.d.]. Appropriate Uses For SQLite. https:\/\/www.sqlite.org\/whentouse.html.  D. Richard Hipp. [n.d.]. Appropriate Uses For SQLite. https:\/\/www.sqlite.org\/whentouse.html."},{"key":"e_1_2_1_20_1","unstructured":"D. Richard Hipp. [n.d.]. Architecture of SQLite. https:\/\/www.sqlite.org\/arch.html.  D. Richard Hipp. [n.d.]. Architecture of SQLite. https:\/\/www.sqlite.org\/arch.html."},{"key":"e_1_2_1_21_1","unstructured":"D. Richard Hipp. [n.d.]. Atomic Commit In SQLite. https:\/\/sqlite.org\/atomiccommit.html.  D. Richard Hipp. [n.d.]. Atomic Commit In SQLite. https:\/\/sqlite.org\/atomiccommit.html."},{"key":"e_1_2_1_22_1","unstructured":"D. Richard Hipp. [n.d.]. Compile-time Options. https:\/\/www.sqlite.org\/compile.html.  D. Richard Hipp. [n.d.]. Compile-time Options. https:\/\/www.sqlite.org\/compile.html."},{"key":"e_1_2_1_23_1","unstructured":"D. Richard Hipp. [n.d.]. Database File Format. https:\/\/www.sqlite.org\/fileformat.html.  D. Richard Hipp. [n.d.]. Database File Format. https:\/\/www.sqlite.org\/fileformat.html."},{"key":"e_1_2_1_24_1","unstructured":"D. Richard Hipp. [n.d.]. Datatypes In SQLite. https:\/\/www.sqlite.org\/datatype3.html.  D. Richard Hipp. [n.d.]. Datatypes In SQLite. https:\/\/www.sqlite.org\/datatype3.html."},{"key":"e_1_2_1_25_1","unstructured":"D. Richard Hipp. [n.d.]. How SQLite Is Tested. https:\/\/www.sqlite.org\/test.html.  D. Richard Hipp. [n.d.]. How SQLite Is Tested. https:\/\/www.sqlite.org\/test.html."},{"key":"e_1_2_1_26_1","unstructured":"D. Richard Hipp. [n.d.]. Long Term Support. https:\/\/sqlite.org\/lts.html.  D. Richard Hipp. [n.d.]. Long Term Support. https:\/\/sqlite.org\/lts.html."},{"key":"e_1_2_1_27_1","unstructured":"D. Richard Hipp. [n.d.]. Most Widely Deployed and Used Database Engine. https:\/\/www.sqlite.org\/mostdeployed.html.  D. Richard Hipp. [n.d.]. Most Widely Deployed and Used Database Engine. https:\/\/www.sqlite.org\/mostdeployed.html."},{"key":"e_1_2_1_28_1","unstructured":"D. Richard Hipp. [n.d.]. The Next-Generation Query Planner. https:\/\/www.sqlite.org\/queryplanner-ng.html.  D. Richard Hipp. [n.d.]. The Next-Generation Query Planner. https:\/\/www.sqlite.org\/queryplanner-ng.html."},{"key":"e_1_2_1_29_1","unstructured":"D. Richard Hipp. [n.d.]. Release History. https:\/\/www.sqlite.org\/changes.html.  D. Richard Hipp. [n.d.]. Release History. https:\/\/www.sqlite.org\/changes.html."},{"key":"e_1_2_1_30_1","unstructured":"D. Richard Hipp. [n.d.]. Single-file Cross-platform Database. https:\/\/www.sqlite.org\/onefile.html.  D. Richard Hipp. [n.d.]. Single-file Cross-platform Database. https:\/\/www.sqlite.org\/onefile.html."},{"key":"e_1_2_1_31_1","unstructured":"D. Richard Hipp. [n.d.]. The SQLite Amalgamation. https:\/\/www.sqlite.org\/amalgamation.html.  D. Richard Hipp. [n.d.]. The SQLite Amalgamation. https:\/\/www.sqlite.org\/amalgamation.html."},{"key":"e_1_2_1_32_1","unstructured":"D. Richard Hipp. [n.d.]. The SQLite Bytecode Engine. https:\/\/www.sqlite.org\/opcode.html.  D. Richard Hipp. [n.d.]. The SQLite Bytecode Engine. https:\/\/www.sqlite.org\/opcode.html."},{"key":"e_1_2_1_33_1","unstructured":"D. Richard Hipp. [n.d.]. SQLite Is Serverless. https:\/\/www.sqlite.org\/serverless.html.  D. Richard Hipp. [n.d.]. SQLite Is Serverless. https:\/\/www.sqlite.org\/serverless.html."},{"key":"e_1_2_1_34_1","unstructured":"D. Richard Hipp. [n.d.]. SQLite is Transactional. https:\/\/www.sqlite.org\/transactional.html.  D. Richard Hipp. [n.d.]. SQLite is Transactional. https:\/\/www.sqlite.org\/transactional.html."},{"key":"e_1_2_1_35_1","unstructured":"D. Richard Hipp. [n.d.]. TH3. https:\/\/sqlite.org\/th3.html.  D. Richard Hipp. [n.d.]. TH3. https:\/\/sqlite.org\/th3.html."},{"key":"e_1_2_1_36_1","unstructured":"D. Richard Hipp. [n.d.]. Well-Known Users of SQLite. https:\/\/www.sqlite.org\/famous.html.  D. Richard Hipp. [n.d.]. Well-Known Users of SQLite. https:\/\/www.sqlite.org\/famous.html."},{"key":"e_1_2_1_37_1","first-page":"40","article-title":"MonetDB: Two Decades of Research in Column-oriented Database Architectures","volume":"35","author":"Idreos Stratos","year":"2012","unstructured":"Stratos Idreos , Fabian Groffen , Niels Nes , Stefan Manegold , Sjoerd Mullender , and Martin Kersten . 2012 . MonetDB: Two Decades of Research in Column-oriented Database Architectures . In Bulletin of the IEEE Computer Society Technical Committee on Data Engineering , Vol. 35. 40 -- 45 . Stratos Idreos, Fabian Groffen, Niels Nes, Stefan Manegold, Sjoerd Mullender, and Martin Kersten. 2012. MonetDB: Two Decades of Research in Column-oriented Database Architectures. In Bulletin of the IEEE Computer Society Technical Committee on Data Engineering, Vol. 35. 40--45.","journal-title":"Bulletin of the IEEE Computer Society Technical Committee on Data Engineering"},{"key":"e_1_2_1_38_1","unstructured":"Kaggle. [n.d.]. Datasets. https:\/\/www.kaggle.com\/docs\/datasets.  Kaggle. [n.d.]. Datasets. https:\/\/www.kaggle.com\/docs\/datasets."},{"key":"e_1_2_1_39_1","volume-title":"Pocket Data: The Need for TPC-MOBILE. In Technology Conference on Performance Evaluation and Benchmarking (TPCTC).","author":"Kennedy Oliver","year":"2015","unstructured":"Oliver Kennedy , Jerry Ajay , Geoffrey Challen , and Lukasz Ziarek . 2015 . Pocket Data: The Need for TPC-MOBILE. In Technology Conference on Performance Evaluation and Benchmarking (TPCTC). Oliver Kennedy, Jerry Ajay, Geoffrey Challen, and Lukasz Ziarek. 2015. Pocket Data: The Need for TPC-MOBILE. In Technology Conference on Performance Evaluation and Benchmarking (TPCTC)."},{"key":"e_1_2_1_40_1","unstructured":"Motorola Microprocessor and Memory Technologies Group. [n.d.]. Product Brief Integrated Portable System Processor - DragonBall (TM). https:\/\/www.nxp.com\/docs\/en\/product-brief\/MC68328P.pdf.  Motorola Microprocessor and Memory Technologies Group. [n.d.]. Product Brief Integrated Portable System Processor - DragonBall (TM). https:\/\/www.nxp.com\/docs\/en\/product-brief\/MC68328P.pdf."},{"key":"e_1_2_1_41_1","volume-title":"Probability and Computing: Randomized Algorithms and Probabilistic Analysis","author":"Mitzenmacher Michael","unstructured":"Michael Mitzenmacher and Eli Upfal . 2005. Probability and Computing: Randomized Algorithms and Probabilistic Analysis . Cambridge University Press . Michael Mitzenmacher and Eli Upfal. 2005. Probability and Computing: Randomized Algorithms and Probabilistic Analysis. Cambridge University Press."},{"key":"e_1_2_1_42_1","unstructured":"Simo Neuvonen Antoni Wolski Markku Manner and Vilho Raatikka. 2011. Telecom Application Transaction Processing Benchmark. http:\/\/tatpbenchmark.sourceforge.net  Simo Neuvonen Antoni Wolski Markku Manner and Vilho Raatikka. 2011. Telecom Application Transaction Processing Benchmark. http:\/\/tatpbenchmark.sourceforge.net"},{"key":"e_1_2_1_43_1","unstructured":"Pat O'Neil Betty O'Neil and Xuedong Chen. 2009. Star Schema Benchmark. https:\/\/www.cs.umb.edu\/~poneil\/StarSchemaB.PDF  Pat O'Neil Betty O'Neil and Xuedong Chen. 2009. Star Schema Benchmark. https:\/\/www.cs.umb.edu\/~poneil\/StarSchemaB.PDF"},{"key":"e_1_2_1_44_1","doi-asserted-by":"publisher","DOI":"10.14778\/3184470.3184471"},{"key":"e_1_2_1_45_1","unstructured":"CoRecursive Podcast. [n.d.]. 066: The Untold Story of SQLite. https:\/\/corecursive.com\/066-sqlite-with-richard-hipp\/.  CoRecursive Podcast. [n.d.]. 066: The Untold Story of SQLite. https:\/\/corecursive.com\/066-sqlite-with-richard-hipp\/."},{"key":"e_1_2_1_46_1","volume-title":"12th Annual Conference on Innovative Data Systems Research (CIDR '22)","author":"Prammer Martin","unstructured":"Martin Prammer , Suryadev Sahadevan Rajesh , Junda Chen , and Jignesh M. Patel . 2022. Introducing a Query Acceleration Path for Analytics in SQLite3 . In 12th Annual Conference on Innovative Data Systems Research (CIDR '22) . Martin Prammer, Suryadev Sahadevan Rajesh, Junda Chen, and Jignesh M. Patel. 2022. Introducing a Query Acceleration Path for Analytics in SQLite3. In 12th Annual Conference on Innovative Data Systems Research (CIDR '22)."},{"key":"e_1_2_1_47_1","doi-asserted-by":"publisher","DOI":"10.1145\/3299869.3320212"},{"key":"e_1_2_1_48_1","doi-asserted-by":"publisher","DOI":"10.1109\/JIOT.2016.2579198"},{"key":"e_1_2_1_49_1","unstructured":"Transaction Processing Performance Council (TPC). 2010. TPC Benchmark C. http:\/\/www.tpc.org\/tpc_documents_current_versions\/pdf\/tpc-c_v5.11.0.pdf  Transaction Processing Performance Council (TPC). 2010. TPC Benchmark C. http:\/\/www.tpc.org\/tpc_documents_current_versions\/pdf\/tpc-c_v5.11.0.pdf"},{"key":"e_1_2_1_50_1","unstructured":"Transaction Processing Performance Council (TPC). 2015. TPC Benchmark E. http:\/\/www.tpc.org\/tpc_documents_current_versions\/pdf\/tpc-e_v1.14.0.pdf  Transaction Processing Performance Council (TPC). 2015. TPC Benchmark E. http:\/\/www.tpc.org\/tpc_documents_current_versions\/pdf\/tpc-e_v1.14.0.pdf"},{"key":"e_1_2_1_51_1","unstructured":"Transaction Processing Performance Council (TPC). 2021. TPC Benchmark H. http:\/\/www.tpc.org\/tpc_documents_current_versions\/pdf\/tpc-h_v3.0.0.pdf  Transaction Processing Performance Council (TPC). 2021. TPC Benchmark H. http:\/\/www.tpc.org\/tpc_documents_current_versions\/pdf\/tpc-h_v3.0.0.pdf"},{"key":"e_1_2_1_52_1","doi-asserted-by":"publisher","DOI":"10.25080\/Majora-92bf1922-00a"},{"key":"e_1_2_1_53_1","doi-asserted-by":"publisher","DOI":"10.1145\/3377330.3377338"},{"key":"e_1_2_1_54_1","doi-asserted-by":"publisher","DOI":"10.14778\/3090163.3090167"}],"container-title":["Proceedings of the VLDB Endowment"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.14778\/3554821.3554842","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2022,12,28]],"date-time":"2022-12-28T11:28:52Z","timestamp":1672226932000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.14778\/3554821.3554842"}},"subtitle":["past, present, and future"],"short-title":[],"issued":{"date-parts":[[2022,8]]},"references-count":52,"journal-issue":{"issue":"12","published-print":{"date-parts":[[2022,8]]}},"alternative-id":["10.14778\/3554821.3554842"],"URL":"https:\/\/doi.org\/10.14778\/3554821.3554842","relation":{},"ISSN":["2150-8097"],"issn-type":[{"value":"2150-8097","type":"print"}],"subject":[],"published":{"date-parts":[[2022,8]]}}}