2014-01-05 167 views
1

我正在制作一个java程序,它将在嵌入式设备上运行。 它的目的是在位于云中的数据库中存储一些值(比方说温度)。持久数据库连接

  • 方案1:数据获取存储每一个可能的周期(连接店内店内店内... -disconnect)
  • 方案2:数据获取存储每5分钟(连接店内等待-store-稍候... -disconnect)
  • 方案3:数据都存储每小时

是更好地保持与数据库的持续连接或在需要时只连接?为什么?

如果部署100个这样的设备(一个不能有足够的温度数据)会发生什么情况?

回答

1

除非有特殊情况,否则几乎总是只在需要时连接。有几个优点:

  • 资源保持尽可能短的时间,从而最大限度地提高其可用性。
  • 连接的生命周期范围被控制在代码中的一个点上,从而最大限度地减少资源泄漏的可能性。
  • 数据经常写入,从而最大限度地减少由于崩溃导致的数据丢失。
  • 重试逻辑是简单,因为连接状态被定位于一个单一的点在代码

一般而言:打开连接尽可能晚,作为简略尽快

是可能的,并且靠近

(许多数据库系统实现连接池,这使得这个过程非常高效)

Why always close Database connection?

+0

除了米奇@的回答,如果你坚持连接,然后它下降,添加所有的逻辑来恢复和重试是一个庞大的PIA。 –

+0

谢谢你的回答! 虽然有一点不恒定的连接和断开也占用资源?特别是在需要以每秒(甚至更高频率)为基础记录温度的情况下? – FoiaZoig

+0

为特定的RDBMS和运行时环境查找“连接池”。 –