7

running-mongodb-queries-concurrently-with-go文章中说 mgo.DialWithInfo :创建一个会话,该会话维护与 MongoDB 的套接字连接池,但是当我在函数DialWithInfo的文档中查找时,我没有找到任何东西谈论池连接,只有我在Dial Function Dial Function 中找到了一些内容:对于给定的集群,此方法通常只调用一次。然后在获得的会话上使用 New 或 Copy 方法建立到同一集群的更多会话。这将使它们共享底层集群,并适当地管理连接池。

  • 有人能告诉我 MGO 上的池连接是如何工作的吗?是否可以设置这个池?
  • DialWithInfo 创建池连接是真的还是只是创建此池的 Dial 函数?

提前致谢

4

1 回答 1

10

查看Dial 函数调用的源代码,您可以看到该Dial函数调用了DialWithTimeout调用该函数的DialWithInfo函数。因此,要回答有关函数之间差异的问题,它似乎Dial是 的便利包装器DialWithTimeout,而后者又是 的便利包装器DialWithInfo,因此它们会产生相同的连接池。

至于如何管理该连接池,您的问题是正确的。

然后在获得的会话上使用 New 或 Copy 方法建立到同一集群的更多会话。这将使它们共享底层集群,并适当地管理连接池。

因此,一次调用DialorDialWithTimeoutDialWithInfo将建立连接池,如果您需要多个会话,请使用session.New()orsession.Copy()方法从您选择使用的任何 Dial 函数返回的会话中获取它。

于 2014-04-22T16:54:43.087 回答