我在类级别上使用@Indexed注释,使用Spring,然后使用@Document。
我从日志中注意到,每次建立到Mongo的连接时,都会执行索引的创建。
这是正常行为吗?它不会在数据库上造成过载吗?
请让我了解@Indexed注释的生命周期,如果已经创建了索引,是否有可能忽略索引创建?
我找不到任何这方面的文件。
发布于 2019-01-09 12:50:44
使用@Indexed确保对创建声明索引的实体的第一次访问。Spring的IndexOperations调用createIndex(…)。通常,一旦索引与给定的规范一起存在,这将是一个无操作。通常适用于启动和运行一段时间的应用程序。
AWS相当清理那些不需要释放资源的实例。当您每分钟打一次createIndex(…)电话时,我不确定这会如何影响createIndex(…)的性能。如果你没有看到负面影响,那么事情可能会好起来。
MongoDB上的索引创建准备独占锁(IX,意图是独占锁定),并在创建索引期间升级该锁。如果有足够的进程试图调用createIndex(…),这可能会产生影响。
有什么可供选择的?
@Indexed并将索引创建移动到带外进程(外部创建索引)@Indexed并创建索引(这是建议的方法,使您具有最大的灵活性。您可以检查所需的索引是否已经存在,并跳过索引创建)。另请参阅:
db.collection.createIndex(…)发布于 2020-06-11 12:23:06
在2.2.x版本中,您可以使用名为- spring.data.mongodb.autoIndexCreation: true/false的属性控制在服务器启动时创建索引的行为
发布于 2019-05-06 08:34:40
我知道,无论您做什么,应用程序都会调用命令来创建Index (新建或已经退出)。这个过程对应用程序运行和确保一切都有好处。关于这个命令在MongoDb中做什么,让我们更多地检查它
应用程序:我想要一些东西(创建索引并确保它在那里),~>,我应该调用CreateIndex
MongoDb:接受命令:-我看到它是新的:创建它-我看到它是复制的:噢,转储操作,我会跳过这个,让你知道。
这是我对这个问题的快速研究
https://stackoverflow.com/questions/54109916
复制相似问题