TurboDB Engine Dokumentation
Tabellensperren
Siehe auch
Previous  Top  Next


TurboDB Engine arbeitet mit zwei verschiedenen Arten von Tabellensperren:

Eine Schreibsperre hält andere Anwendungen vom Schreiben in die Tabelle ab. Schreibsperren garantieren eine konsistente Datenbanktabelle während einer Abfolge von Leseoperationen, z.B. beim Erstellen eines Index. Es können mehrere Anwendungen glcihzeitig eine Schreibsperre für eine Tabelle setzen.

Eine Totalsperre verhindert jeden Zugriff einer anderen Anwendung auf die Tabelle. Totalsperren werden für verschiedene Schreiboperationen benötigt, z.B. das Ändern der Tabellenstruktur. Nur jeweils eine Anwendung kann eine Totalsperre für eine Tabelle definieren.

Eine TurboDB Tabelle kann auch exklusiv geöffnet werden. In diesem Modus wird auch die zugrundeliegende Datenbankdatei exklusiv geöffnet, was jeder anderen Anwendung unmöglich macht auf die Datei zuzugreifen. Eine Tabelle exklusiv zu öffnen ist einer Totalsperre ähnlich, mit einigen wesentlichen Unterschieden:
·Totalsperren werden von TurboDB verwaltet, der exklusive Modus dagegen vom Betriebssystem.  
·Totalsperren können auf eine bereits geöffnete Tabelle angewendet werden. Der exklusive Modus kann nur vor dem Öffnen der Tabelle gesetzt werden.  

Lock Files
Da TurboDB eine dateibasierte Datenbank Engine ist, werden Tabellensperren über eigene Verwaltungsdateien verwaltet. Diese Lock Dateien haben denselben Namen wie die entsprechende Datenbanktabelle, aber mit der Dateierweiterung "net". Die Lock Datei beinhaltet eine Liste aller Anwendungen, die auf die Datenbanktabelle zugreifen und verwaltet die unterschiedlichen Sperren auf diese Tabelle.

Wenn eine Anwendung in eine Datenbanktabelle schreiben will, muss sie erst in der Lock Datei nachsehen, ob es erlaubt ist. Falls ja, registriert sich die Anwendung in der Lock Datei als schreibend, führt die Aktion aus und meldet sich wieder ab. Die Lock Datei wird von der ersten Anwendung erzeugt, die auf die Tabelle zugreift und wieder gelöscht, wenn die letzte Anwendung den Zugriff beendet. Daher verfügt eine Tabelle über keine Lock Datei, solange sie nicht geöffnet wird.

Bemerkung: Falls eine Anwendung abstürzt oder beendet wird, während eine Sperre auf die Tabelle oder einen Datensatz eingerichtet ist, kann die Lock Datei nicht gelöscht werden und die Sperre bleibt bestehen. Das kann gerade beim Debuggen einer TurboDB Anwendung desöfteren passieren, da ein Reset während eine Sperre eingerichtet ist genau diesen Effekt hat.
Falls Sie die Lock Datei einer unbenutzten Tabelle sehen, können Sie sie einfach löschen und damit alle Sperren aufheben. Das sollten Sie auch tun, wenn Sie die Fehlermeldung erhalten, dass eine Tabelle von einem anderen Anwender benutzt wird, Sie aber sicher sind, dass es keinen andern Benutzer gibt.