日韩小视频-日韩久久一区二区三区-日韩久久一级毛片-日韩久久久精品中文字幕-国产精品亚洲精品影院-国产精品亚洲欧美云霸高清

下載吧 - 綠色安全的游戲和軟件下載中心

軟件下載吧

當(dāng)前位置:軟件下載吧 > 數(shù)據(jù)庫(kù) > DB2 > MongoDB入門到進(jìn)階筆記:05-MongoDB索引查詢與建立 createIndex getIndexes dropIndex 性能優(yōu)化

MongoDB入門到進(jìn)階筆記:05-MongoDB索引查詢與建立 createIndex getIndexes dropIndex 性能優(yōu)化

時(shí)間:2024-02-08 11:17作者:下載吧人氣:27

mongodb數(shù)據(jù)準(zhǔn)備
use shijiange
for(i=1; i<=500000;i++){
db.myuser.insert( {name:’mytest’+i, age:i} )
}
for(i=1; i<=500000;i++){
… db.myuser.insert( {name:’mytest’+i, age:i} )
… }
WriteResult({ “nInserted” : 1 })
db.myuser.count()
500000

mongodb有慢查詢的概念,默認(rèn)是超過100ms會(huì)記錄慢日志mongodb.log
db.getProfilingStatus()
db.getProfilingStatus()
{ “was” : 0, “slowms” : 100, “sampleRate” : 1 }

查詢age為9999的,查看掃描的行數(shù)
db.myuser.find( {age:9999} )
db.myuser.find({age:19999})
{ “_id” : ObjectId(“6362396795502fbd5683b9ba”), “name” : “mytest19999”, “age” : 19999 }

db.myuser.find( {age:9999} ).explain(true)#使用explain可以查看是否全表掃描
db.myuser.find({age:113399}).explain()
{
“explainVersion” : “1”,
“queryPlanner” : {
“namespace” : “wygzs.myuser”,
“indexFilterSet” : false,
“parsedQuery” : {
“age” : {
“$eq” : 113399
}
},
“queryHash” : “3838C5F3”,
“planCacheKey” : “BB98D80C”,
“maxIndexedOrSolutionsReached” : false,
“maxIndexedAndSolutionsReached” : false,
“maxScansToExplodeReached” : false,
“winningPlan” : {
“stage” : “COLLSCAN”, # 表示全表掃描
“filter” : {
“age” : {
“$eq” : 113399
}
},
“direction” : “forward”
},
“rejectedPlans” : [ ]
},
“command” : {
“find” : “myuser”,
“filter” : {
“age” : 113399
},
“$db” : “wygzs”
},
“serverInfo” : {
“host” : “5e7b4039fa6f”,
“port” : 27017,
“version” : “5.0.13”,
“gitVersion” : “cfb7690563a3144d3d1175b3a20c2ec81b662a8f”
},
“serverParameters” : {
“internalQueryFacetBufferSizeBytes” : 104857600,
“internalQueryFacetMaxOutputDocSizeBytes” : 104857600,
“internalLookupStageIntermediateDocumentMaxSizeBytes” : 104857600,
“internalDocumentSourceGroupMaxMemoryBytes” : 104857600,
“internalQueryMaxBlockingSortMemoryUsageBytes” : 104857600,
“internalQueryProhibitBlockingMergeOnMongoS” : 0,
“internalQueryMaxAddToSetBytes” : 104857600,
“internalDocumentSourceSetWindowFieldsMaxMemoryBytes” : 104857600
},
“ok” : 1
}

日志會(huì)出現(xiàn)慢日志
{“t”:{“$date”:”2022-11-02T09:41:00.284+00:00″},”s”:”I”, “c”:”COMMAND”, “id”:51803, “ctx”:”conn5″,”msg”:”Slow query”,”attr”:{“type”:”command”,”ns”:”wygzs.myuser”,”appName”:”MongoDB Shell”,”command”:{“find”:”myuser”,”filter”:{“age”:113399},”lsid”:{“id”:{“$uuid”:”ac26a8d3-1132-4d39-b35c-b770b70eb2b1″}},”$db”:”wygzs”},”planSummary”:”COLLSCAN”,”keysExamined”:0,”docsExamined”:500000,”cursorExhausted”:true,”numYields”:500,”nreturned”:1,”queryHash”:”3838C5F3″,”planCacheKey”:”BB98D80C”,”reslen”:162,”locks”:{“FeatureCompatibilityVersion”:{“acquireCount”:{“r”:501}},”Global”:{“acquireCount”:{“r”:501}},”Mutex”:{“acquireCount”:{“r”:1}}},”storage”:{},”remote”:”127.0.0.1:49802″,”protocol”:”op_msg”,”durationMillis”:157}}

添加索引,加快查詢
db.myuser.getIndexes() #獲取當(dāng)前索引,默認(rèn)有_id的索引,所以用_id查是比較快
db.myuser.getIndexes()
[ { “v” : 2, “key” : { “_id” : 1 }, “name” : “id” } ]

