Guías y tutoriales de PostgreSQL
Estas guías tratan sobre Postgres en sí. Cada una parte de un problema que puedes encontrar en producción, lo reproduce con SQL que puedes pegar en psql y termina con una solución que puedes comprobar. Están escritas para PostgreSQL 17, la versión que ejecuta Relyt One, y casi todo lo que cubren aplica a cualquier Postgres reciente. Sigue la ruta de lectura de abajo en orden o ve directo a la guía que corresponde a tu problema.
11 artículos
Empieza aquí
Cuatro guías, en el orden que te sugerimos: cambiar un esquema sin bloquear la tabla, lograr que tus consultas usen los índices, mantener cerrada la seguridad a nivel de fila y revisar qué cambia si vienes de Postgres 18.
- Migraciones de Postgres que bloquean tu tabla: qué bloqueo toma cada ALTER TABLE y cómo aplicarlas sin riesgoPor qué un ALTER TABLE de una sola línea puede detener todas las consultas sobre una tabla, qué bloqueo toma cada migración común en PostgreSQL 17, cuáles reescriben la tabla y los patrones con lock_timeout, NOT VALID y CONCURRENTLY que mantienen producción en marcha.
- Por qué Postgres no usa tu índice: siete causas, con salidas de EXPLAIN que puedes reproducirCreaste el índice y EXPLAIN sigue mostrando un sequential scan. Siete razones por las que PostgreSQL ignora un índice (funciones, conversiones de tipo, comodines, selectividad, estadísticas desactualizadas, orden de columnas, tablas diminutas), cada una con su reproducción y su solución.
- Cinco maneras en que la seguridad a nivel de fila falla abiertaLa seguridad a nivel de fila es la mejor defensa contra un WHERE olvidado, hasta que deja de aplicarse en silencio. Cinco maneras en que falla abierta en PostgreSQL 17, cada una con una reproducción, una corrección y una consulta al catálogo que la detecta en CI.
- ¿Vienes de Postgres 18? Qué cambiar para Postgres 17Relyt One corre PostgreSQL 17. Si tu esquema o tus hábitos vienen de Postgres 18, aquí está lo que falla en 17, qué escribir en su lugar y cómo cargar un dump tomado en 18, con cada fragmento ejecutado en ambas versiones.
Más artículos con la etiqueta Postgres
Feed RSS
Por qué los IDs de Postgres se saltan números y cómo corregir los errores "duplicate key" después de una importación
De dónde vienen los huecos en las columnas serial e identity de PostgreSQL (rollbacks, ON CONFLICT, caídas, CACHE), por qué los inserts fallan con duplicate key value violates unique constraint después de importar datos, una consulta que reajusta todas las secuencias, qué pasa cuando se agotan los IDs integer y numeración sin huecos para facturas. Cada sentencia reproducida en Postgres 17.11.

Postgres como cola de trabajos: FOR UPDATE SKIP LOCKED, bien hecho
Cómo construir una cola de trabajos en segundo plano en PostgreSQL 17 con SELECT ... FOR UPDATE SKIP LOCKED: por qué el ingenuo SELECT-y-luego-UPDATE toma el mismo trabajo dos veces, por qué FOR UPDATE por sí solo hace esperar a los workers, leases y reintentos, LISTEN/NOTIFY, vacuum y lo que los workers que hacen polling le hacen a un cómputo serverless. Cada sentencia reproducida en Postgres 17.11.

INSERT ... ON CONFLICT vs MERGE en Postgres: qué upsert usar y los errores que lanza cada uno
Cuándo hacer upsert con INSERT ... ON CONFLICT y cuándo usar MERGE en PostgreSQL 17, por qué MERGE puede fallar con un error de clave duplicada bajo concurrencia y cómo resolver 'cannot affect row a second time', un RETURNING vacío y 'no unique or exclusion constraint matching the ON CONFLICT specification'. Cada sentencia reproducida en Postgres 17.11.

Qué se rompe detrás del pooling por transacción de PgBouncer y cómo arreglar cada caso
Por qué aparece 'prepared statement already exists', por qué la configuración se filtra entre solicitudes y por qué los advisory locks no bloquean nada detrás de un pooler por transacción, reproducido en PgBouncer 1.24 y PostgreSQL 17, con la solución de cada caso y una regla para saber cuándo usar la conexión directa.

Primeros pasos con la autenticación gestionada de Relyt One
Una guía paso a paso para crear una aplicación Next.js multiusuario en Relyt One. Activa la autenticación gestionada en una rama, haz que los usuarios inicien sesión, verifica sus JWT con @relyt/auth y deja que la seguridad a nivel de fila de Postgres mantenga separadas las filas de cada usuario.

Autenticación gestionada para Relyt One, ya en vista previa
Registro, inicio de sesión, sesiones y organizaciones para los usuarios de tu aplicación, funcionando junto a tu rama y guardando los usuarios en tu propia base de datos. Los tokens son JWT EdDSA de corta duración que verificas con JWKS, y la seguridad a nivel de fila hace el resto.

Presentamos Relyt One: Postgres serverless que se ramifica como el código
Relyt One es PostgreSQL 17 serverless con ramas copy-on-write, cómputo que se suspende cuando está inactivo, búsqueda vectorial integrada y autenticación gestionada. Te contamos cómo funciona y cómo pasar del inicio de sesión a una base de datos con ramas en cinco minutos.
Hay más artículos disponibles en inglés. Artículos en inglés