在研究如何检查MongoDB的大小时,我找到了this comment:
请注意,dbstats会在数据库运行时阻止它,因此它不适合生产。 https://jira.mongodb.org/browse/SERVER-5714
查看链接的错误报告(仍处于打开状态),引用Mongo docs as saying:
命令需要一些时间才能运行,通常需要几秒钟,除非.ns文件非常大(通过使用--nssize)。运行其他操作时可能会被阻止。
但是,当我检查当前的Mongo文档时,我找不到该文本。相反,they say:
运行命令所需的时间取决于数据库的总大小。由于该命令必须触及所有数据文件,因此该命令可能需要几秒钟才能运行。
对于使用WiredTiger存储引擎的MongoDB实例,在不正常关闭后,大小和计数的统计信息可能会被collStats,dbStats,count报告的最多1000个文档关闭。要恢复集合的正确统计信息,请对集合运行validate。
这是否意味着m a
存储引擎通过保持持续统计信息将此更改为非阻止呼叫?
答案 0 :(得分:0)
游戏晚了一点,但是我在寻找答案时发现了这个问题,答案是:是的,直到3.6.12 / 4.0.5 ,它正在获取“共享”锁( “ R”)在执行期间阻止所有写请求。之后,它现在是一个“意图共享”锁(“ r”),它不会阻止写请求。读取请求不受影响。