标签: wiredtiger

使用WiredTiger引擎的mongodb 3.0.3的最大数据库大小是多少

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

mongodb wiredtiger

5
推荐指数
1
解决办法
867
查看次数

MongoDB 3.0 解释()结果未记录的过滤器字段

我对以下查询运行解释:

db.explain().find({ site_id:1, dimensions:[], create_date: { $gte: new Date(1452603948196) } )
Run Code Online (Sandbox Code Playgroud)

结果在维度字段上包含一个“过滤器”对象,而它应该使用索引过滤该字段,这是什么意思?这不是一个多余的阶段吗?

{ "winningPlan" : {
        "stage" : "FETCH",
        "filter" : {
            "dimensions" : {
                "$eq" : [ ]
            }
        },
        "inputStage" : {
            "stage" : "IXSCAN",
            "keyPattern" : {
                "site_id" : 1,
                "dimensions" : 1,
                "create_date" : 1
            }, }
Run Code Online (Sandbox Code Playgroud)

据我了解,这意味着 mongo 在扫描索引并将文档提取到内存中后再次过滤维度字段,是否正确?

谢谢,

mongodb wiredtiger

5
推荐指数
1
解决办法
670
查看次数

如何使 MongoDB `repairDatabase` 和 `compact` 命令与副本集一起使用?停机时间没问题

我们需要释放一些 MongoDB 空间,并且我们确定了可以从集合中安全删除的超过 100Gb 的文档。

因此,我们将它们从具有以下设置的测试环境中删除:

  • mongodb版本3.0.1
  • 没有分片
  • 1 个节点,无副本
  • 有线虎引擎

完成后,我们发现磁盘上的空间仍然被使用,需要回收。我们找到了这篇文章,它对我们有帮助:运行完两者后

db.runCommand({repairDatabase: 1})
Run Code Online (Sandbox Code Playgroud)

db.runCommand({compact: collection-name })
Run Code Online (Sandbox Code Playgroud)

我们释放了 100Gb 以上。

然后我们继续生产,忘记了设置是不同的,因为我们有 1 个副本节点:

  • mongodb版本3.0.1
  • 没有分片
  • 1 个主节点、1 个副本节点
  • 有线虎引擎

删除文档后,我们运行

db.runCommand({repairDatabase: 1})
Run Code Online (Sandbox Code Playgroud)

并收到OK消息(过了一会儿,10 分钟以上)。我们尝试跑步

db.runCommand({compact: collection-name })
Run Code Online (Sandbox Code Playgroud)

并得到这个错误:

不会在活动副本集主节点上运行紧凑型操作,因为这是一个缓慢的阻塞操作。用力:真实用力

所以我们跑

db.runCommand({compact: collection-name, force: true })
Run Code Online (Sandbox Code Playgroud)

并收到“确定”消息(几乎立即),但空间上的磁盘仍然被使用,它没有被释放。

我们寻找使用副本集运行repairDatabasecompact命令的解决方案,但建议的重点是避免停机,就好像这是唯一的问题一样。但是,我们可以安排停机时间,但我们的问题是命令无法按预期工作,因为空间实际上并未被回收

我们做错了什么?

mongodb wiredtiger mongodb-replica-set

5
推荐指数
1
解决办法
5363
查看次数

在 $facet 中使用 $sort 和 $limit 时 Mongo 聚合速度较慢

我注意到在看似相同的总体上存在巨大的性能差异,至少在概念上是这样。测试是在一个简单的集合结构上进行的,该结构有一个 _id、一个名称和一个createdAt,但其中有 2000 万个。在createdAt上有一个索引。它托管在 mlab 集群上,版本为 3.6.9 WiredTiger。

我正在尝试使用聚合进行简单的分页,我知道我可以使用查找和限制,但我喜欢向管道添加更多元素,我给出的示例非常精炼。

db.getCollection("runnablecalls").aggregate([
         {
          $facet: {
            docs: [
                { $sort:  {createdAt: -1} },
                { $limit:  25 },
                { $skip:  0 },                                
            ],
            page_info: [
              { $group: { _id: null, total: { $sum: 1 } } 
              }
            ],
          }
        }                           
      ])
Run Code Online (Sandbox Code Playgroud)

这几乎需要40s. 现在,如果我将$sort和移到$limit刻面之外,则需要0.042s.

db.getCollection("runnablecalls").aggregate([
        { $sort:  {createdAt: -1} },
        { $limit:  25 }, 
        {
          $facet: {
            docs: [           
                { $skip:  0 },                
            ],            
            page_info: [
                { …
Run Code Online (Sandbox Code Playgroud)

database performance mongodb wiredtiger

5
推荐指数
1
解决办法
3750
查看次数

如何在集合级别的pymongo中添加wiredTiger?

我正在尝试使用wiredTiger引擎在MongoDB 3.0中启用数据压缩.压缩在服务器级别工作正常,我可以为mongo服务器配置文件中的所有集合提供全局压缩算法,如下所示:

storage:
  engine: wiredTiger
  wiredTiger:
    collectionConfig:
      blockCompressor: zlib
Run Code Online (Sandbox Code Playgroud)

我想在集合级别启用此压缩,这可以通过使用mongodb shell中的以下代码来完成:

db.createCollection( "test", {storageEngine:{wiredTiger:{configString:'block_compressor=zlib'}}} );
Run Code Online (Sandbox Code Playgroud)

如何使用pymongo驱动程序执行此操作?

from pymongo import MongoClient
client = MongoClient("localhost:27017")
db = client.mydb
Run Code Online (Sandbox Code Playgroud)

python zlib mongodb pymongo wiredtiger

3
推荐指数
1
解决办法
691
查看次数

MongoDB WiredTiger存储引擎cacheSizeGB配置选项

我可以配置WiredTiger存储引擎中MongoDB 3.0.0引入的配置选项的最小cacheSizeGB数是多少?

代表多少cacheSizeGB必须是整数?是否可以使用15.5这样的浮点数进行配置?

我无法从MongoDB官方文档中找到详细信息。

mongodb wiredtiger

2
推荐指数
1
解决办法
2862
查看次数

WiredTiger和就地更新

我有一个用户集合.每个用户都有一个经常更新的字段"地理位置"(每次用户显着移动时).由于我希望在更新时在文档级别而不是集合级别上进行并发,因此我使用的是WiredTiger存储引擎.

我了解到,使用WiredTiger,文档中的每次更新都会导致创建新文档:

http://learnmongodbthehardway.com/schema/wiredtiger/

WiredTiger不支持就地更新

但是,本文还说"即使[WiredTiger]不允许就地更新,它仍然可以比许多工作负载的MMAP表现更好 ".这是什么意思?当我使用WiredTiger时,我必须注意哪些具体含义?例如,如果没有就地更新,数据库大小会快速增长吗?还有其他需要注意的事项吗?

我还了解到MongoDB 3.6中的WiredTiger增加了存储增量的功能,而不是重写整个文档(https://jira.mongodb.org/browse/DOCS-11416).这究竟是什么意思?

注意:另外我不明白的是,现在大多数(如果不是全部)硬盘驱动器的扇区大小为4096字节,因此您不能仅向硬盘驱动器写入4个字节(例如),而是必须写入完整块4096字节(首先读取它,更新它中的4个字节,然后写入).由于大多数文档通常<4096字节,这意味着在任何情况下都需要重写整个文档(即使使用MMAP).我错过了什么?

mongodb wiredtiger

2
推荐指数
1
解决办法
1086
查看次数

MongoDB - WiredTiger快照与锁定

我并不完全理解这两个功能在(WiredTiger)MongoDB程序中如何相互关联:

1)WiredTiger快照

2)数据锁定

如果使用WiredTiger引擎的每次读取操作在读取时都提供了数据库级别"快照"(以便创建一致性(ACID中的C),为什么我们还需要锁定?让我们使用一个示例.

我在文档级别执行查询(读取操作).好的,所以我知道我得到了数据库级别的快照,所以我的数据是一致的,即使另一个用户同时写入同一个文档,更新它.

那么在这一点上,在该文档上使用Shared-Lock有什么用处,它会阻止对该文档的所有写入(独占)操作,直到发布共享锁定为止?在我阅读文档的同时写入该文档可能会出现什么问题,如果我实际上使用了在阅读时提供给我的文档快照?为什么我会关心文件在阅读操作期间是否被锁定?我已经从那个时间点得到了(一致的)数据,不是吗?

我显然在这里错过了一个关键概念......任何帮助?

谢谢.

database concurrency mongodb wiredtiger

2
推荐指数
1
解决办法
673
查看次数

MongoDB:如何更改 _id_ 索引的引擎类型(从 B-Tree 到 LSM-Tree)?

我们可以使用WiredTiger引擎创建一个集合type=lsm,但是MongoDB文档中没有提到这个功能:

db.createCollection(
    "test",
    { storageEngine: { wiredTiger: {configString: "type=lsm"}}}
)
Run Code Online (Sandbox Code Playgroud)

一旦插入一些文档并添加索引,WiredTiger 似乎确实创建了 LSM 文件。

db.test.insert([
    { value: 1},
    { value: 2},
    { value: 3}
]) // Done in 16:04
db.test.createIndex(
    { value: 1 },
    { storageEngine: { wiredTiger: {configString: "type=lsm"}}}
) // Done in 19:59
Run Code Online (Sandbox Code Playgroud)
$ ls -ltr
...
-rw-r--r--. 1 mongod mongod        16384 Jan 15 16:04 collection-0-1708338433081558809-000002.lsm
-rw-r--r--. 1 mongod mongod        16384 Jan 15 16:04 index-1-1708338433081558809.wt
-rw-r--r--. 1 mongod mongod        16384 Jan 15 19:59 index-3-1708338433081558809-000002.lsm
Run Code Online (Sandbox Code Playgroud)

集合和索引value_1 …

indexing primary-key mongodb lsm-tree wiredtiger

2
推荐指数
1
解决办法
2236
查看次数

`show collections'返回的尺寸是多少?

编辑:这个问题不是关于vanilla MongoDB的,show collections而是关于mongo-hacker.查看已接受的答案和评论.


使用Mongo DB 3.2 + WiredTiger,show collections显示两种尺寸:s1/s2.

show collections
coll_1               ? 10.361MB / 1.289MB
coll_2               ?  0.000MB / 0.004MB
coll_3               ?  0.000MB / 0.016MB
coll_4               ?  0.001MB / 0.031MB
Run Code Online (Sandbox Code Playgroud)

我的猜测是:

  • s1:数据库中文档的总大小
  • s2:压缩后磁盘上的数据库大小(文档+索引)

它是否正确?我在文档中找不到任何参考.

mongodb wiredtiger

1
推荐指数
3
解决办法
4561
查看次数

从损坏的 MongoDB 安装中恢复 WiredTiger 集合时出错

我们已经实现了MongoDB主从复制,数据库被删除了。

我们使用extundelete命令从 Mongo 数据目录中恢复了已删除的文件。

取消删除博客 https://github.com/RIKSOF/development/wiki/Restoring-deleted-files-on-Linux

我们想要恢复至少一个我们获得 WT(有线计时器)文件的集合。我们正在尝试使用以下命令恢复该文件,但出现以下错误

从损坏的 MongoDB 安装中恢复 WiredTiger 集合

wget http://source.wiredtiger.com/releases/wiredtiger-2.7.0.tar.bz2 tar xvf wiredtiger-2.7.0.tar.bz2 cd wiredtiger-2.7.0 sudo apt-get install libsnappy-dev build-essential ./configure --enable-snappy make

./wt -v -h ../mongo-bak -C "extensions=[./ext/compressors/snappy/.libs/libwiredtiger_snappy.so]" -R salvage collection-2657--1723320556100349955.wt

错误 -

./wt -v -h ../mongo-bak -C "extensions=[./ext/compressors/snappy/.libs/libwiredtiger_snappy.so]" -R salvage collection-246--7553069514495955510.wt [1488888117:36780][13536:0x7f7b633cd740], file:WiredTiger.wt, connection: read checksum error for 4096B block at offset 12288: block header checksum of 1955562709 doesn't match expected checksum of 3146787951 [1488888117:36809][13536:0x7f7b633cd740], file:WiredTiger.wt, connection: WiredTiger.wt: encountered an illegal …

linux mongodb wiredtiger

1
推荐指数
1
解决办法
4333
查看次数

什么...在c代码中意味着什么

我正在阅读有线电视的代码.我看到一个函数定义

WT_CURSOR::set_key(WT_CURSOR * cursor, ...)

"......"在这里意味着什么?编译器如何编译这样的代码?

谢谢

c wiredtiger

1
推荐指数
1
解决办法
177
查看次数

Docker-compose 和 mongoDB:无法在任何兼容版本下启动 WiredTiger?

我有以下docker-compose文件:

version: "3"

services:

    #
    # APIs
    #----------------------------------------------
       pokerstats:
        image: pokerstats
        container_name: pokerstats
        ports:
          - 8080:8080
        depends_on: 
          - db

    #
    # Utilities
    #----------------------------------------------
      db:
        image: mongo
        container_name: mongo
        volumes:
          - ./data/db:/data/db
        ports:
          - "27018:27017"
        environment:
          MONGO_INITDB_ROOT_USERNAME: admin
          MONGO_INITDB_ROOT_PASSWORD: admin
          MONGO_INITDB_DATABASE: pokerStats
Run Code Online (Sandbox Code Playgroud)

在我添加volumes. 但是当我运行时不是:docker-compose up -dmongo 容器立即停止,在日志中我看到错误:

2020-04-10T19:17:17.313+0000 I  STORAGE  [initandlisten] wiredtiger_open config: create,cache_size=1457M,cache_overflow=(file_max=0M),session_max=33000,eviction=(threads_min=4,threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000,close_scan_interval=10,close_handle_minimum=250),statistics_log=(wait=0),verbose=[recovery_progress,checkpoint_progress],
2020-04-10T19:17:17.772+0000 E  STORAGE  [initandlisten] WiredTiger error (1) [1586546237:772524][29:0x7fe9f284fb00], connection: __posix_open_file, 667: /data/db/WiredTiger.wt: handle-open: open: Operation not permitted Raw: [1586546237:772524][29:0x7fe9f284fb00], connection: __posix_open_file, …
Run Code Online (Sandbox Code Playgroud)

mongodb docker wiredtiger docker-compose docker-volume

1
推荐指数
1
解决办法
7469
查看次数