DB连接的良好实践

时间:2012-02-07 04:30:13

标签: database delphi

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

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

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

  

所以我考虑创建一个计时器(interval = 1000)和计时器   将在每个刻度上将整数从10减少到0。当int是   0连接将被关闭。

     

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

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

2 个答案:

答案 0 :(得分:8)

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

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

答案 1 :(得分:0)

我认为,如果您的应用程序用户活动并不意味着重度连接/断开连接操作,则无需增加复杂性。