0
MongoDB create index
在大型数据收集中速度很慢,这很容易理解。但为什么drop indexes
操作这么快?执行drop indexes
操作后,数据结构是否有任何更改?MongoDB:当MongoDB下载索引时发生了什么
MongoDB create index
在大型数据收集中速度很慢,这很容易理解。但为什么drop indexes
操作这么快?执行drop indexes
操作后,数据结构是否有任何更改?MongoDB:当MongoDB下载索引时发生了什么
在集合上创建新索引就像创建一个按B树排列的新集合,这样您就可以快速在关键字段上执行搜索。这看起来像复制部分集合。
因此,删除索引,它会喜欢删除一个集合,mongo只是删除索引集合,然后它完成。
我不知道你是否知道文件系统是如何工作的,但是你可以用同样的方式考虑这个问题。当你将文件复制到磁盘时,这需要时间。但是,如果您从磁盘中删除文件,则需要很少的时间,因为文件系统只是将其标记为未使用,几乎不需要任何时间。
这意味着如果我创建更多的索引,它会创建更多的'索引集合到磁盘或persisent其他,随着数据的增加,插入数据将需要更多的索引集合的关系,所以插入数据将是慢? – cow
是的,但并不明显,B-Tree将花费n(log(n))时间来查找项目,并且还需要n(log(n))时间来更新项目,所以插入数据将会“慢”,但您不会感觉它,除非你在短时间内写入大量数据。您还可以在创建索引时使用“背景”选项,因此在插入/更新数据时不需要等待索引更新。而且你应该知道mongodb在更新后并不总是将数据写入磁盘,它总是写入内存并在发生某些特殊事件时持久化它们。 –