客户生产环境数据库节点CPU飙升
使用top命令查询到mongoDB进程导致
查询mongoDB日志发现T_WFxxx表查询都是1秒以上,且查询频率较高
count该表时数据条数百万+
如图所示:是表中字段未加索引导致
添加索引:
db.T_WF_xxxxxx.ensureIndex({"activityInstId" : 1},{"background" : true})
要在MongoDB中创建索引,可以使用createIndex()方法。以下是创建单索引和组合索引的示例:
创建单索引:
db.collection.createIndex({ fieldName: 1 })
其中,collection是集合名称,fieldName是要创建索引的字段名,1表示升序索引,-1表示降序索引。
例如,要在名为"T_WF_OvertimeActivity"的集合上创建"activityInstId"字段的单索引,可以使用以下命令:
db.T_WF_OvertimeActivity.createIndex({ activityInstId: 1 })
创建组合索引:
db.collection.createIndex({ field1: 1, field2: -1 })
其中,field1和field2是要创建索引的字段名,1和-1表示字段的排序方式。
例如,要在名为"T_WF_xxxx"的集合上创建"activityInstId"和"fieldName"字段的组合索引,可以使用以下命令:
db.T_WF_OvertimeActivity.createIndex({ activityInstId: 1, fieldName: 1 })
创建索引可能需要一些时间来完成,特别是对于大型集合。可以使用getIndexes()方法来查看集合上已创建的索引。例如:
db.T_WF_OvertimeActivity.getIndexes()
注意,创建过多的索引可能会影响写入性能和存储空间,因此需要根据实际需求和性能要求来决定是否创建索引