连接超时=0的优缺点是什么?
Connection Lifetime=0 有什么用?
例如
(Database=TestDB;
port=3306;
Uid=usernameID;
Pwd=myPassword;
Server=192.168.10.1;
Pooling=false;
Connection Lifetime=0;
Connection Timeout=0)
连接池有什么用?
连接超时=0的优缺点是什么?
Connection Lifetime=0 有什么用?
例如
(Database=TestDB;
port=3306;
Uid=usernameID;
Pwd=myPassword;
Server=192.168.10.1;
Pooling=false;
Connection Lifetime=0;
Connection Timeout=0)
连接池有什么用?
超时是您在放弃之前等待请求响应的时间。TimeOut=0 意味着您将一直等待连接永远发生。很好,我想如果你连接到一个非常慢的服务器,如果需要 12 个小时来响应是正常的:-)。一般是坏事。您想对请求设置某种合理的超时时间,这样您就可以意识到您的目标已经失败并继续您的生活。
Connection Lifetime = 连接在被终止和重新创建之前的生存时间。生命周期为 0 意味着永远不会杀死和重新创建。通常不是一件坏事,因为杀死和重新创建连接很慢。通过各种错误,您的连接可能会陷入不稳定状态(例如在处理奇怪的 3 路事务时)。但 99% 的情况下,最好将连接生命周期保持为无限。
连接池是一种处理创建连接非常慢的事实的方法。因此,与其为每个请求建立一个新连接,不如使用一个包含 10 个预制连接的池。当你需要一个时,你借一个,使用它,然后返回。你可以调整池的大小来改变你的应用程序的行为方式。更大的池 = 更多的连接 = 更多的线程一次做一些事情,但这也可能压倒你正在做的任何事情。
总而言之:
ConnectionTimeout=0不好,将其设置为合理的值,例如 30 秒。
ConnectionLifetime=0没问题
ConnectionPooling=disabled不好,您可能会想要使用它。
我知道这是一个旧线程,但我认为指出一个您可能想要禁用连接池或使用连接生命周期的实例很重要。
在某些环境中(尤其是在使用 Oracle 时,或者至少根据我的经验),Web 应用程序的设计使其使用用户的凭据而不是位于服务器配置文件中的固定连接字符串连接到数据库。在这种情况下,启用连接池将导致服务器为每个访问网站的用户创建一个连接池(请参阅池碎片)。根据情况,这可能是好是坏。
但是,当数据库服务器被配置为终止超过最大空闲时间的数据库连接时,连接池会成为一个问题,因为数据库服务器可能会终止可能仍驻留在连接池中的连接。在这种情况下,连接生命周期可能会派上用场来丢弃这些连接,因为它们已经被服务器关闭了。