2017-11-24 5 views
2

Ich verwende Spark, um eine Rest-API zu erstellen.Wann sollten wir die Datenbankverbindung schließen

auch verwende ich ormLite + mysql Datenbank für persistente Datenbank.

jetzt ist die Frage, wann sollte ich die Verbindung zur Datenbank schließen?

oder sollte ich die Verbindung nach jeder Anfrage schließen?

Dies ist, wie ich in die Datenbank bin Anschluss:

JdbcConnectionSource connectionSource = JdbcConnectionSource(databaseUrl); 

connectionSource.setUsername("myUsername"); 
connectionSource.setPassword("myPassword"); 
+0

Nach jeder Anfrage zu bestrafen ist. Nachdem du fertig bist, ist ein besserer Plan. – tadman

+0

Ich denke, es ist doppelte Frage. Antworten finden Sie unter: https://stackoverflow.com/questions/11356937/good-practice-to-open-close-connections-in-a-asp-net-application, https://stackoverflow.com/questions/4439409/open-close-sqlconnection-oder-keep-open, https://stackoverflow.com/questions/4111594/why-always-close-database-connection –

+0

Dies ist keine asp.net-Anwendung @ImranAliKhan. – Gray

Antwort

0

Ok so tatsächlich basierend auf Gray's Kommentar dies ist, wie Sie es mit Funken tun:

JdbcPooledConnectionSource connectionSource = JdbcPooledConnectionSource(databasePath, username, password); 

Was ich tue JdbcPooledConnectionSource statt JdbcConnectionSource verwendet, so brauchen wir keine neue schaffen Verbindung für jedes Request oder eine einzelne Verbindung für alle Requests.

Aber das ist nicht alles, müssen wir einige zusätzliche Dinge für eine bessere Leistung:

connectionSource.setMaxConnectionsFree(10) 
connectionSource.setMaxConnectionAgeMillis(20000) 
connectionSource.setCheckConnectionsEveryMillis(5000) 

Auf diese Weise müssen Sie durch Ihre selbst keine Verbindungen schließen.

BTW, wenn Sie denken, dass diese Parameter ändern müssen, lassen Sie es mich wissen;)

4

Datenbankverbindungen sind teuer wertvoll zu öffnen und so.

Ich würde vorschlagen, dass Sie untersuchen, ob Sie einen Verbindungspool verwenden können, der öffnende und schließende Verbindungen im Hintergrund verwaltet.

Ich habe die connection pool developed for Tomcat mit einigem Erfolg verwendet. Es ist möglich, es eigenständig zu verwenden, und das ist, was ich in einigen Sparkjava-Anwendungen mache.

Die Verbindung wird an den Pool zurückgegeben, wenn Sie close() aufrufen. Das bedeutet, dass Sie die Verbindung nach jedem Anruf schließen. Die Verbindung kann wiederverwendet werden, wenn Sie den Pool nach einer Verbindung fragen. Es sei denn, es ist eine alte Verbindung, die der Pool tötet. Dies sind Details, die Sie als Anwendungsentwickler nicht interessieren müssen. Aus Ihrer Sicht erhalten Sie eine Verbindung, wenn Sie sie brauchen.

+1

+1. Hier finden Sie die Dokumentation zur Verwendung von ORMLite mit einer gepoolten Verbindungsquelle: http://ormlite.com/docs/pooled-cs – Gray

Verwandte Themen