我正在使用 Mongo 3.0 WiredTiger 设置测试我的数据库。使用wiredTIger 恢复我的数据库后,我运行了db.serverStatus。我在控制台输出中发现了以下内容。
"bytes currently in the cache" : 6009288998 (5.5 GB),
"maximum bytes configured" : 7516192768 (7 GB),
"bytes read into cache" : 18380155206 (17 GB),
"bytes written from cache" : 17020204785 (16 GB),
你能告诉他们这个输出是什么意思吗?
我的服务器中有 16 GB RAM。数据库配置如下:
MongoD instance 1
Databases 4
Original Data size with 2.6.4 : DB1- 25 GB, DB2- 19 GB, DB3- 5 GB, DB4- 3 GB
With wiredTiger : DB1- 3 GB, DB2- 1.9 GB, DB3- 0.9 GB, DB4- 0.5 GB
我一直在寻找更新性能,但似乎性能似乎下降了,当使用 23000 更新命令在 DB3 上运行批量更新时,我在 Mongostat 中看到了这一点
insert query update delete getmore command % dirty % used flushes vsize res qr|qw ar|aw netIn netOut conn time
*0 *0 *0 *0 0 2|0 0.6 80.0 0 7.7G 7.4G 0|0 1|1 137b 15k 6 11:21:27
*0 *0 *0 *0 0 3|0 0.9 79.9 0 7.7G 7.4G 0|0 1|1 195b 15k 6 11:21:28
*0 *0 *0 *0 0 1|0 1.2 80.0 0 7.7G 7.4G 0|0 1|1 79b 15k 6 11:21:29
*0 *0 *0 *0 0 1|0 1.4 80.0 0 7.7G 7.4G 0|0 1|1 79b 15k 6 11:21:30
*0 *0 *0 *0 0 2|0 1.7 79.9 0 7.7G 7.4G 0|0 1|1 133b 15k 6 11:21:31
*0 *0 *0 *0 0 1|0 2.0 80.0 0 7.7G 7.4G 0|0 1|1 79b 15k 6 11:21:32
*0 *0 *0 *0 0 3|0 2.2 80.0 0 7.7G 7.4G 0|0 1|1 195b 15k 6 11:21:33
*0 *0 *0 *0 0 1|0 2.4 80.0 0 7.7G 7.4G 0|0 1|1 79b 15k 6 11:21:34
*0 *0 *0 *0 0 1|0 2.6 80.0 0 7.7G 7.4G 0|0 1|1 79b 15k 6 11:21:35
*0 *0 *0 *0 0 2|0 2.9 80.0 0 7.7G 7.4G 0|0 1|1 133b 15k 6 11:21:36
insert query update delete getmore command % dirty % used flushes vsize res qr|qw ar|aw netIn netOut conn time
*0 *0 *0 *0 0 1|0 3.0 80.0 0 7.7G 7.4G 0|0 1|1 79b 15k 6 11:21:37
*0 *0 *0 *0 0 3|0 3.1 80.0 0 7.7G 7.4G 0|0 1|1 195b 15k 6 11:21:38
*0 *0 *0 *0 0 1|0 3.3 80.0 0 7.7G 7.4G 0|0 1|1 79b 15k 6 11:21:39
*0 *0 *0 *0 0 1|0 3.5 80.0 0 7.7G 7.4G 0|0 1|1 79b 15k 6 11:21:40
*0 *0 *0 *0 0 2|0 3.7 80.0 0 7.7G 7.4G 0|0 1|1 133b 15k 6 11:21:41
如果您看到dirty% 不断增加。同样在完成更新后,我没有改变 Db(没有读写)但我仍然得到 netIn 和 netOut 显示字节。
您能否检查一下行为并进行更多解释,因为 Mongo DB 文档部分没有详细显示任何内容或这些参数。
另外,我不确定索引压缩是否也降低了 RAM 需求。
当前在wiredTiger 缓存中的字节数。
配置了最大大小的缓存(默认为服务器上物理内存的一半)。
自启动以来已读入缓存的累积字节数。
自启动以来已从缓存写入磁盘上文件的累积字节数。
您运行了一个包含 23K 更新操作的命令,因此您看到了您应该预期的结果 - 您可以在 mongostat 输出中看到命令不断运行并且您始终有活动的编写器。
如果您确实想要高吞吐量,您应该使用多个线程并行发送操作,以允许使用机器上的所有内核。
这表明实际上写入正在发生 - 正在写入(脏)的缓存的百分比越来越高。当检查点开始运行时,脏百分比将下降,表示缓存中的数据正在持久化到磁盘(当然,在原始写入时,它也已写入预写日志,即日志)。
是的,索引是前缀压缩的,并且磁盘和 RAM 中的格式相同。