PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 19/05/2022 15:28:07

sam01
Membre

verrou à la lecture

Bonjour,
quel est le moyen d'effectuer un select * sur une table sans poser de verrou sur celle-ci.
Un peu l'équivalent with(nolock) sur sqlserver ?

Hors ligne

#2 19/05/2022 17:15:52

rjuju
Administrateur

Re : verrou à la lecture

Ce n'est pas possible.  Quel problème cherchez vous à résoudre ?


Que se passe-t-il sur sqlserver si quelqu'un supprime une table pendant que vous faites une lecture sans verrou sur celle ci ?

Hors ligne

#3 20/05/2022 10:53:03

sam01
Membre

Re : verrou à la lecture

le problème du dirty read

Hors ligne

#4 20/05/2022 11:05:51

Marc Cousin
Membre

Re : verrou à la lecture

le with nolock de sql server, c'est pour éviter le verouillage des enregistrements lors du select (et surtout pouvoir lire des enregistrements qui sont verrouillés, et donc pourraient être en cours de mise à jour). PostgreSQL fonctionne un peu différemment là-dessus, cf https://www.postgresql.org/docs/current/mvcc-intro.html


Marc.

Hors ligne

#5 14/06/2022 09:33:37

sam01
Membre

Re : verrou à la lecture

Marc Cousin a écrit :

le with nolock de sql server, c'est pour éviter le verouillage des enregistrements lors du select (et surtout pouvoir lire des enregistrements qui sont verrouillés, et donc pourraient être en cours de mise à jour). PostgreSQL fonctionne un peu différemment là-dessus, cf https://www.postgresql.org/docs/current/mvcc-intro.html

Bonjour et merci pour le retour.
J'avoue que je n'ai pas bien saisi cette partie  :

The main advantage of using the MVCC model of concurrency control rather than locking is that in MVCC locks acquired for querying (reading) data do not conflict with locks acquired for writing data, and so reading never blocks writing and writing never blocks reading. PostgreSQL maintains this guarantee even when providing the strictest level of transaction isolation through the use of an innovative Serializable Snapshot Isolation (SSI) level.

Hors ligne

#6 14/06/2022 09:35:46

gleu
Administrateur

Re : verrou à la lecture

Pour faire simple, un SELECT ne bloquera pas et ne sera pas bloqué par un INSERT, ou un UPDATE, ou un DELETE.


Guillaume.

Hors ligne

#7 14/06/2022 09:35:49

Marc Cousin
Membre

Re : verrou à la lecture

Ça veut dire que sur un moteur MVCC, un SELECT ne va pas bloquer un INSERT/UPDATE/DELETE, et l'inverse non plus. Seuls deux ordres de modification de données peuvent entrer en conflit (et les alter table, lock table, etc… évidemment). Les moteurs non-MVCC résolvent le problème avec d'autres méthodes, comme le NOLOCK. C'est un compromis différent.


Marc.

Hors ligne

#8 14/06/2022 10:07:43

sam01
Membre

Re : verrou à la lecture

Merci Bien !

Hors ligne

Pied de page des forums