sql >> Base de Datos >  >> RDS >> PostgreSQL

Aislamiento de transacciones de PostgreSQL LECTURA NO COMPROMETIDA

PostgreSQL no admite lecturas sucias (READ UNCOMMITTED ). Como señaló @a_horse_with_no_name, el manual dice:

Esto se ajusta a la regla del estándar de que la base de datos debe tratar los niveles de aislamiento no admitidos como el nivel admitido más sólido.

No existe una forma admitida de leer tuplas no confirmadas de una transacción en curso en PostgreSQL. Si lo hubiera, podría obtener cosas como valores duplicados para claves principales y caos general, por lo que no sería muy útil de todos modos.

Hay son algunas formas en que las transacciones en curso pueden comunicarse y afectarse entre sí:

  • A través de una aplicación cliente compartida (por supuesto)
  • SEQUENCE (y SERIAL ) las actualizaciones ocurren inmediatamente, no en el momento de la confirmación
  • bloqueo de advertencia
  • Bloqueo normal de filas y tablas, pero dentro de las reglas de READ COMMITTED visibilidad
  • UNIQUE y EXCLUSION restricciones

Es posible ver datos de tuplas no confirmados utilizando funciones de depuración exclusivas para superusuarios como inspección de página , pero solo si realmente comprende las entrañas del almacén de datos. Es adecuado solo para la recuperación y depuración de datos. Verá múltiples versiones de datos en un muro de salida hexadecimal.