Siempre que muestro un proyecto nuevo aparece la misma pregunta: “¿Uso SQLite o Postgres?”. Y sí… la respuesta fácil es “depende”, pero quería ir más allá y medirlo en escenarios reales. En este video probé ambos con escrituras, lecturas, concurrencia y algunas consultas más pesadas para ver dónde brilla cada uno y dónde se queda corto.
Lo que medí y cómo
- Entorno: una VPS humilde (1 vCPU/1GB RAM), lo típico para self-hosting barato.
- SQLite 3 con WAL activado. Postgres 16 con config casi default.
- Pruebas: inserts secuenciales (100k filas), lecturas concurrentes, 10 writers en paralelo y algunas consultas con joins e índices.
Resultados que importan
Escrituras secuenciales (una sola conexión)
- SQLite vuela. Con WAL activado y una única conexión, el archivo único hace que todo sea muy directo.
- Postgres es un poco más lento por el overhead del servidor y la durabilidad, pero estable.
Cuándo te conviene: si tu app escribe de a una cosa por vez (ej: app de escritorio, CLI, jobs offline), SQLite te rinde bárbaro.
Concurrencia de escritura (varios writers)
- Postgres gana cómodo. Con 10 escritores en paralelo, mantiene buen throughput y latencias razonables.
- SQLite aguanta bien muchas lecturas, pero con muchas escrituras simultáneas se empieza a trabar por los locks.
Cuándo te conviene: si tenés usuarios concurrentes, APIs con tráfico real o múltiples procesos escribiendo, andá con Postgres.
Lecturas concurrentes
- Con WAL, SQLite lee en paralelo sin drama. Para “read-heavy” rinde más de lo que parece.
- Postgres se mantiene consistente y responde parejo, incluso bajo carga mixta.
Cuándo te conviene: ambos funcionan bien, pero si además necesitás escribir mucho al mismo tiempo, Postgres sigue siendo más sólido.
Consultas complejas y planner
- Postgres la rompe con joins grandes, CTEs, planificador más maduro, tipos, extensiones, etc.
- SQLite cumplidor, pero está pensado para simpleza. En consultas pesadas se nota la diferencia.
Cuándo te conviene: si vas a hacer reporting, analítica, filtros complejos, búsquedas avanzadas… Postgres.
Operación, backups y costo mental
- SQLite es un archivo. Cero admin, backup con copiar el archivo o
VACUUM INTO, y listo. Ideal para desplegar rápido y barato. - Postgres requiere servicio, usuarios, roles, backups con
pg_dump/pg_basebackup, autovacuum, pooling (pgbouncer) si hay muchas conexiones, etc. Más trabajo, más poder.
Features que cambian el juego
- Postgres: extensiones (PostGIS, pgvector), Row Level Security, tipos avanzados, índices parciales, replicación, particionamiento, triggers potentes.
- SQLite: FTS5 (full-text search) y JSON1 alcanzan para mucho, pero no al mismo nivel de Postgres. Para edge/embebido, es un golazo.
Elegí con criterio (sin casarte con ninguna)
Elegí SQLite si:
- Tu app es monousuario o con pocas escrituras concurrentes.
- Querés zero-admin y portabilidad (un archivo y chau).
- Estás en edge, CLI, desktop, prototipos o microservicios livianos.
- Buscás costos bajísimos y simplicidad extrema.
Elegí Postgres si:
- Tenés tráfico real con múltiples clientes escribiendo a la vez.
- Vas a hacer consultas complejas, reportes o analítica.
- Necesitás replicación, alta disponibilidad, seguridad por filas, extensiones.
- Tu SaaS o API va a crecer y querés base robusta desde el día uno.
Tips prácticos rápidos
Para SQLite:
- Activá WAL:
PRAGMA journal_mode=WAL; - Si necesitás performance y podés tolerar un poco menos de durabilidad:
PRAGMA synchronous=NORMAL; - Backups:
VACUUM INTOo.backupy listo.
Para Postgres:
- Usá pgbouncer si tenés muchas conexiones cortas.
- Tunear con pgtune como punto de partida.
- Dejá autovacuum bien configurado.
- Backups serios:
pg_basebackup/WAL archiving.
Mirá el video
Cierre
Mi conclusión: en la mayoría de proyectos web multiusuario, Postgres es la apuesta segura. Pero no subestimes SQLite: para muchísimas cosas del día a día es más que suficiente y te ahorra plata, tiempo y complejidad. No es una religión; es elegir la herramienta justa.
Si querés aprender a desplegar tus bases o apps sin volverte loco ni gastar de más, te dejo este video donde te muestro cómo hacerlo paso a paso: https://www.youtube.com/watch?v=DAaXdNrcTV0
Contame en los comentarios qué estás usando y por qué. ¡Nos leemos!
![]()