db.myuser.createIndex( {age:1} ) #增加age的升序索引,默認(rèn)名稱
db.myuser.createIndex({age:1})
{
“numIndexesBefore” : 1,
“numIndexesAfter” : 2,
“createdCollectionAutomatically” : false,
“ok” : 1
}

db.myuser.createIndex({age:1}, {name:”myuser_age”}) ##指定索引名稱
db.myuser.createIndex({age:1}, {name:”myuser_age”})
{
“numIndexesBefore” : 2,
“numIndexesAfter” : 3,
“createdCollectionAutomatically” : false,
“commitQuorum” : “votingMembers”,
“ok” : 1,
“$clusterTime” : {
“clusterTime” : Timestamp(1667394028, 7),
“signature” : {
“hash” : BinData(0,”AAAAAAAAAAAAAAAAAAAAAAAAAAA=”),
“keyId” : NumberLong(0)
}
},
“operationTime” : Timestamp(1667394028, 7)
}

db.myuser.getIndexes()
db.myuser.getIndexes()
[
{
“v” : 2,
“key” : {
“_id” : 1
},
“name” : “id”
},
{
“v” : 2,
“key” : {
“age” : 1
},
“name” : “age_1”
}
]

db.myuser.find( {age:9999} )
db.myuser.find( {age:9999} ).explain(true)
db.myuser.find({age:19999}).explain(true)
{
“explainVersion” : “1”,
“queryPlanner” : {
“namespace” : “wygzs.myuser”,
“indexFilterSet” : false,
“parsedQuery” : {
“age” : {
“$eq” : 19999
}
},
“maxIndexedOrSolutionsReached” : false,
“maxIndexedAndSolutionsReached” : false,
“maxScansToExplodeReached” : false,
“winningPlan” : {
“stage” : “FETCH”,
“inputStage” : {
“stage” : “IXSCAN”,
“keyPattern” : {
“age” : 1
},
“indexName” : “age_1”,
“isMultiKey” : false,
“multiKeyPaths” : {
“age” : [ ]
},
“isUnique” : false,
“isSparse” : false,
“isPartial” : false,
“indexVersion” : 2,
“direction” : “forward”,
“indexBounds” : {
“age” : [
“[19999.0, 19999.0]”
]
}
}
},
“rejectedPlans” : [ ]
},
“executionStats” : {
“executionSuccess” : true,
“nReturned” : 1,
“executionTimeMillis” : 1,
“totalKeysExamined” : 1,
“totalDocsExamined” : 1,
“executionStages” : {
“stage” : “FETCH”,
“nReturned” : 1,
“executionTimeMillisEstimate” : 0,
“works” : 2,
“advanced” : 1,
“needTime” : 0,
“needYield” : 0,
“saveState” : 0,
“restoreState” : 0,
“isEOF” : 1,
“docsExamined” : 1,
“alreadyHasObj” : 0,
“inputStage” : {
“stage” : “IXSCAN”,
“nReturned” : 1,
“executionTimeMillisEstimate” : 0,
“works” : 2,
“advanced” : 1,
“needTime” : 0,
“needYield” : 0,
“saveState” : 0,
“restoreState” : 0,
“isEOF” : 1,
“keyPattern” : {
“age” : 1
},
“indexName” : “age_1”,
“isMultiKey” : false,
“multiKeyPaths” : {
“age” : [ ]
},
“isUnique” : false,
“isSparse” : false,
“isPartial” : false,
“indexVersion” : 2,
“direction” : “forward”,
“indexBounds” : {
“age” : [
“[19999.0, 19999.0]”
]
},
“keysExamined” : 1,
“seeks” : 1,
“dupsTested” : 0,
“dupsDropped” : 0
}
},
“allPlansExecution” : [ ]
},
“command” : {
“find” : “myuser”,
“filter” : {
“age” : 19999
},
“$db” : “wygzs”
},
“serverInfo” : {
“host” : “5e7b4039fa6f”,
“port” : 27017,
“version” : “5.0.13”,
“gitVersion” : “cfb7690563a3144d3d1175b3a20c2ec81b662a8f”
},
“serverParameters” : {
“internalQueryFacetBufferSizeBytes” : 104857600,
“internalQueryFacetMaxOutputDocSizeBytes” : 104857600,
“internalLookupStageIntermediateDocumentMaxSizeBytes” : 104857600,
“internalDocumentSourceGroupMaxMemoryBytes” : 104857600,
“internalQueryMaxBlockingSortMemoryUsageBytes” : 104857600,
“internalQueryProhibitBlockingMergeOnMongoS” : 0,
“internalQueryMaxAddToSetBytes” : 104857600,
“internalDocumentSourceSetWindowFieldsMaxMemoryBytes” : 104857600
},
“ok” : 1
}

db.myuser.dropIndex( {age:1} ) #刪除索引
db.myuser.dropIndex({age:1})
{ “nIndexesWas” : 2, “ok” : 1 }

db.myuser.dropIndex(“myuser_age”) ## 根據(jù)名稱刪除素銀
db.myuser.dropIndex(“myuser_age”)
{
“nIndexesWas” : 3,
“ok” : 1,
“$clusterTime” : {
“clusterTime” : Timestamp(1667394121, 1),
“signature” : {
“hash” : BinData(0,”AAAAAAAAAAAAAAAAAAAAAAAAAAA=”),
“keyId” : NumberLong(0)
}
},
“operationTime” : Timestamp(1667394121, 1)
}

使用正則的話,索引無效果
db.myuser.find( {“name”:”mytest1″} )
db.myuser.createIndex( {name:1} )#添加索引
db.myuser.createIndex({name:1})
{
“numIndexesBefore” : 1,
“numIndexesAfter” : 2,
“createdCollectionAutomatically” : false,
“ok” : 1
}
db.myuser.getIndexes()
[
{
“v” : 2,
“key” : {
“_id” : 1
},
“name” : “id”
},
{
“v” : 2,
“key” : {
“name” : 1
},
“name” : “name_1”
}
]

db.myuser.find( {“name”:”mytest6″} )
db.myuser.find( {“name”:/99999/} )
db.myuser.find( {“name”:/99999/} ).explain(true)#使用正則,全表掃描,也是慢

mongodb建立唯一索引,唯一索引對(duì)應(yīng)的值不能重復(fù)
use shijiange
db.myuser.insert( {userid:1} )
db.myuser.insert( {userid:1} )

db.myuser.drop()
true
db.myuser.insert( {userid:1} )
WriteResult({ “nInserted” : 1 })
db.myuser.insert( {userid:1} )
WriteResult({ “nInserted” : 1 })
db.myuser.createIndex({userid:1},{unique:true})
有重復(fù)數(shù)據(jù),不能創(chuàng)建唯一索引
db.myuser.createIndex({userid:1},{unique:true})
{
“ok” : 0,
“errmsg” : “Index build failed: 26986ed4-2f8a-4bf8-84b9-c8349cf3a85d: Collection wygzs.myuser ( 3bff5780-8e8d-43f2-afe4-300b112f4ef5 ) :: caused by :: E11000 duplicate key error collection: wygzs.myuser index: userid_1 dup key: { userid: 1.0 }”,
“code” : 11000,
“codeName” : “DuplicateKey”,
“keyPattern” : {
“userid” : 1
},
“keyValue” : {
“userid” : 1
}

db.myuser.remove({}) #清空數(shù)據(jù)
db.myuser.ensureIndex( {userid:1},{unique:true} ) #創(chuàng)建唯一索引
db.myuser.insert( {userid:1} )
db.myuser.insert( {userid:2} )
db.myuser.insert( {userid:1} ) #因?yàn)槭俏ㄒ凰饕詴?huì)報(bào)錯(cuò)
db.myuser.insert( {userid:1} )
WriteResult({ “nInserted” : 1 })
db.myuser.insert( {userid:2} )
WriteResult({ “nInserted” : 1 })
db.myuser.insert( {userid:1} )
WriteResult({
“nInserted” : 0,
“writeError” : {
“code” : 11000,
“errmsg” : “E11000 duplicate key error collection: wygzs.myuser index: userid_1 dup key: { userid: 1.0 }”
}
})

MongoDB入門到進(jìn)階筆記:05-MongoDB索引查詢與建立 createIndex getIndexes dropIndex 性能優(yōu)化
標(biāo)簽MongoDB,MongoDB優(yōu)化,學(xué)習(xí)筆記,技術(shù)文檔,數(shù)據(jù)庫(kù),MongoDB
查看所有評(píng)論+

網(wǎng)友評(píng)論

網(wǎng)友
您的評(píng)論需要經(jīng)過審核才能顯示

熱門閱覽

最新排行

公眾號(hào)

盖楼回复X

(您的评论需要经过审核才能显示)

主站蜘蛛池模板: 久久国产精品影院 | 一级毛片不收费 | 亚洲在线不卡 | 国产在线欧美日韩精品一区二区 | 黄色一级毛片免费 | 日韩啪 | 欧美日韩一区二区在线观看视频 | 国产高清免费影视在线观看 | 午夜爽爽| 国产一级特黄aa级特黄裸毛片 | 久久亚洲精品永久网站 | 国产精品亚洲高清一区二区 | 欧美国产综合日韩一区二区 | 日韩毛片一级 | 国产乱纶| 亚洲欧美日韩国产精品26u | 9191在线亚洲精品 | 欧美 亚洲 丝袜 清纯 中文 | 日韩成人在线播放 | 黄黄的网站在线观看 | 成人香蕉xxxxxxx | 曰本女人色黄网站 | 人成免费a级毛片 | 视频二区在线观看 | 国产久草视频 | 久9久9精品视频在线观看 | 国产高清美女一级a毛片久久w | 好吊色综合网天天高清 | 色黄在线 | 亚洲国产成人在人网站天堂 | 伊人色在线视频 | 久久成人免费播放网站 | 国产一区二区三区四区五区 | 久久精品视频网 | 波多野结衣在线视频观看 | 久久性久久性久久久爽 | 国产精品久久做爰 | 国产午夜亚洲精品 | 亚洲一区二区欧美 | 99久久国产免费中文无字幕 | 欧美成人日韩 |