Hallo zusammen,
ich habe mehrere .Net-Anwendungen die via gespeicherter Prozeduren in eine Datenbank (SQL-Server 2000) schreiben.
Dabei scheibt eine der Anwendungen parallel (mehrere Threads). Diese Prozeduren sind so ausgelegt, dass sie einen Insert oder ein Update auf eine Zeile in einer Tabelle durchführen können. Dazu wird innerhalb der Prozedur eine Prüfung (SELECT COUNT(1) FROM ...) durchgeführt.
Wird der Datendurchsatz (Schreiben und Updaten) erhöht, so treten diese Deadlocks (ich nehme an es handelt sich hierbei um Convertierungs-Deadlocks) gehäuft auf.
Die Abfrage, ob dieser DS bereits existiert, habe ich um den Zusatz "READUNCOMMITED" erweitert. Mit dem Ergebnis, dass Deadlocks nicht mehr aufgetreten sind. Als ich ein SELECT * FROM <table> im Enterprise Manager ausgeführt habe, traten sehr viele Deadlocks auf (während der Schreibvorgänge). Die Prozeduren sind in Transaktionen eingeschlossen.
Vielen Dank für all eure Ideen
Gruß Sylvia
ich habe mehrere .Net-Anwendungen die via gespeicherter Prozeduren in eine Datenbank (SQL-Server 2000) schreiben.
Dabei scheibt eine der Anwendungen parallel (mehrere Threads). Diese Prozeduren sind so ausgelegt, dass sie einen Insert oder ein Update auf eine Zeile in einer Tabelle durchführen können. Dazu wird innerhalb der Prozedur eine Prüfung (SELECT COUNT(1) FROM ...) durchgeführt.
Wird der Datendurchsatz (Schreiben und Updaten) erhöht, so treten diese Deadlocks (ich nehme an es handelt sich hierbei um Convertierungs-Deadlocks) gehäuft auf.
Die Abfrage, ob dieser DS bereits existiert, habe ich um den Zusatz "READUNCOMMITED" erweitert. Mit dem Ergebnis, dass Deadlocks nicht mehr aufgetreten sind. Als ich ein SELECT * FROM <table> im Enterprise Manager ausgeführt habe, traten sehr viele Deadlocks auf (während der Schreibvorgänge). Die Prozeduren sind in Transaktionen eingeschlossen.
Vielen Dank für all eure Ideen
Gruß Sylvia
Comment