【mongoDB某张表未创建索引导致服务器CPU飙升】

客户生产环境数据库节点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()

注意,创建过多的索引可能会影响写入性能和存储空间,因此需要根据实际需求和性能要求来决定是否创建索引

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值