内容简介:在通过在某一字段上创建索引,此为实际生产中的一个真实案例,我们有一个集合QQStatements,其数据量为2604W,如下图所示。
在 https://www.cnblogs.com/xuliuzai/p/9965229.html 的博文中我们介绍了 MongoDB 的常见索引的创建语法。部分同学还想看看MongoDB的威力到底有多大,所以,在这儿追加一个例子,感受一下索引的性能。
通过在某一字段上创建索引, 从优化前的执行15.15S到优化后降至0.014S,性能提升了1000倍。
此为实际生产中的一个真实案例,我们有一个集合QQStatements,其数据量为2604W,如下图所示。
系统需要查询此表最近的变动情况,即需要抓取新增数据量和修改的数据量。
查询语句如下:
db.QQStatementsStatements.find({
$or:
[
{Rec_CreateTime:{$gt: ISODate("2019-01-07 16")}}
,{Rec_ModifyTime:{$gt: ISODate("2019-01-07 16")}}
]
} )
但此查询语句不理想,有时耗时25S,多次执行有缓存后也要15S左右,如下图:
查看此表,发现Rec_CreateTime字段建有索引,单独执行符合Rec_CreateTime 条件的语句,很快 0.1 S 内就执行完成。
而Rec_ModifyTime字段没有索引,单独执行符合Rec_ModifyTime条件的语句较慢,需要15S左右。
到这儿,就可以判读出问题是缺失索引,和开发同学确认后,此场景时常用,此字段需要添加索引。
执行添加索引的命令:
db.QQStatements.createIndex({"Rec_ModifyTime":1},{"name":'idx_Rec_ModifyTime',background:true})
Rec_ModifyTime字段添加索引后,整个语句执行降至0.014S(20S-->0.02S )
从上面可以看出在MongoDB数据库中索引很有必要,性能可以优化数百倍。
本文版权归作者所有,未经作者同意不得转载,谢谢配合!!!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Writing Apache Modules with Perl and C
Lincoln Stein、Doug MacEachern / O'Reilly Media, Inc. / 1999-03 / USD 39.95
Apache is the most popular Web server on the Internet because it is free, reliable, and extensible. The availability of the source code and the modular design of Apache makes it possible to extend Web......一起来看看 《Writing Apache Modules with Perl and C》 这本书的介绍吧!