touch

在本页面

  • touch
    • touch命令将数据从数据存储层加载到内存中。 touch可以加载数据(即文档)索引,也可以加载文档和索引。使用此命令可确保在进行另一项操作之前,一个集合和/或其索引已在内存中。通过将集合或索引加载到内存中,mongod理想情况下将能够更有效地执行后续操作。 touch命令具有以下原型形式:
{ touch: [collection], data: [boolean], index: [boolean] }

默认情况下,dataindex为 false,而touch将不执行任何操作。例如,要为名为records的集合加载数据和索引,您可以在mongo shell 中使用以下命令:

db.runCommand({ touch: "records", data: true, index: true })

touch不会阻止对mongod的读写操作,并且可以在副本集的secondary个成员上运行。

Considerations

Performance Impact

使用touch控制或调整mongod在内存中存储的内容可能会置换其他记录数据在内存中并影响性能。在生产系统中谨慎使用。

复制和辅助

如果在辅助服务器上运行touch,则辅助服务器将进入RECOVERING状态,以防止 Client 端在touch操作期间发送读取操作。 touch完成时,辅助节点将自动返回到SECONDARY状态。有关副本集成员状态的更多信息,请参见state

Storage Engines

在 3.0.0 版中更改。

如果当前存储引擎不支持touch,则touch命令将返回错误。

MMAPv1 存储引擎支持touch

WiredTiger 存储引擎支持touch