Dans SQLServer, vous pouvez utiliser la syntaxe "(nolock)" pour vous assurer que la requête ne verrouille pas la table ou n'est pas bloquée par d'autres requêtes verrouillant la même table. par exemple.
SELECT * FROM mytable (nolock) WHERE id = blah
Quelle est la syntaxe équivalente dans Postgres? J'ai trouvé de la documentation sur le verrouillage des tables dans PG ( http://www.postgresql.org/docs/8.1/interactive/sql-lock.html ), mais tout semble orienté sur la façon de verrouiller une table, pas s'assurer qu'elle n'est pas verrouillée .
Un SELECT ne verrouille aucune table dans PostgreSQL, sauf si vous voulez un verrou:
SELECT * FROM tablename FOR UPDATE;
PostgreSQL utilise MVCC pour minimiser les conflits de verrouillage afin de permettre des performances raisonnables dans les environnements multi-utilisateurs. Les lecteurs n'entrent pas en conflit avec les écrivains ou d'autres lecteurs.
J'ai fait quelques recherches et il semble que l'indication NOLOCK
dans SQL Server soit à peu près la même que le niveau d'isolement de transaction READ UNCOMMITTED
. Dans PostgreSQL, vous pouvez définir READ UNCOMMITTED
, mais il améliore silencieusement le niveau à READ COMMITTED
. READ UNCOMMITTED
n'est pas pris en charge.
Documentation PostgreSQL 8.4 pour l'isolement des transactions: http://www.postgresql.org/docs/8.4/static/transaction-iso.html