2014-01-05 215 views
1

我正在製作一個java程序,它將在嵌入式設備上運行。 它的目的是在位於雲中的數據庫中存儲一些值(比方說溫度)。持久數據庫連接

  • 方案1:數據獲取存儲每一個可能的週期(連接店內店內店內... -disconnect)
  • 方案2:數據獲取存儲每5分鐘(連接店內等待-store-稍候... -disconnect)
  • 方案3:數據都存儲每小時

是更好地保持與數據庫的持續連接或在需要時只連接?爲什麼?

如果部署100個這樣的設備(一個不能有足夠的溫度數據)會發生什麼情況?

回答

1

除非有特殊情況,否則幾乎總是只在需要時連接。有幾個優點:

  • 資源保持儘可能短的時間,從而最大限度地提高其可用性。
  • 連接的生命週期範圍被控制在代碼中的一個點上,從而最大限度地減少資源泄漏的可能性。
  • 數據經常寫入,從而最大限度地減少由於崩潰導致的數據丟失。
  • 重試邏輯是簡單,因爲連接狀態被定位於一個單一的點在代碼

一般而言:打開連接儘可能晚,作爲簡略儘快

是可能的,並且靠近

(許多數據庫系統實現連接池,這使得這個過程非常高效)

Why always close Database connection?

+0

除了米奇@的回答,如果你堅持連接,然後它下降,添加所有的邏輯來恢復和重試是一個龐大的PIA。 –

+0

謝謝你的回答! 雖然有一點不恆定的連接和斷開也佔用資源?特別是在需要以每秒(甚至更高頻率)爲基礎記錄溫度的情況下? – FoiaZoig

+0

爲特定的RDBMS和運行時環境查找「連接池」。 –