PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Isolamento de transação do PostgreSQL READ UNCOMMITTED


PostgreSQL não suporta leituras sujas (READ UNCOMMITTED ). Como @a_horse_with_no_name apontou, o manual diz:

Isso está de acordo com a regra do padrão de que o banco de dados deve tratar os níveis de isolamento não suportados como o nível suportado mais forte.

Não há suporte para ler tuplas não confirmadas de uma transação em andamento no PostgreSQL. Se houvesse, você seria capaz de obter coisas como valores duplicados para chaves primárias e caos geral, então não seria muito útil de qualquer maneira.

Existem algumas maneiras pelas quais as transações em andamento podem se comunicar e afetar umas às outras:
  • Por meio de um aplicativo cliente compartilhado (é claro)
  • SEQUENCE (e SERIAL ) as atualizações acontecem imediatamente, não no momento do commit
  • bloqueio consultivo
  • Bloqueio normal de linhas e tabelas, mas dentro das regras de READ COMMITTED visibilidade
  • UNIQUE e EXCLUSION restrições

É possível ver dados de tupla não confirmados usando recursos de depuração somente para superusuários, como pageinspect , mas somente se você realmente entender as entranhas do armazenamento de dados. É adequado apenas para recuperação e depuração de dados. Você verá várias versões de dados em uma parede de saída hexadecimal.