SQLite as your only database - a production tuning walkthrough

Build 29/07/2026 à 12h4610Ajouter aux favoris

SQLite as your only database - a production tuning walkthrough
Illustration : Léa Fontaine

A field guide argues embedded SQLite can carry a real production workload - if you know the WAL/mmap/VFS knobs. Under the hood, plus the trade-offs it won't fix.

In plain terms. A new engineering post argues that SQLite - the embedded database that lives inside your app - can serve a real production workload if you configure it right. It walks through the pragmas, journaling mode and virtual filesystem layers that turn the toy default into a low-latency server backend.

Context

The post - "SQLite in Production: Optimizing WAL Mode, Concurrency, and VFS Layers for Low-Latency App Servers" (micrologics.org, 29 July 2026) - reads as a practitioner's blueprint. It targets teams who reach for Postgres reflexively and want to ask whether the network hop to the DB was ever the cheap part.

Under the hood

Three levers do most of the work:

WAL mode.PRAGMA journal_mode=WAL; replaces the rollback journal with a separate -wal file. Readers and writers stop blocking each other on the page cache; only writers still serialize. The catch: unattended, the WAL file grows. You need a checkpoint strategy - PRAGMA wal_autocheckpoint, or explicit PASSIVE/FULL/RESTART/TRUNCATE calls from the app.

Contention shape. SQLite is a single-writer engine. The post's baseline: PRAGMA busy_timeout = 5000; for automatic retries, and BEGIN IMMEDIATE; for any transaction that plans to write - avoids the classic upgrade-deadlock when two BEGINs race.

Memory.PRAGMA cache_size = -64000; (64 MB) and PRAGMA mmap_size = 1073741824; (1 GB) turn most reads into pointer arithmetic.

The baseline pragmas
  • journal_mode=WAL
  • synchronous=NORMAL
  • busy_timeout=5000
  • cache_size=-64000
  • mmap_size=1073741824
  • temp_store=MEMORY
  • foreign_keys=ON. Sequence and version-check them on every open.

Analysis

What makes the post worth reading isn't the pragmas - those are old news. It's the framing: SQLite's VFS is the extension point that changes the architecture. Litestream (async replication to S3) and LiteFS (FUSE-based distributed layer) turn the local-file assumption into a network-tolerant one without touching your query code. On ephemeral cloud disks, the VFS layer is what you actually design around, not the pragmas.

Trade-offs the post owns

Explicit limits: multi-terabyte datasets, geo-distributed writes, workloads that need real MVCC across many writers. Below those ceilings, the post argues the operational surface is smaller than a managed Postgres - and the p99 latency is a memory-copy, not a socket round-trip.

So what

For teams building an AI-era backend where the "database" is often a per-tenant blob and the hot path is 1-5 ms, the question is no longer why SQLite in production, but which VFS. The post is best read as a checklist you paste next to your main.go - not as a promise that you can retire your cluster.

Ressources, à tester

Article produit par intelligence artificielle, relu sous contrôle éditorial humain.

Notre rédaction
Your Linux servers, as a desktop.
TermalOSSponsored
Ops, reimagined

Your Linux servers, as a desktop.

Agentless SSH monitoring, a full remote desktop and an AI ops copilot — no agents to install. Everything stays on your machine.

SSHMonitoringAI Ops
Get early access
Cet article vous a-t-il été utile ?

11 personnes ont aimé cet article

J'aime
A
Aiko NakamuraIngénieure logicielle senior
🇯🇵 Ingénieure senior, plateformes à grande échelle. Écrit sur la construction avec l'IA.
Partager :
Commentaires (10)

Connectez-vous pour rejoindre la discussion.

Alex 31 Jul 2026 · 06:39

I've used SQLite in production before, but never pushed it to its limits. How does it handle high-frequency writes and reads simultaneously?

TechSavvy47 31 Jul 2026 · 06:18

Interesting read! I've always wondered about SQLite's concurrency handling. Any insights on how it manages multiple write operations under heavy load?

ArtLover88 29 Jul 2026 · 09:31

I've always used SQLite for development, but never considered it for production. What are the main challenges you faced when tuning it for real-world use?

FilmBuffNYC 29 Jul 2026 · 14:29

One challenge was balancing performance with concurrency, as SQLite's single-writer model can limit throughput under heavy loads.

unLecteurCurieux 29 Jul 2026 · 16:39

One challenge is handling concurrent write operations, as SQLite locks the entire database during writes, which can cause bottlenecks under heavy load.

BookWorm88 29 Jul 2026 · 09:16

I've used SQLite for small projects, but I'm curious about its scalability. How does it perform with large datasets and complex queries?

LitLover42 29 Jul 2026 · 09:12

I've always thought SQLite was just for small stuff. But this makes me reconsider. What about security? Any tips on keeping data safe?

Dr. L. 30 Jul 2026 · 14:52

SQLite can be secure with proper encryption and access controls, but consider your specific needs and risks.

ArtLoverLA 29 Jul 2026 · 08:43

I've seen SQLite handle surprising loads in the right conditions. But what about backups? How do you ensure data integrity during backups in a high-write environment?

Alex 2 29 Jul 2026 · 08:36

SQLite in production? Interesting. I've heard it's lightweight but never considered it for heavy workloads. What's your experience with performance under high traffic?

ph1lippe_m 29 Jul 2026 · 08:33

Interesting take on SQLite. I wonder how it handles concurrent writes in high-traffic scenarios. Any insights on that?

TechSavvy 29 Jul 2026 · 08:27

I've always thought SQLite was more for small-scale projects. This article makes me reconsider its potential for heavier workloads.

HistoryBuff 2 29 Jul 2026 · 08:25

I've used SQLite in production for years. It's reliable but tuning it for heavy workloads is an art. The WAL mode is a game-changer.

Your Linux servers, as a desktop.
TermalOSSponsored
Ops, reimagined

Your Linux servers, as a desktop.

Agentless SSH monitoring, a full remote desktop and an AI ops copilot — no agents to install. Everything stays on your machine.

Get early access
Rubriques
Explorer
Informations