DB连接的良好实践

Vib*_*nRC 1 database delphi

我正在创建Delphi应用程序以连接我的数据库.

在某些情况下,我的应用程序需要在一秒钟内写入多个条目,在其他时候它必须饿死几分钟.

因此,始终打开和关闭连接或保持打开数小时毫无意义.

所以我考虑创建一个计时器(interval = 1000),并且计时器将在每个滴答时将整数从10减少到0.当int为0时,将关闭连接.

与db交互的每个方法都将运行另一个方法,该方法将int设置为10并检查连接是否打开,否则它将打开连接.

这是数据库处理的一个好习惯,还是有任何其他建议.

da-*_*oft 8

  1. DB有不同的"立即"联系.例如,与Oracle OCI相比,MySQL API允许快速打开连接.因此,使用MySQL,您可以打开连接,执行您需要的任何操作,关闭连接.开放/关闭时间将是不明显的.
  2. DB具有不同的连接超时.例如,当MySQL连接处于非活动状态的时间超过wait_timeout/时interactive_timeout,MySQL服务器将自动关闭连接.只要您需要,Oracle就会保持您的连接处于打开状态.因此,应用程序必须能够处理它.
  3. 问题是关于资源.如果将有10K客户端,所有保持连接都是opeb,那么这可能会使服务器空闲,但会分配资源.
  4. 问题是关于应用程序的复杂性.如果必须保持许多数据集处于活动状态,则维护活动事务等.然后重新打开连接将非常困难.
  5. 此外,某些数据访问组件(如AnyDAC)允许自动恢复连接(更多),当它被DBMS关闭或其他方式丢失时.

因此,基于您的DBMS,数据访问组件,应用程序需求,您必须决定要做什么.例如:

  • 使用MySQL,1-2个客户端,简单插入和多分钟非活动滞后,我将在需要之前打开连接,并在工作完成后关闭它;
  • 对于Oracle,1K客户等,我将使用algorythm,就像你描述的那样.