我通过其node.js的驱动程序使用MongoDB
我通常在需要执行操作时打开一个连接(通过connect()
方法),并在完成后立即关闭它(通过close()
方法)。在我的程序中,作为自然,我需要对MongoDB执行许多操作,因此我会多次打开和关闭连接。
我想知道这是一个好的做法,还是在执行第一个操作时打开连接会更好,将它存储在变量中并使用已打开的连接进行以下操作,在程序结束时关闭它
非常感谢任何建议。
答案 0 :(得分:8)
最佳做法是打开连接一次,将其存储在变量中并在最后关闭它。 MongoDB明确推荐这个。这就是为什么打开和关闭连接是MongoDB API的一部分而不是为每个查询自动发生的原因。
每个查询的打开和关闭连接都会在性能(CPU +延迟),网络流量,内存管理(创建和删除对象)方面带来巨大的开销,不仅对客户端而且对服务器本身而言,这也影响到其他客户。
关于 connection 的术语:在某些驱动程序(如Java)中,实际创建和存储在变量中的内容不是物理连接,而是MongoClient
实例。它看起来像是从抽象(API)角度看的连接,但它实际上封装了实际的物理连接并隐藏了用户的复杂性。
仅为支持此功能的驱动程序创建MongoClient
实例一次,还可以让您受益于连接池,其中驱动程序为您并行维护活动连接,以便您还需要跨多个线程创建一个MongoClient
实例。