1,mongodb
https://cloud.tencent.com/developer/article/1005399?from=15425,数据库的基准测试
线上监控图形

场景是,凌晨3点开始的备份,持续时间20分钟,3点05到3点25,平均iops 5000,平均MBps , 单个io size大小,
因为mongodb和MySQL还不太一样,MySQL是innodb引擎,mongodb默认是WiredTiger引擎.
mongo的WT引擎,内存页和磁盘的组织方式与innodb不太一样,参考袁荣喜对WT引擎源码的分析:
https://blog.youkuaiyun.com/weixin_45583158/article/details/100143033
https://github.com/yuanrongxi/wiredtiger
根据他的建议:
如果是读多写少的表在创建时我们可以尽量将 page size 设置的比较小 ,比如 16KB,如果表数据量不太大(<2G),甚至可以不开启压缩。那么 createCollection 的 configString 可以这样设置:
"internal_page_max=16KB,leaf_page_max=16KB,leaf_value_max=8KB,os_cache_max=1GB"
如果这个读多写少的表数据量比较大,可以为其设置一个压缩算法,例如:
"block_compressor=zlib, internal_page_max=16KB,leaf_page_max=16KB,leaf_value_max=8KB"
如果是写多读少的表,可以将 leaf_page_max 设置到 1MB,并开启压缩算法,也可以为其制定操作系统层面 page cache 大小的 os_cache_max 值,让它不会占用太多的 page cache 内存,防止影响读操作。
这些 MongoDB 的配置项都是和 WiredTiger 引擎数据组织相关的配置项,在了解 WiredTiger 的数据组织方式细节情况下,可以根据具体的业务场景调整 collection 的表配置属性。
总的来说,还是有这个page size大小的概念的,8kb,16kb还是多少。

本文探讨了MongoDB的WiredTiger引擎性能优化,包括根据业务场景调整page size和压缩算法。同时,介绍了基准测试工具fio的使用,强调在衡量IOPS时要考虑读写方式和单次IO大小,提供了MongoDB的详细性能参数。
最低0.47元/天 解锁文章
424

被折叠的 条评论
为什么被折叠?



