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

#1 14/06/2012 12:15:13

gom
Membre

Auto verrouillage de la table où je fais des INSERT ?!

Bonjour,

Je lance des INSERT depuis un ETL et j'ai des ExclusiveLock, des AccessShareLock et des RowExclusiveLock sur la table.

En résumé ... je m'auto-verrouille ! roll hmm

select t.relname,l.locktype,page,virtualtransaction,pid,mode,granted 
from pg_locks l, pg_stat_all_tables t 
where l.relation=t.relid 
order by relation asc;

"ma_table";"relation";;"14/63596";7415;"RowExclusiveLock";t


Une idée ?

Gôm

Hors ligne

#2 14/06/2012 12:38:12

kenrio
Membre

Re : Auto verrouillage de la table où je fais des INSERT ?!

un insert égal une transaction ? ou masse insert sous une seule transaction ?

Hors ligne

#3 14/06/2012 14:02:57

gom
Membre

Re : Auto verrouillage de la table où je fais des INSERT ?!

1000 INSERT par transaction. J'ai essayé avec 1 INSERT pour 1 transaction, mais rien n'y fait ! hmm

Hors ligne

#4 14/06/2012 15:56:39

Marc Cousin
Membre

Re : Auto verrouillage de la table où je fais des INSERT ?!

Non, on ne s'autoverrouille pas pour si peu: rowexclusivelock n'est pas un verrou d'enregistrement, mais un verrou partagé de table. http://www.postgresql.org/docs/9.1/stat … cking.html

Tout ce que fait ce verrou, c'est dire «attention, je suis en train de faire un update sur la table, merci de ne pas faire d'alter, drop… dessus»


Marc.

Hors ligne

Pied de page des forums