我将 mongodb 用于我们的 Application 。我在db.setProfilingLevel(1,25)
mongo shell 上运行以识别来自system.profile
collection 的慢查询。
我观察到读取操作很快,但更新操作很慢
这是我的 mongostat 的示例
insert/s query/s update/s delete/s getmore/s command/s flushes/s mapped vsize res faults/s locked % idx miss % q t|r|w conn time
0 950 469 0 0 471 0 10396 12295 3207 27 34.9 0 0|0|0 152 07:18:49
0 838 418 0 0 422 0 10396 12295 3209 21 34.6 0 0|0|0 152 07:18:50
0 1005 502 0 0 504 0 10396 12295 3211 21 35.5 0 0|0|0 152 07:18:51
0 837 410 0 0 418 0 10396 12295 3212 20 35.7 0 0|0|0 152 07:18:52
0 754 377 0 0 379 0 10396 12295 3214 19 36.7 0 0|0|0 152 07:18:53
0 841 420 0 0 422 0 10396 12295 3216 24 35.9 0 0|0|0 152 07:18:54
0 877 438 0 0 442 0 10396 12295 3217 23 37.2 0 0|0|0 152 07:18:55
0 799 393 0 0 395 0 10396 12295 3219 21 37 0 0|0|0 152 07:18:56
0 947 471 0 0 479 0 10396 12295 3221 26 39 0 0|0|0 152 07:18:57
0 855 427 0 0 429 0 10396 12295 3222 24 38.4 0 0|0|0 152 07:18:58
0 1007 504 0 0 506 0 10396 12295 3224 31 36 0 0|0|0 152 07:18:59
0 841 413 0 0 417 0 10396 12295 3226 23 37.2 0 0|0|0 152 07:19:00
统计数据来自开发环境,不能假设真的来自生产环境。
根据架构,我无法减少该集合的索引大小,但我看到 usePowerOf2Sizes 在这种情况下可以帮助我改善 mongodb 中的写入/更新响应时间。
我听说过很多 usePowerOf2Sizes ,它说
由于 usePowerOf2Sizes 可以减少碎片。所有数据都将设置在 mmemory 中,性能会很棒。使用此选项,MongoDB 将能够更有效地重用空间。usePowerOf2Sizes 对于您将插入和删除大量文档的集合很有用,以确保 MongoDB 将有效地使用磁盘空间。
我想知道使用选项 usePowerOf2Sizes 是否会有任何负面影响?我的 mongodb 中有 17 个集合,并且只想将 usePowerOf2Sizes 用于一个集合。
请让我知道,提前谢谢。