FAQ:MongoDB ååš
åšæ¬é¡µ
æ¬ææ¡£åçäºæå
³MongoDBååšç³»ç»çåžžè§é®é¢ã
ååšåŒææ¯æ°æ®åºçäžéšåïŒèŽèŽ£ç®¡çåŠäœåšå
ååç£çäžååšæ°æ®ãè®žå€æ°æ®åºæ¯æå€äžªååšåŒæïŒå
¶äžäžåçåŒæå¯¹äºç¹å®çå·¥äœèŽèœœå¯èœæ§èœæŽå¥œãäŸåŠïŒäžäžªååšåŒæå¯èœäžºå
å«å€§é读åæäœçå·¥äœèŽèœœæäŸæŽå¥œçæ§èœïŒèåŠäžäžªåŒæåå¯èœäžºåå
¥æäœæäŸæŽé«çååéã
åŠè¯·åé
å¯ä»¥ãæšå¯ä»¥è®©å¯æ¬éæå䜿çšäžåçååšåŒæïŒæ¯åŠWiredTigeråå
ååŒæïŒ
泚æïŒä»4.2çæ¬ä»¥åïŒMongoDB圻åºç§»é€äºåºåŒçMMAPv1ååšåŒæã
å¯ä»¥ïŒè¯·åèïŒ
åçŒ©æ°æ®äžæªåçŒ©æ°æ®çæ¯çåå³äºæšçæ°æ®åæäœ¿çšçå猩åºãé»è®€æ
åµäžïŒWiredTigeräžçéåæ°æ®äœ¿çšçæ¯Snappyåå猩, ä¹å¯ä»¥äœ¿çšzlibåzstdå猩ãçŽ¢åŒæ°æ®é»è®€æ
åµäžäœ¿çšprefixå猩ã
对äºWiredTigerïŒMongoDBå¯ä»¥å©çšWiredTigerå
éšçŒååæä»¶ç³»ç»çŒåã
ä»MongoDB 3.4åŒå§ïŒé»è®€çWiredTigerå
éšçŒå倧尿¯ä»¥äžäž€è
äžçèŸå€§è
ïŒ
- ïŒRAM - 1 GBïŒ/2
- 256 MB.
äŸåŠïŒåšæ»å
±æ4GB RAMçç³»ç»äžïŒWiredTigerçŒåå°äœ¿çš1.5GB RAM**
ïŒ0.5 *ïŒ4 GB-1 GBïŒ= 1.5 GBïŒ
ã çžåïŒæ»å
å䞺1.25GBçç³»ç»å°äžºWiredTigerçŒååé
256MBïŒå 䞺256MBå€§äºæ»RAMåå»1GBçäžåïŒ0.5 *ïŒ1.25 GB-1 GBïŒ= 128 MB <256 MBïŒ
**ãæ³šæïŒåšæäºæ åµäžïŒäŸåŠåšå®¹åšäžè¿è¡æ¶ïŒæ°æ®åºçå åéå¶å¯èœäœäºç³»ç»æ»å åãåšè¿ç§æ åµäžïŒå åéå¶äžåæ¯ç³»ç»æ»å åïŒèæ¯æå€§å¯çšRAMã
é»è®€æ
åµäžïŒWiredTiger对ææéå䜿çšSnappyåå猩ïŒå¯¹ææçŽ¢åŒäœ¿çšprefixå猩ãå猩é»è®€åŒæ¯å¯ä»¥åšå
šå±çº§å«é
眮çïŒä¹å¯ä»¥åšéåå玢åŒå建æéŽåºäºæ¯äžªéååæ¯äžªçŽ¢åŒè¿è¡è®Ÿçœ®ã
WiredTigerå
éšçŒåäžçæ°æ®äžç£çæ ŒåŒäœ¿çšäžåç衚瀺圢åŒïŒ
- æä»¶ç³»ç»çŒåäžçæ°æ®äžç£çäžçæ ŒåŒçžåïŒå æ¬ææå¯¹æ°æ®æä»¶è¿è¡åçŒ©çæ¶çãæäœç³»ç»äœ¿çšæä»¶ç³»ç»çŒåæ¥åå°ç£çI/Oã
- å 蜜å°WiredTigerå éšçŒåäžç玢åŒå ·æäžç£çæ ŒåŒäžåçæ°æ®è¡šç€ºåœ¢åŒïŒäœä»å¯ä»¥å©çšçŽ¢åŒprefixå猩æ¥åå°RAM䜿çšéã玢åŒprefixå猩ä»çŽ¢åŒå段äžå é€éçšåçŒã
- WiredTigerå éšçŒåäžçéåæ°æ®æªç»å猩ïŒå¹¶äœ¿çšäžç£çæ ŒåŒäžåç衚瀺圢åŒãåå猩å¯ä»¥èç倧éçç£çååšç©ºéŽïŒäœæ¯å¿ é¡»å¯¹æ°æ®è¿è¡è§£å猩æèœç±æå¡åšç«¯è¿è¡å€çã
éè¿æä»¶ç³»ç»çŒåïŒMongoDBèªåšäœ¿çšWiredTigerçŒåæå
¶ä»è¿çšæªäœ¿çšçææå¯çšå
åã
èŠè°æŽWiredTigeråŒæçå
éšçŒå倧å°ïŒè¯·åè
storage.wiredTiger.engineConfig.cacheSizeGB
以å--wiredTigerCacheSizeGB
åæ°ãåºé¿å
å°WiredTigerå
éšçŒåç倧å°å¢å å°å
¶é»è®€åŒä»¥äžã泚æïŒstorage.wiredTiger.engineConfig.cacheSizeGB
éå¶WiredTigerå éšçŒåç倧å°ãæäœç³»ç»å°äœ¿çšå¯çšç空é²å åè¿è¡æä»¶ç³»ç»çŒåïŒä»èå 讞å猩çMongoDBæ°æ®æä»¶ä¿çåšå åäžãæ€å€ïŒæäœç³»ç»å°äœ¿çšä»»äœå¯çšçRAMæ¥çŒå²æä»¶ç³»ç»ååæä»¶ç³»ç»çŒåã䞺äºå®¹çº³æŽå€çRAM䜿çšè ïŒæšå¯èœéèŠéäœWiredTigerå éšçŒåç倧å°ã
åŠææšåšæ æ³è®¿é®ç³»ç»äžææå¯çšRAMç容åšïŒäŸåŠ
lxc
ïŒcgroups
ïŒDocker
çïŒäžè¿è¡ mongod
ïŒåå¿
é¡»å°storage.wiredTiger.engineConfig.cacheSizeGB
讟眮䞺å°äºè¯¥å®¹åšäžå¯çšçRAMæ°éãç¡®åçæ°éåå³äºå®¹åšäžè¿è¡çå
¶ä»è¿çšã请åèmemLimitMB
ãèŠæ¥çæå
³çŒååæ·æ±°ççç»è®¡ä¿¡æ¯ïŒè¯·åé
serverStatus
åœä»€è¿åçwiredTiger.cache
åæ®µççžå
³å
容ã- æ£æ¥ç¹ä»3.6çåŒå§ïŒMongoDBå°WiredTigeré 眮䞺以60ç§çéŽéåå»ºæ£æ¥ç¹ïŒå³å°å¿«ç §æ°æ®åå ¥ç£çïŒãåšæ©æççæ¬äžïŒMongoDBå°åšWiredTigeräžä»¥60ç§çéŽéæåšå满2GBæ¥å¿æ°æ®æ¶å¯¹çšæ·æ°æ®è¿è¡åå»ºæ£æ¥ç¹æäœïŒäž€äžªæ¡ä»¶äžä»»æäžäžªæ»¡è¶³å³å¯ã
- æ¥å¿æ°æ®WiredTigeråšä»¥äžä»»äžæ 嵿»¡è¶³æ¶äŒå°çŒåçæ¥è®°è®°åœåæ¥å°ç£çïŒ
- 对äºå¯æ¬éæåïŒäž»æè ä»èç¹æåïŒïŒ
- æ¯åŠæçåŸ oplogæ¡ç®çæäœãéèŠçåŸ oplogæ¡ç®çæäœå æ¬ïŒ
- é对oplogèœ¬åæ«ææ¥è¯¢
- åŠå€ïŒå¯¹äºä»èç¹æåïŒå𿝿¹oplogæ¡ç®è¢«åºçšä¹åã
- 泚æïŒåœ
writeConcernMajorityJournalDefault
䞺true
æ¶ïŒè®Ÿçœ®äžº["majority"
](https://docs.mongodb.com/v4.2/reference/write-concern/#writeconcern."majority")çåå ³æ³šéå«äº`j:true`ãâ - WiredTigerå建æ°çæ¥å¿æä»¶æ¶ãç±äºMongoDB䜿çšçæ¥å¿æä»¶å€§å°éå¶äžº100MBïŒå æ€WiredTiger倧纊æ¯100MBæ°æ®å建äžäžªæ°çæ¥å¿æä»¶ã
WiredTigerååšåŒæåšå é€ææ¡£æ¶äŒç»Žæ€æ°æ®æä»¶äžç空记åœå衚ãWiredTigerå¯ä»¥éçšæ€ç©ºéŽïŒäœæ¯å¹¶äžäŒå°å
¶è¿åç»æäœç³»ç»ïŒé€éæ¯åšéåžžç¹æ®çæ
åµäžã
WiredTigeråŒæçå¯çšäºéçšç空é²ç©ºéŽåæ åš
db.collection.stats()
çç»æçwiredTiger.block-manager.file bytes availablefor reuse
åæ®µäžã䞺äºäœ¿WiredTigerååšåŒæå¯ä»¥å°è¿äºç©ºé²ç©ºéŽåœè¿ç»æäœç³»ç»ïŒå¯ä»¥å¯¹æ°æ®æä»¶è¿è¡ç¢çæŽçãè¿å¯ä»¥éè¿
compact
åœä»€å®ç°ãæŽå€çžå
³ä¿¡æ¯åå
¶ä»èèïŒè¯·åè compact
ãèŠæ¥çéåçç»è®¡ä¿¡æ¯ïŒå
æ¬æ°æ®å€§å°ïŒè¯·äœ¿çš
mongo
shelläžçdb.collection.stats()
æ¹æ³ã以äžç€ºäŸäžºåšorder
éåäžæ§è¡db.collection.stats()
ïŒdb.orders.stats();
MongoDBåæ ·æäŸäºä»¥äžæ¹æ³æ¥è¿åéåçå
·äœå€§å°ïŒ
- â
db.collection.storageSize()
äŒè¿åéååšç£çäžå çšç倧å°ïŒä»¥åè䞺åäœãåŠæéåçæ°æ®æ¯å猩è¿çïŒWiredTigeråŒæé»è®€åžŠæ°æ®å猩ïŒïŒåååšå€§å°åæ çæ¯å猩åç倧å°ïŒå¯èœäŒæ¯db.collection.storageSize()
è¿åçç»æå°äžäºã db.collection.totalIndexSize
äŒè¿åéåäžææçŽ¢åŒç倧å°ïŒä»¥åè䞺åäœãåŠæäžäžªçŽ¢åŒäœ¿çšäºåçŒå猩ïŒWiredTigeråŒæé»è®€çŽ¢åŒäœ¿çšåçŒå猩ïŒïŒåè¿åç倧å°åæ çæ¯ å猩åç倧å°ã
以äžçèæ¬äŒèŸåºæ¯äžªæ°æ®åºçç»è®¡ä¿¡æ¯ïŒ
db.adminCommand("listDatabases").databases.forEach(function (d) {
mdb = db.getSiblingDB(d.name);
printjson(mdb.stats());
})
以äžçèæ¬äŒèŸåºæ¯äžªæ°æ®åºäžæ¯äžªéåçç»è®¡ä¿¡æ¯ïŒ
db.adminCommand("listDatabases").databases.forEach(function (d) {
mdb = db.getSiblingDB(d.name);
mdb.getCollectionNames().forEach(function(c) {
s = mdb[c].stats();
printjson(s);
})
})
èŠæ¥ç䞺æ¯äžªçŽ¢åŒåé
çæ°æ®å€§å°ïŒäœ¿çš
db.collection.stats()
æ¹æ³ïŒç¶åæ¥çè¿åç»æææ¡£äžçindexSizes
åæ®µãåŠæçŽ¢åŒäœ¿çšåçŒå猩ïŒè¿ä¹æ¯WiredTigeråŒæçé»è®€è®Ÿçœ®ïŒïŒè¿åç倧å°ä»£è¡šäºå猩åç倧å°ã
mongo shelläžç
db.stats()
æ¹æ³è¿åâæ¿æŽ»âæ°æ®åºçåœåç¶æãæå
³è¿ååæ®µçæè¿°ïŒè¯·åèdbStatsèŸåºãè¯è
ïŒåç¿
æ ¡å¯¹ïŒç倩å
æè¿æŽæ° 1yr ago