gpt4 book ai didi

database - 数据库连接的良好实践

转载 作者:搜寻专家 更新时间:2023-10-30 21:42:03 26 4
gpt4 key购买 nike

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

在某些情况下,我的应用程序需要在一秒钟内写入多个条目,而在其他情况下,它必须等待几分钟。

所以总是打开和关闭连接,或者保持打开几个小时是没有意义的。

So i thought about creating a timer(interval = 1000), and the timer will decrease an integer from 10 to 0 on every ticks. when the int is 0 connection will be closed.

every method that interacts with the db will run another method which will set the int to 10 and check whether the connection is open , if not it will open the connection .

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

最佳答案

  1. DB 具有不同的“权重”连接。例如,与 Oracle OCI 相比,MySQL API 允许快速打开连接。因此,使用 MySQL,您可以打开一个连接,做任何您需要的事情,然后关闭连接。开放/关闭时间将不明显。
  2. 数据库有不同的连接超时。例如,当 MySQL 连接处于非事件状态的时间超过 wait_timeout/interactive_timeout 时,MySQL 服务器将自动关闭连接。只要您需要,Oracle 就会让您的连接保持打开状态。因此,应用程序必须能够处理该问题。
  3. 问题是关于资源的。如果将有 10K 个客户端,所有客户端都保持连接打开,那么这可能会使服务器因空闲但分配的资源而过载。
  4. 问题是关于应用程序的复杂性。如果它必须保持许多数据集处于事件状态,维护事件事务等。那么重新打开连接将非常困难。
  5. 还有一些数据访问组件,比如AnyDAC , 允许在连接被 DBMS 关闭或丢失时自动恢复连接 ( more )。

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

  • 对于 MySQL、1-2 个客户端、简单的插入和多分钟的不活动延迟,我会在需要之前打开连接,并在工作完成后关闭它;
  • 对于 Oracle、1K 客户端等,我将使用您描述的算法。

关于database - 数据库连接的良好实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9171026/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com