问题标签 [wiredtiger]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
187 浏览

mongodb - 在集合上创建索引,然后重命名集合

列出的是我们系统中的当前工作流程

  • 创建名为 TMP_xxxx 的集合。
  • 在 TMP_xxx 上创建索引(后台模式)。
  • 写入所有文档后,将集合重命名为 XXX(以实现事务读取一致性)。

重命名集合时,索引是否重新映射到新名称或是否应该触发重新索引操作?

我们经常注意到这个错误

这是否意味着,集合在创建索引之前被重命名?

我们最近切换到WiredTiger存储引擎并开始注意到这个问题。

0 投票
1 回答
658 浏览

mongodb - MongoDB多粒度锁定

MongoDB 使用多粒度锁定 [1],允许操作在全局、数据库或集合级别锁定,并允许各个存储引擎在集合之下(即,在 WiredTiger 中的文档级别)实现自己的并发控制。

此外,我读过 MongoDB 有两种可能的存储引擎:MMAPv1(默认)和 WiredTiger。从 MongoDB 3.0 开始,第一个使用集合级锁定,第二个使用文档级锁定。MongoDB 允许在 GLOBAL、DATABASE 或 COLLECTION 级别锁定操作是什么意思?意思是我可以选择锁粒度?如果是,我该怎么做?这是否与所选存储引擎的锁定粒度(例如 WiredTiger 中的文档级别)形成对比?如何将我的存储引擎从 MMAPv1 更改为 WiredTiger?提前致谢。

0 投票
2 回答
7048 浏览

mongodb - MongoDB (WiredTiger) 返回的计数不正确

这听起来很奇怪,我希望我做错了什么,但我的MongoDB收藏正在我的收藏中退还Count一个。

我有一个包含(我确定)359671 个文档的集合。但是该count()命令返回 359670 个文档。

我正在count()使用 mongo shell 执行命令:

这是不正确的。

它不是在我的收藏中找到每一个文件。

如果我提供以下查询来计数,我会得到正确的结果:

我相信这是 WiredTiger 中的一个错误。据我所知,每个文档都有相同的定义,一个从 0 到 359670 的整数的 _id 字段和一个 BinData 字段。较旧的存储引擎(或 Mongo 2,两者都可能导致问题)没有这个问题。

这是我做错了什么吗?我不想使用{_id: {$exists: true}}查询,因为这需要 100 倍的时间才能完成。

0 投票
1 回答
975 浏览

mongodb - 带有WiredTiger引擎的mongodb 3.0.3的最大数据库大小是多少

WiredTiger 引擎的最大数据库大小是多少?
MongoDB 手册中只有 MMAPv1 的最大数据库大小,如下所示。
http://docs.mongodb.org/manual/reference/limits/

0 投票
1 回答
1207 浏览

mongodb - 在 WiredTiger 中对 MongoDb 文档执行部分更新是否比完整文档更新有任何优势?

我正在使用 Java 驱动程序,尽管这个问题不是特定于语言的,但要对 mongodb 文档进行部分更新,因为使用 MMAPv1 存储引擎可以在适当的位置(在内存中)编辑文档,因此可以提供更好的性能。这确实增加了相当大的开发复杂性,因为我可以一次保存整个文档而不必担心确切更新的细节。更新到 WiredTiger 后,我了解到这个较新的存储引擎不会就地编辑文档(在内存中),而是为每次写入分配新的内存(不清楚这是否意味着文档的完整副本或只是差异)。这是否意味着无论我是进行完整文档写入还是部分文档写入都没有性能差异?

0 投票
1 回答
639 浏览

mongodb - 为内存限制配置 mongodb 3.0

有谁知道如何在 mongodb 3.0 中限制内存。我已经知道在 mongodb 2.x 版本中是不可能的。但是如何在 3.0 (WiredTiger) 中做到这一点。

Mongodb 正在吃掉我系统中的所有缓存。

0 投票
1 回答
4721 浏览

mongodb - mongodb-wiredtiger 内存使用量增长

我们转移到了wiredtiger 并看到内存使用率上升,mongodb 使用了系统上90% 的内存。它似乎在慢慢地皱起。在wiredtiger 之前,当我们在mongo 2.x 上使用mmap 时,内存占用率为8%。

我担心操作系统会杀死该进程。这是正常行为吗?

db.serverStatus() - https://gist.github.com/henryoswald/8ff9cf917e63c2e983dd

0 投票
1 回答
1404 浏览

mongodb - MongoDB 使用的是哪个版本的 WiredTiger?

是否可以找出我在 MongoDB 中使用的 WiredTiger 版本?我尝试使用:-

但我在那里找不到任何版本信息。

我开箱即用地安装了 MongoDB (v3.0.4),所以我试图弄清楚它附带的 WiredTiger 版本,以及我是否可以使用更新版本的 WiredTiger。

0 投票
1 回答
754 浏览

mongodb - 如何让 Mongo 3.0 / WiredTiger 将我的整个数据库加载到 RAM 中?

我有一个大约 5 GB 的静态数据库(甚至永远不会收到写入),而我的服务器 RAM 是 30 GB。我专注于尽快将复杂的聚合返回给用户所以我看不出为什么我不应该将(a)索引和(b)整个数据集完全存储在 RAM 中,以及(c ) 在 Mongo 服务器启动时自动存储在那里。目前我的主要瓶颈是运行组命令以从数百万行中查找唯一元素。

我的问题是,在新的 Mongo/WiredTiger 上运行时,我该如何做 (a)、(b) 或 (c)?我知道“touch”命令不适用于 WiredTiger,因此 Internet 上的大多数信息似乎都已过时。(a)、(b) 或 (c) 是否已经自动完成?我不应该对这个用例执行这些步骤吗?

0 投票
1 回答
3464 浏览

mongodb - WiredTiger - 在重新同步辅助副本集成员期间出现“打开文件过多错误”

我正在将辅助副本集成员升级到wiredTiger。我已将它从 MongoDB 2.6.3 升级到 3.0.4,并将存储引擎更改为wiredTiger。现在它正在重新同步主节点的所有数据。在某些时候收到以下错误,并且该过程重新开始:

2015-07-22T13:18:55.658+0000 I INDEX [rsSync] 使用批量方法构建索引

2015-07-22T13:18:55.664+0000 I INDEX [rsSync] 构建索引完成。共扫描了 1591 条记录。0 秒

2015-07-22T13:18:56.397+0000 E STORAGE [rsSync] WiredTiger (24) [1437571136:397083][20413:0x7f3d9ed29700],文件:WiredTiger.wt,session.create:WiredTiger.turtle:fopen:打开太多文件

2015-07-22T13:18:56.463+0000 E REPL [rsSync] 8 24:打开的文件太多

2015-07-22T13:18:56.463+0000 E REPL [rsSync] 初始同步尝试失败,剩余 9 次尝试

同一台机器之前运行的是 2.6.3 版本,没有任何打开文件限制问题。我知道wiredTiger 可能会创建更多文件,所以肯定是这样,但它是否让它们同时打开?

以供参考:

cat /proc/sys/fs/file-max

10747371

在 /etc/init.d/mongod 中,配置为:

ulimit -n 64000

根据文档,mongo 似乎为每个数据文件保存一个文件描述符。与在wiredTiger 中一样,这会导致每个集合一个文件+ 每个索引一个文件,根据我们用例的计算,加起来可以超过700K。

所以我可以将 ulimit 更改为 700000 或更高,但我想知道这是否是最正确的解决方案,以及存在哪些替代方案。