Hallo conan2011,
ich kenne das Sybase ianywhere nicht. Jedoch ist jede (vernünftige) Datenbank dafür ausgelegt mehr als eine Abfrage gleichzeitig zu bedienen.
Gehen wir wieder von folgender Situation aus:
Meine Datenbank ist mit einer umfangreichen Abfrage
beschäftigt, und ich möchte herausfinden, ob sie noch
arbeitet, oder bereits ein Session Timeout geschah.
Dazu starte ich eine weitere (möglichst) kleine Abfrage.
Wenn diese ausgeführt wird, weiß ich, dass die Datenbank noch
läuft.
Deshalb wird dir dies nur dann eine Erkenntnis bringen, wenn die Datenbank abgestürzt ist. Wenn nur die erste Session wegen Timeout heraus geflogen ist, wird Dir die Anfrage sofort beantwortet.
Meine Fragen:
Wenn die Datenbank noch mit der großen Abfrage beschäftigt
ist, wird sie die kleine überhaupt zwischendurch bearbeiten?
Oder kommt die hinten dran?
Gute Datenbanken habe zwischen Ihren einzelnen Programmteilen, die die Datenbankabfragen beantworten, die gleichen Mechanismen laufen wie z.B. das Betriebssystem Unix. Danach bekommt jeder von Zeit zur Zeit sein Häppchen Resourcen zugeteilt. Natürlich kann dabei eine Abfrage durch eine andere behindert werden, z.B. wenn Abfrage 1 ein Update und Abfrage 2 ein Select auf die gleiche Tabelle macht (für die Experten: je nach Lockingmodell des DBMS natürlich unterschiedlich schnell)
Gibt es darüberhinaus auch eine Möglichkeit herauszufinden, ob
die Datenbank noch mit der großen Abfrage beschäftigt ist?
Das ist DB-System- und Rechtespezifisch. Dazu sollte man sich in die Systemliteratur der Datenbank vertiefen. Manchmal kann sich relativ schnell einen Serverüberblick beschaffen (bei MySQL mit show variables, ianywhere ??)
MfG Georg V.