-
Problème de deadlock
Bonjour,
J'ai un problème de deadlock sur sqlserver 2005 mais après lecture de différents posts sur Internet je ne trouve pas directement de lien avec mon problème.
Pour résumer, j'utilise un ETL pour alimenter une base SQL Server. En gros, pour alimenter une table de dimension, ma requête est de type :
select distinct Col1 from t1 except select distinct Col1 from d1.
Si une ligne est trouvée, cela insère cette ligne. J'ai eu un problème de deadlock sur cette requête il y a un an depuis tout fonctionnait correctement. Le problème vient pourtant de se reproduire.
Je ne vois pas en quoi l'insertion est bloquée. Je précise que la table de dimension n'est bien sur pas modifiée par un autre traitement.
J'ai également d'autres tables de dimension qui sont alimentées de la même façon et celles la n'ont jamais eu de deadlock...
Quelqu'un aurait une idée ? Merci d'avance.
-
Il arrive que des deadlocks se produisent sur une même table, justement lorsque par exemple un processus de lecture fait une escalade de verrou sur un index et l'autre en écriture tente de faire la même chose.
Dans le cadre d'une alimentation par ETL, il est d'usage d'éviter de charger pendant les phases de lecture.
Si tel est votre cas, alors, vous devriez envisager d'utiliser une lecture par cliché (READ COMMITTED SNAPSHOT).
A +