Mongodb新旧版本索引创建锁分析
IT那活儿公众号为您带来本次Mongodb新旧版本索引创建锁分析。客户生产环境中当前使用的Mongodb数据库大多数都是3.6或者更低的版本,在3.X版本中创建索引,分为前台和后台创建,前台创建索引会加库级锁,导致该库上的其他所有读写操作都会被阻塞,后台创建则不会阻塞增删改查操作,但是建索引的效率会变慢。

不同版本数据库建索引测试对比
官方文档相关的说明从MongoDB4.2开始,创建索引仅在构建过程的开始和结束期间对被索引的集合获取排他锁,以保护元数据更改。构建过程的其余部分使用后台索引构建的行为来最大化构建期间对集合的读写访问。4.2版本以后的优化后的索引创建过程的性能至少与旧版本的background创建方式相同。如果说创建索引的集合的增删改操作较少,则性能跟前台创建索引一样。不同版本数据库建索引测试对比,本次采用3.6和4.2两个版本在相同的集合上创建索引进行对比。测试用的集合包含1000W个文档,大小近400MB。
总结
经验证测试,4.2以后的版本创建索引不会产生长时间的阻塞,且索引创建效率比后台创建索引要略快。所以可以结合其他实际情况推动数据库升级到4.4版。
本文作者:刘运彬(上海新炬王翦团队),转载请注明出处:“IT那活儿”公众号。
原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/6480.html
