Lock table mit Delete and insert?

wachteldonk

Erfahrenes Mitglied
Hallo,

ich möchte folgendes tun

1. Einen Alteintrag löschen
2. Neueintrag schreiben

Um zu berhidnern , das eventuell mehrere Programm gleichzeitig laufen, dei das machen und dann vielleicht erst beide löschen und dann beide schreiben was einen Doppeleintrag zur Folge hätte, würde ich gerne vorgher die tabelle "locken"

Reicht es dazu aus die entsprechende tabelle vor dem delete und insert Prozess zu locken und dannach zu entlocken?

mit

Code:
LOCK TABLES xyz WRITE
-> Hier dann löschen udn neu speichern
UNLOCK TABLES

zu verarbeiten? Wird durch das Sperren von Write auch das Löschen verzögert?
 
Hallo,

ich möchte folgendes tun

1. Einen Alteintrag löschen
2. Neueintrag schreiben

Um zu berhidnern , das eventuell mehrere Programm gleichzeitig laufen, dei das machen und dann vielleicht erst beide löschen und dann beide schreiben was einen Doppeleintrag zur Folge hätte, würde ich gerne vorgher die tabelle "locken"

Reicht es dazu aus die entsprechende tabelle vor dem delete und insert Prozess zu locken und dannach zu entlocken?

mit

Code:
LOCK TABLES xyz WRITE
-> Hier dann löschen udn neu speichern
UNLOCK TABLES

zu verarbeiten? Wird durch das Sperren von Write auch das Löschen verzögert?


Hallo,


Kommt auf deine DB an. Das Locken von Tabellen gilt aber als äussert unfein.
Warum machst du nicht einfach eine Update ?


Gruss
 
Hmm? Warum? Für was gibts das Feature dann?

Hallo,

Es *kann" Situation geben, wo dies notwendig ist, aber nur weil es ein Feature gibt, heisst es nicht, das es"immer" eingesetzt werden muss. Stell dir vor, du hast eine hoch-skalierbare Applikation mit Dutzenden Inserts/Sec und du lockst jedesmal die Tabelle. Nicht gut.

Sollte man bei einem Update nicht auch locken?

Ja/Nein/Vielleicht. Es hängt von deiner Applikation ab. Wenn schon, dann aber ein Row Locking, z.b ein SELECT FOR UPDATE / SELECT FOR UPDATE NOWAIT in Oracle, wenn du z..b Stateless bist.


Gruss
 
Gerade, wenn ich eine Applikation mit dutzenden Queries habe, die vor allem von mehreren Leuten gleichzeitig verwendet wird, sollte ich Locking machen. Zugegeben, vielleicht nicht die komplette Tabelle, aber Row/Column-Locking definitiv. Bei manchen DB's gehts aber nicht anders. OK, diese werden dann wohl auch nicht im Enterprise-Umfeld eingesetzt ;-)

Gut, ich gebe mich geschlagen...
 
Gerade, wenn ich eine Applikation mit dutzenden Queries habe, die vor allem von mehreren Leuten gleichzeitig verwendet wird, sollte ich Locking machen. Zugegeben, vielleicht nicht die komplette Tabelle, aber Row/Column-Locking definitiv. Bei manchen DB's gehts aber nicht anders. OK, diese werden dann wohl auch nicht im Enterprise-Umfeld eingesetzt ;-)

Gut, ich gebe mich geschlagen...

Hallo,

Das was du ansprichst, ist unter dem Begriff Optimistic / Pessimistic Locking bekannt, der OP hat aber von Table Locking gesprochen.


Gruss
 

Neue Beiträge

Zurück