我有一个数据大小约为 100GB 的 MongoDB 数据库。我用 300 个线程和总共 10,000 个“读取”查询运行了一个测试。我注意到 MMS lock% 显示了 0.6 ~ 1% 的写入锁定。我的问题是,查询纯粹是“读”的,为什么显示写锁定?
我有一个数据大小约为 100GB 的 MongoDB 数据库。我用 300 个线程和总共 10,000 个“读取”查询运行了一个测试。我注意到 MMS lock% 显示了 0.6 ~ 1% 的写入锁定。我的问题是,查询纯粹是“读”的,为什么显示写锁定?
首先,要更正评论:分析器不会写入本地数据库,它会写入您在
system.profile
集合中分析的任何数据库。因此,如果您正在从数据库中读取数据foo
并打开分析功能,则该集合将为foo.system.profile
. 您可以打开本地数据库的分析,因此当然可以让分析器在那里写入,但这不是任何类型的默认设置。然后,如果您启用了探查器,无论它在哪里写入,所有写入都需要写锁,无论它们是针对
system.profile
集合还是其他任何地方。仅仅因为它在内部获取输入并不排除该system.profile
集合遵循与数据库上任何其他集合相同的规则。如果您关闭探查器,我希望锁会消失。统计数据中的全局锁定百分比可能仍然偶尔会出现波动,但这基本上只是背景噪音。