【问题标题】:zstd block compression in MongoDB/DockerMongoDB/Docker 中的 zstd 块压缩
【发布时间】:2021-07-04 06:39:13
【问题描述】:

我在 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 时,我仍然使用相同的磁盘大小。使用 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

(轻微的变化是由于插入数据的随机性,但文档的数量和它们的大小彼此相差几个百分点。)我使用 mongodump 从 snappy 和 mongorestore 到 zstd 以确保大多数文档在运行之前都没有被触及一些测试。

是否需要在 Mongo docker 映像上安装 zstandard?还是我缺少一些 mongodb/docker 配置?还是对我的数据真的无效?如果是这样:为什么会这样,我可以使它有效吗?还是码头平台的问题?还是 Windows 上的 Docker?

PS我不在 dba 论坛上发帖的原因是这个问题是多学科的。

【问题讨论】:

  • 要验证是否使用了压缩,请检查相关的服务器参数。
  • 我通过检查相关服务器参数验证使用了压缩。
  • 在这种情况下,您声称的“相同磁盘大小”输出实际上并不相同。
  • 在这种情况下,我重申我关于细微变化的句子。
  • 我推荐两件事: 1. 在没有 docker 的情况下尝试这些步骤。 2.在这里问这个问题:developer.mongodb.com/community/forums

标签: mongodb docker wiredtiger zstd


【解决方案1】:

您使用 mongodb 测量磁盘使用情况的方法不是很好。 docker 不模拟具有自己的虚拟磁盘的虚拟机,因此df 实际上显示了主机的磁盘使用统计信息(因此您的数字包括在 docker 之外发生的所有磁盘活动)。最好在 mongodb 存储数据的目录上运行du -sh

【讨论】:

    猜你喜欢
    • 2021-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-04
    • 2021-10-02
    • 2023-02-05
    相关资源
    最近更新 更多