Table lock

cs_Pat35 Messages postés 59 Date d'inscription mercredi 3 septembre 2003 Statut Membre Dernière intervention 5 décembre 2007 - 5 déc. 2007 à 14:18
dominique.stock Messages postés 436 Date d'inscription vendredi 7 novembre 2003 Statut Membre Dernière intervention 8 octobre 2008 - 6 déc. 2007 à 16:50
Bonjour,

J'ai un problème de lock sur une table.

Mon architecture est la suivante :
 - Une table de données avec des triggers qui enregistrent les PK des lignes modifiées dans une table de journalisation
 - Une table de journalisation avec les PK de la table source, un flag qui indique si la ligne est en cours de copie (tout les champs sont dans la PK de cette table)
 - Les triggers sur la table source ont dans les critéres "flag = 0" pour les écritures dans la table de journalisation (ont supprime
l'ancienne ligne avant d'en ajouter une)
 - Une table de consolidation qui récupère els données de plusieurs sources.

 - Ma procédure de copie met tous les flag à 1 dans la table journal, puis copie les données vers la destination en s'appuyant sur une vue qui joint la table source et celle de journalisation, et en ajoutant le critère "flag = 1"

Mon problème en lui même est le suivant :
Je suis obligé de lancer la copie tous les 1/4 heures, et elle prend entre 30s et 5 minutes.
La table source doit toujours être accessible (ajout , modification, suppression).
Mais dans le meilleur des cas, en mettant l'isolation level a "REPEATABLE READ" dans la procédure, je me prend des locks au niveau row sur la table de journal si je fait un update ou un delete sur des données qui sont en cours de copie, ce qui bloque la mise à jour.

Merci d'avance pour les idées que vous pourrez me donner.

1 réponse

dominique.stock Messages postés 436 Date d'inscription vendredi 7 novembre 2003 Statut Membre Dernière intervention 8 octobre 2008 7
6 déc. 2007 à 16:50
Bonjour,
une idée comme ça:
Pour ne pas bloquer la table, 
   - faire un select into copie_table from table  .... et faire la journalisation à partir de copie_table copie-table ....

Dom
0
Rejoignez-nous