我正在使用mongodb作为我们的应用程序。
我在mongo shell上运行db.setProfilingLevel(1,25)
以识别来自system.profile
集合的慢查询。
我观察到读取操作很快,但更新操作非常慢
这是我的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
统计数据来自开发环境,无法从生产环境中获取。
根据架构,我无法减少该集合的索引大小,但我看到useTowerOf2Sizes可以帮助我改善mongodb中的写入/更新响应时间。
我听过很多usePowerOf2Sizes,其中说
as usePowerOf2Sizes可以减少碎片。 所有数据都将在mmemory中设置,性能将会很好。 有了这个选项,MongoDB将能够更有效地重用空间。 usePowerOf2Sizes对于要插入和删除大量文档的集合非常有用,以确保MongoDB能够有效地利用磁盘空间。
我想知道使用选项usePowerOf2Sizes是否会有任何负面影响?我的mongodb中有17个集合,并且只想将usePowerOf2Sizes用于一个集合。
请提前告知我们。