|
|
1
6
数据库连接是有限的资源。一些DBS的连接限制非常低,浪费连接是一个主要问题。通过使用许多连接,您可能会阻止其他人使用数据库。 此外,在数据库上抛出大量额外的连接没有任何帮助,除非数据库服务器上有空闲的资源。如果您有8个内核,并且只有一个用于满足查询,那么当然,建立另一个连接可能会有所帮助。更可能的是,您已经使用了所有可用的核心。对于每个DB请求,您也可能访问相同的硬盘驱动器,并添加额外的锁争用。 如果您的数据库有类似于高利用率的东西,那么添加额外的连接将没有帮助。这就像在应用程序中产生额外的线程一样,盲目地希望额外的并发性能够使处理更快。它 可以 在某些特定的情况下,但在其他情况下,它只会减慢您的速度,因为您需要反复敲打硬盘,浪费时间进行任务切换,并引入同步开销。 |
|
|
2
3
这是建立连接、传输数据然后将其拆掉的成本。它会毁掉你的表演。 很难找到证据,但要考虑以下几点… 假设连接需要x微秒。 现在,您需要发出几个请求,并来回获取数据。假设传输时间的差异在一个连接和多个连接之间是可以消除的(只是为了争论)。 现在假设关闭连接需要Y微秒。 打开一个连接将需要X+Y微秒的开销。打开多个需要n*(x+y)。那会耽误你的执行。 |
|
|
3
2
建立DB连接通常很重。很多事情都发生在后台 (DNS解析/TCP连接/握手/身份验证/实际查询) . 我曾经遇到过一个关于一些奇怪的DNS配置的问题,使得每个TCP连接在启动前都需要几秒钟的时间。我的登录过程(由于架构复杂)需要3个不同的数据库连接才能完成。有了这个问题,登录需要花费很长时间。然后我们重构代码,使其只通过一个连接。 |
|
|
4
1
我们从.NET访问Informix并使用多个连接。除非我们在每个连接上启动一个事务,否则它通常在连接池中处理。我知道这是非常具体的品牌,但大多数(?)数据库系统的客户端访问将尽其所能地汇集连接。 顺便说一句,由于跨数据库连接,我们确实在连接计数方面遇到了问题。Informix支持同义词,因此我们同义了常见的违规者,并且服务器端处理了多个连接,从而节省了大量的传输时间、连接创建开销和(我们所处位置的真正症结)许可费。 |
|
|
5
0
我假设这是因为您的请求没有被异步发送,因为您的请求是在服务器上迭代完成的,每次都被阻塞,所以您必须支付每次创建连接的开销,而您只需要执行一次… 在flex中,所有Web服务调用都是自动异步调用的,因此在同一个连接上经常会看到多个连接或排队请求。 异步请求通过更快的请求/响应时间来降低连接成本…因为您不能 容易地 在PHP中实现这一点而不需要一些线程,那么性能上的影响会更大,然后简单地重用相同的连接。 那是我的2美分… |