Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Java 1.6 und Oracle JDBC 14 setQueryTimeout funktionieren nicht

Sehen Sie hier, wie das Abfrage-Timeout im Oracle JDBC-Treiber funktioniert:https://forums. oracle.com/forums/thread.jspa?threadID=550257

Lange Rede kurzer Sinn:

  1. Es ist ein vollständiger Roundtrip zur Datenbank erforderlich, um die SQL-Ausführung abzubrechen, wenn das Zeitlimit abgelaufen ist. Die Datenbank wird sich darum kümmern, die Stornierungsanfrage zu verarbeiten, wenn sie Lust dazu hat.
  2. Der Treiber-Timeout-Mechanismus ist kein hochpräziser Mechanismus. Da das eigentliche Abbrechen der Ausführung eine Kommunikation mit der Datenbank über das Netzwerk erfordert, macht es keinen Sinn, den Treiber superpräzise zu machen. Selbst wenn der Treiber genau wäre, würden die Netzwerkverzögerungen und die Zeit, die die Datenbank benötigt, um auf die Abbruchanforderung zu antworten, die Genauigkeit des Treibers zunichte machen. Das Timeout ist also die MINDESTZEIT, die der Treiber dem SQL zur Ausführung gibt, bevor er einen Abbruch an den Server sendet.