愿你出走半生,归来仍是少年

Kratos
专注于用户阅读体验的响应式博客主题
  1. 首页
  2. MongoDB
  3. 正文

【最佳实践】MongoDB导入数据时重建索引

2023年10月8日 3215点热度 0人点赞 0条评论

MongoDB一个广为诟病的问题是,大量数据resotore时索引重建非常缓慢,实测5000万的集合如果有3个以上的索引需要恢复,几乎没法成功,而且resotore时如果选择创建索引也会存在索引不生效的问题,种种情况表明,MongoDB的一些默认设置存在明显不合理之处。
当然,深入理解后总会有办法解决这些问题,MongoDB发展到金,功能也是越来全面。

Table of Contents

Toggle
  • 一、对于小数据量collection,可直接单命令行创建索引
  • 二、对于大数据量collection,需执行后台创建的方式
  • 三、4600万collection重建索引计时情况
  • 四、MongoDB默认只能同时并发创建3个索引

一、对于小数据量collection,可直接单命令行创建索引

类似如下操作:
db.getCollection('processDataObj').createIndex({ 'flowNo':1 }, {}, 'majority')

二、对于大数据量collection,需执行后台创建的方式

如下是最佳实践脚本:

echo "定义变量..."
COLLECT="processDataObjInit"
INDEX="'flowNo':1"
JSFILE=processDataObjInit_1.js

echo "生成js文件..."
echo "print('createIndex ...');
print(db.${COLLECT}.createIndex({${INDEX}}, {}, 'majority'));
print('End time is:');
print(db.hello());" > ${JSFILE}

echo "执行后台创建索引..."
JSFILE=processDataObjInit_1.js
KKLOG=${JSFILE}-`date +%Y-%m-%dT%H:%M`.log
mongosh mongodb://'admin':'passwd'@node1:20000,node2:20000,node3:20000/flowtest?authSource=admin --quiet ${JSFILE} > $KKLOG 2>&1 &

三、4600万collection重建索引计时情况

-rw-rw-r-- 1 mongod mongod         140 10月  8 15:32 processDataObjInit_1.js
-rw-rw-r-- 1 mongod mongod         707 10月  8 16:20 processDataObjInit_1.js-2023-10-08T15:32.log
-rw-rw-r-- 1 mongod mongod         184 10月  8 15:31 processDataObjInit_2.js
-rw-rw-r-- 1 mongod mongod         746 10月  8 16:20 processDataObjInit_2.js-2023-10-08T15:31.log
-rw-rw-r-- 1 mongod mongod         223 10月  8 15:28 processDataObjInit_3.js
-rw-rw-r-- 1 mongod mongod         782 10月  8 16:20 processDataObjInit_3.js-2023-10-08T15:28.log

可见基本需要50分钟左右即可并发完成3个索引的创建。

四、MongoDB默认只能同时并发创建3个索引

因此需修改配置到制定的大小,本次案例有6个大索引需要同时创建,修改shard配置文件,调整并发为6.

setParameter:
  maxNumActiveUserIndexBuilds: 6

实际启动shard时可以看到,配置已生效:

{"t":{"$date":"2023-10-08T07:01:54.495Z"},"s":"I",  "c":"CONTROL",  "id":5760901, "ctx":"main","msg":"Applied --setParameter options","attr":{"serverParameters":{"connPoolMaxConnsPerHost":{"default":200,"value":20000},"maxNumActiveUserIndexBuilds":{"default":3,"value":6}}}}
标签: 暂无
最后更新:2023年10月8日

liking

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

归档

  • 2026 年 6 月
  • 2026 年 3 月
  • 2026 年 2 月
  • 2025 年 12 月
  • 2025 年 11 月
  • 2025 年 4 月
  • 2025 年 2 月
  • 2025 年 1 月
  • 2024 年 12 月
  • 2024 年 10 月
  • 2024 年 7 月
  • 2024 年 5 月
  • 2024 年 4 月
  • 2023 年 11 月
  • 2023 年 10 月
  • 2023 年 8 月
  • 2023 年 7 月
  • 2023 年 5 月
  • 2023 年 3 月
  • 2023 年 2 月
  • 2022 年 12 月
  • 2022 年 11 月
  • 2022 年 10 月
  • 2022 年 9 月
  • 2022 年 8 月
  • 2022 年 6 月
  • 2022 年 5 月
  • 2022 年 3 月
  • 2022 年 2 月
  • 2022 年 1 月
  • 2021 年 12 月
  • 2021 年 11 月
  • 2021 年 10 月
  • 2021 年 8 月
  • 2021 年 7 月
  • 2021 年 6 月
  • 2021 年 5 月
  • 2021 年 4 月
  • 2021 年 3 月
  • 2021 年 2 月
  • 2021 年 1 月
  • 2020 年 12 月
  • 2020 年 11 月
  • 2020 年 10 月
  • 2020 年 9 月
  • 2020 年 8 月
  • 2020 年 7 月
  • 2020 年 6 月
  • 2020 年 5 月
  • 2020 年 3 月
  • 2020 年 2 月
  • 2019 年 12 月
  • 2019 年 11 月
  • 2019 年 10 月
  • 2019 年 9 月
  • 2019 年 8 月
  • 2019 年 7 月
  • 2019 年 6 月
  • 2019 年 5 月
  • 2019 年 4 月
  • 2019 年 2 月
  • 2018 年 12 月
  • 2018 年 11 月
  • 2018 年 8 月
  • 2018 年 7 月
  • 2018 年 6 月
  • 2018 年 5 月
  • 2018 年 4 月
  • 2018 年 3 月
  • 2018 年 2 月
  • 2018 年 1 月
  • 2017 年 12 月
  • 2017 年 11 月
  • 2017 年 8 月
  • 2017 年 6 月
  • 2017 年 5 月
  • 2017 年 3 月
  • 2016 年 9 月
  • 2016 年 8 月
  • 2016 年 7 月
  • 2016 年 6 月
  • 2016 年 5 月
  • 2015 年 10 月
  • 2014 年 10 月
  • 2014 年 8 月
  • 2014 年 3 月
  • 2013 年 12 月
  • 2013 年 8 月
  • 2013 年 7 月
  • 2013 年 6 月
  • 2013 年 4 月
  • 2012 年 11 月
  • 2012 年 7 月
  • 2012 年 6 月
  • 2012 年 5 月
  • 2012 年 2 月
  • 2011 年 10 月
  • 2011 年 8 月
  • 2011 年 3 月
  • 2010 年 11 月
  • 2010 年 10 月
  • 2010 年 9 月
  • 2010 年 8 月
  • 2010 年 7 月
  • 2010 年 5 月
  • 2010 年 4 月
  • 2010 年 1 月
  • 2009 年 11 月
  • 2009 年 8 月
  • 2009 年 5 月
  • 2009 年 3 月
  • 2009 年 2 月
  • 2008 年 11 月
  • 2008 年 10 月
  • 2008 年 8 月
  • 2008 年 4 月
  • 2007 年 4 月

分类

  • BigData
  • kubernetes
  • linux
  • MongoDB
  • MySQL
  • Oracle
  • PostgreSQL
  • 备份恢复
  • 安装配置
  • 性能优化
  • 技术杂谈
  • 未分类
  • 梦回红楼
  • 测试
  • 生活点滴
  • 网站建设
  • 自制工具
  • 轻松一刻
  • 运维知识
  • 问题处理

COPYRIGHT © 2026 愿你出走半生,归来仍是少年. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang