千家信息网

mongo如何查询慢日志以及创建索引

发表于:2025-11-06 作者:千家信息网编辑
千家信息网最后更新 2025年11月06日,这篇文章给大家分享的是有关mongo如何查询慢日志以及创建索引的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.查看mongodb慢日志是否开起use LogDB;db.g
千家信息网最后更新 2025年11月06日mongo如何查询慢日志以及创建索引

这篇文章给大家分享的是有关mongo如何查询慢日志以及创建索引的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

1.查看mongodb慢日志是否开起

use LogDB;

db.getProfilingStatus();

2.开启慢日志,设置超过100毫秒的操作为慢操作

db.setProfilingLevel(1,100);

3.查看慢日志内容

db.system.profile.find().sort({$natural:-1})

日志,

shard3:PRIMARY> db.system.profile.find().sort({$natural:-1})

{ "op" : "query", "ns" : "LogDB.Flashxxx", "command" : { "find" : "Flashxxx", "filter" : { "UserId" : { "$in" : [ "1111111" ] } }, "shardVersion" : [ Timestamp(0, 0), ObjectId("000000000000000000000000") ], "lsid" : { "id" : UUID("d08179ba-ecbd-4f9d-92e7-cd491e5a1d8a"), "uid" : BinData(0,"iwsImy7Wfk2mAp4o/uuD+I9mpETQTxb5PXo26pIQkS4=") }, "$clusterTime" : { "clusterTime" : Timestamp(1558696199, 3), "signature" : { "hash" : BinData(0,"Ht7EWhYpVLiy+DbH8Cu1Ijs6PNk="), "keyId" : NumberLong("6647500774429425691") } }, "$client" : { "driver" : { "name" : "mongo-csharp-driver", "version" : "2.7.0.0" }, "os" : { "type" : "Windows", "name" : "Microsoft Windows 6.3.9600", "architecture" : "x86_64", "version" : "6.3.9600" }, "platform" : ".NET Framework 4.0.0.0", "mongos" : { "host" : "new-mongo01:20000", "client" : "10.205.33.32:59518", "version" : "3.6.9" } }, "$configServerState" : { "opTime" : { "ts" : Timestamp(1558696196, 12), "t" : NumberLong(3) } }, "$db" : "LogDB" }, "keysExamined" : 0, "docsExamined" : 37428, "cursorExhausted" : true, "numYield" : 292, "locks" : { "Global" : { "acquireCount" : { "r" : NumberLong(586) } }, "Database" : { "acquireCount" : { "r" : NumberLong(293) } }, "Collection" : { "acquireCount" : { "r" : NumberLong(293) } } }, "nreturned" : 1, "responseLength" : 673, "protocol" : "op_msg", "millis" : 104, "planSummary" : "COLLSCAN", "execStats" : { "stage" : "COLLSCAN", "filter" : { "UserId" : { "$eq" : "11111111115" } }, "nReturned" : 1, "executionTimeMillisEstimate" : 100, "works" : 37430, "advanced" : 1, "needTime" : 37428, "needYield" : 0, "saveState" : 292, "restoreState" : 292, "isEOF" : 1, "invalidates" : 0, "direction" : "forward", "docsExamined" : 37428 }, "ts" : ISODate("2019-05-24T11:09:59.346Z"), "client" : "10.205.34.91", "allUsers" : [ { "user" : "__system", "db" : "local" } ], "user" : "__system@local" }

注意COLLSCAN 是全表扫描。

查看执行计划:

db.FlashClientData.find({UserId: 1000493111}).explain()

shard3:PRIMARY> db.FlashClientData.find({UserId: 100049111}).explain()

{

"queryPlanner" : {

"plannerVersion" : 1,

"namespace" : "LogDB.Flashxxx",

"indexFilterSet" : false,

"parsedQuery" : {

"UserId" : {

"$eq" : 10x0493111

}

},

"winningPlan" : {

"stage" : "COLLSCAN",<<<<<<<<----全表扫描

"filter" : {

"UserId" : {

"$eq" : 10x0493111

}

},

"direction" : "forward"

},

"rejectedPlans" : [ ]

},

创建索引:

db.Flashxxx.createIndex( {UserId: 1} ) // 按age字段创建升序索引

db.Flashxxx.getIndexes() // 查询集合的索引信息

shard3:PRIMARY> db.FlashClientData.find({UserId: 100049111}).explain()

{

"queryPlanner" : {

"plannerVersion" : 1,

"namespace" : "LogDB.FlashClientData",

"indexFilterSet" : false,

"parsedQuery" : {

"UserId" : {

"$eq" : 100049111

}

},

"winningPlan" : {

"stage" : "FETCH",

"inputStage" : {

"stage" : "IXSCAN",,<<<<<<<<

"keyPattern" : {

"UserId" : 1

},

"indexName" : "UserId_1",

"isMultiKey" : false,

"multiKeyPaths" : {

"UserId" : [ ]

},

"isUnique" : false,

删除指定的索引dropIndex()

db.COLLECTION_NAME.dropIndex("INDEX-NAME")

如,删除集合sites中名为"name_1_domain_-1"的索引:

单字段索引 (Single Field Index)

db.person.createIndex( {age: 1} )

{age: 1} 代表升序索引,也可以通过{age: -1}来指定降序索引,对于单字段索引,升序/降序效果是一样的。

单索引创建唯一索引,如:

db.persons.createIndex({name:1},{unique:true})

复合索引 (Compound Index)

db.person.createIndex( {age: 1, name: 1} )

多key索引 (Multikey Index)

{"name" : "jack", "age" : 19, habbit: ["football, runnning"]}

db.person.createIndex( {habbit: 1} ) // 自动创建多key索引

db.person.find( {habbit: "football"} )

感谢各位的阅读!关于"mongo如何查询慢日志以及创建索引"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

索引 日志 查询 内容 升序 字段 更多 篇文章 不错 实用 代表 信息 可以通过 效果 文章 看吧 知识 中名 参考 帮助 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 家用电脑适合搭服务器吗 数据库冗余概念 餐厅点餐系统数据库总结致谢 计算机网络技术对军事的影响 网络安全特征病毒软件什么意思 四川办公系统软件开发服务 网络安全挑战赛赛结果 服务器节点软件 软件开发可以用哪些编程语言 xbox 更新服务器 多肽功能数据库 浙江省台州市人口数据库 bfe 服务器 蚌埠工程管理软件开发要多少钱 谭志强 数据库 数据库 安全性主要有什么 不用写字的网络安全手抄报怎么关 守护网络安全的手抄报内容 疫情期间高校网络安全排查 大学数据库开发项目 秦淮区第三方软件开发经验丰富 宽带卡显示服务器错误 国外化学知名数据库 sql 连接服务器数据库 网络技术维修学徒 如何做才能将网络安全做好 文明重启怎么提高服务器时间 高等教育网络安全 网络摄像头连不上服务器怎么回事 关于网络安全的手抄报清晰
0