MongoDB/Docker 中的 zstd 块压缩

7
我在Windows 10下使用docker-compose,如下所示:
version: '3'

services:
  mongo:
    image: mongo:4.2
    ports:
      - "27017:27017"
    restart: always
    volumes:
      - type: bind
        source: ${PWD}/mongod.conf
        target: /etc/mongod.conf
    entrypoint: ["mongod", "--bind_ip_all", "--config", "/etc/mongod.conf"]

我的mongod.conf文件:

storage:
  wiredTiger:
    collectionConfig:
      blockCompressor: zstd
      configString: "allocation_size=64KB,internal_page_max=64KB,leaf_page_max=64KB"

我使用 docker exec docker_mongo_1 df 命令查看磁盘使用情况,不论是否启用 zstd,得到的结果都是相同的磁盘大小。

Filesystem     1K-blocks      Used Available Use% Mounted on
/dev/sda1       65792556  49263808  13156972  79% /data/db

没有:

Filesystem     1K-blocks      Used Available Use% Mounted on
/dev/sda1       65792556  47991952  14428828  77% /data/db

(轻微的差异是由于插入数据的随机性,但文档数量和大小相差不到几个百分点。)我使用了snappy的mongodump,并将其恢复到zstd中,以确保在运行一些测试之前,大多数文档都没有被修改。
在Mongo Docker镜像上是否需要zstandard安装?还是我缺少某些mongodb/docker配置?或者对我的数据真的没有效果吗?如果是这样的话:为什么如此,我能否使其有效?还是Docker平台存在问题?还是Windows上的Docker?
PS:我没有在dba论坛上发布问题的原因是这个问题是跨学科的。

要验证是否使用了压缩,请检查相关的服务器参数。 - D. SM
我通过检查相关的服务器参数来验证压缩是否被使用。 - Jonas Byström
在这种情况下,你所声称的“相同磁盘大小”的输出实际上并不相同。 - D. SM
1
我建议两件事情:1. 不要使用docker尝试这些步骤。2. 在此处提出问题:https://developer.mongodb.com/community/forums/ - dododo
我不这么认为,因为我正在使用Windows操作系统。 - Jonas Byström
显示剩余2条评论
1个回答

7
你用来衡量mongodb磁盘使用的方法不太好。 docker没有模拟具有自己虚拟磁盘的虚拟机,所以df实际上显示的是主机的磁盘使用统计信息(结果包括docker外部发生的所有磁盘活动)。更好的方法是在mongodb存储数据的目录上运行du -sh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接