Wird der sql-verbindungen automatisch geschlossen werden, wenn wir in der Nähe der JVM?
Erstellte ich ein test-Programm erstellt, die 20 threads und dann diese threads eröffnen viele sql-Verbindung. Können sagen, Sie sind der Ausführung dieses Programms aus eclipse und jetzt, wenn Sie in der Nähe von eclipse. Wird diese schließen Sie alle geöffneten sql-verbindungen? Wenn nicht, dann was passiert mit diesen? Wird es zeigen, 100 geöffneten verbindungen auf die Datenbank-Seite? Wenn ja, dann ist das, was in diesem Fall zu tun?
- Ich denke, auf der Datenbank-Seite Sie erhalten eine Zeitüberschreitung. Die meisten Datenbank ein Standard-timeout der Verbindung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verbindungen nicht schließen, wie im Aufruf
java.sql.Connection.close()
. Grundsätzlich ist die JVM, das die Verbindung nicht halten können, das TCP/IP-verbindungen an die Datenbank lebendig. Diese wird sofort heruntergefahren. Daher ist die "Verbindung" wird heruntergefahren werden, wie gut. Die Datenbank kann jedoch nicht sofort reagieren, um diese und halten Sie Ihre Sitzungen am Leben für eine Weile.In Oracle, können Sie töten die sessions in der Datenbank direkt, wenn Sie über ausreichende Berechtigungen.
Ich denke, das Verhalten ist herstellerspezifisch und/oder Konfiguration-spezifisch. Es gibt keine Allgemeine Antwort.
Ich glaube, das hängt von der Datenbank und den jdbc-Treiber, den Sie verwenden. Ich denke, dass in den meisten Fällen wird die verbindungen das Zeitlimit überschritten und wird geschlossen, aber es wird nicht sofort geschehen. So, der bessere Weg ist, um die enge Verbindung ausdrücklich zu. Hier sind die üblichen Techniken:
BTW glaube ich, dass in Ihrem Fall brauchen Sie nicht viele verbindungen zur DB. Versuchen Sie, die Wiederverwendung von allen deinen 100 threads.