MongoDB 游标、命令与索引全解析
1. 不朽游标(Immortal Cursors)
游标有两个方面:面向客户端的游标和客户端游标所代表的数据库游标。之前我们主要讨论的是客户端游标,现在来看看服务器端的情况。
在服务器端,游标会占用内存和资源。当游标耗尽结果集,或者客户端发送消息让其关闭时,数据库会释放其占用的资源。为了让数据库能将这些资源用于其他操作,我们需要确保游标能及时被释放。
游标关闭的情况主要有以下几种:
- 当游标遍历完所有匹配结果后,会自动清理自身。
- 当客户端的游标超出作用域时,驱动程序会向数据库发送特殊消息,通知数据库关闭该游标。
- 即使客户端没有遍历完所有结果,且游标仍在作用域内,若 10 分钟内没有活动,数据库游标会自动关闭。这样可以避免因客户端崩溃或出现故障而导致大量游标一直打开。
不过,有时我们可能需要游标长时间保持打开状态。很多驱动程序提供了 immortal
函数或类似机制,用于告诉数据库不要让游标超时。但如果关闭了游标超时功能,必须遍历完所有结果或手动关闭游标,否则它会一直占用数据库资源,直到服务器重启。
2. 数据库命令(Database Commands)
数据库命令是一种特殊的查询类型,涵盖了除创建、更新、删除和查找文档之外的所有操作,包括服务器管理任务(如关闭服务器、克隆数据库)、统计集合中的文档数量以及执行聚合操作等。
命令在数据操作、管理和监控方面非常有用。例如,删除集合可以使用 drop
数据库命令: