Mongo Atlas免费版存储配额疑问:超512MB仍可插入数据?
MongoDB Atlas免费版存储限额疑问解答
真实存储限额
MongoDB Atlas免费版(M0实例)的官方存储限额确实是512MB,你收到的报错信息也明确验证了这一点:提示已使用513MB,超出了512MB的配额。
为何能插入超512MB的逻辑数据?
你看到的“数据量超过1GB”应该是指未压缩的逻辑数据大小,而Atlas统计的是实际磁盘占用量,再加上配额检查机制的特性,就会出现你遇到的情况:
- 数据压缩机制:MongoDB默认使用WiredTiger存储引擎,会自动对数据和索引进行压缩(默认采用Snappy压缩算法)。插入的原始数据(逻辑大小)经过压缩后,实际占用的磁盘空间会大幅降低——比如1GB的逻辑数据,压缩后可能仅占用几百MB,直到某次插入后压缩后的磁盘占用突破512MB,才会触发配额限制。
- 配额检查延迟:Atlas的存储配额校验并非实时执行,而是周期性运行的。在两次检查的间隔期内,你可以继续插入数据,哪怕此时压缩后的磁盘占用已经接近或刚超过512MB,直到下一次校验触发后,才会锁定写入并抛出报错。
报错说明
当你收到如下报错时,说明实例的实际磁盘占用已超出512MB配额,此时写入操作会被阻止:
com.mongodb.MongoCommandException: Command failed with error 8000 (AtlasError): 'you are over your space quota, using 513 MB of 512 MB' on server XXX. The full response is { "ok": 0, "errmsg": "you are over your space quota, using 513 MB of 512 MB", "code": 8000, "codeName": "AtlasError" }
内容的提问来源于stack exchange,提问作者blahblah
相关产品推荐
相关产品推荐

