±à¼ÍƼö: |
±¾ÎÄÖ÷Òª½éÉÜÁËÍÆ¹ã¾Ñé·ÖÏí¡¢»ú·¿¶à»îʵÏÖ¡¢ÐÔÄÜÓÅ»¯°¸Àý¡¢³É±¾ÓÅ»¯°¸ÀýµÈÏà¹ØÄÚÈÝ¡£
±¾ÎÄÀ´×Ôinfoq£¬ÓÉ»ðÁú¹ûÈí¼þAnna±à¼¡¢ÍƼö¡£ |
|
·ÖÏíÖ÷ÌâÒ»£ºÈçºÎ°Ñ mongodb ´ÓÌÔ̱ßÔµ±äΪ¹«Ë¾Ö÷Á÷Êý¾Ý¿â£¿


±³¾°£º
Èëְǰ¶à¸ö´óÊý¾ÝÁ¿ÒµÎñʹÓà mongodb£¬Ê¹ÓÃÖо³£³¬Ê±¶¶¶¯
¶à¸öºËÐÄÒµÎñÈÌÊܲ»Á˶¶¶¯µÄÍ´¿à£¬×¼±¸Ç¨ÒÆ»Ø mysql¡£
mongodb ¿Ú±®²î£¬ÐÂÒµÎñÏëÓò»¸ÒÓá£
ÈëÖ° 1 ¸öÔ£¬ÒµÎñÇ¨ÒÆ mongodb µ½¹«Ë¾ÆäËûÊý¾Ý¿â£¬mongodb ×ܼ¯ÈºÊý¼õÉÙ 15%

ÎÒ×öÁËʲô£¿
ÓÅ»¯¼¯Èº£¬½â¾ö¼¯Èº¶¶¶¯ÎÊÌâ
ÄÚ²¿·ÖÏíÐÔÄÜÓÅ»¯·½·¨
¸øÖصãÒµÎñ·ÖÏí mongodb ÔÀí
³ÉÁ¢ mongodb Óû§Èº
ÒµÎñÍ´µãÎÊÌâ¼°Æä½â¾ö·½°¸ÊµÊ±Óû§ÈºÍ¬²½

ÈëÖ° 2 Ôºó£¬mongodb ¹«Ë¾ÄÚ²¿×´Ì¬£º
×¼±¸Ç¨×ߵĺËÐÄÒµÎñ¼ÌÐøÊ¹Óà mongodb
´óÊý¾ÝÁ¿ÒµÎñ¿ªÊ¼Ç¨ÒƵ½ mongodb
Ô½À´Ô½¶à²¿ÃÅ¿ªÊ¼Ê¹Óà mongodb
ÈëÖ° 1 Äêºó£¬mongodb Ïà¹ØÊý¾ÝÔö³¤£º
×ܼ¯ÈºÊýÔö³¤±ÈÀý£º> 700%
×ÜÊý¾ÝÁ¿Ôö³¤±ÈÀý£º> 2000%
¶ÁдÁ÷Á¿Ôö³¤±ÈÀý£º> 550%
mongodb Óû§ÈºÓû§ÊýÔö³¤±ÈÀý£º> 800%
×ܽ᣺
mongodb Ó®µÃÓû§ÐÅÈÎÔÒò×ܽ᣺¿Ú±®
·ÖÏíÖ÷Ìâ¶þ£ºµ±Ç°¹úÄÚ¶Ô mongodb Îó½â(¶ªÊý¾Ý¡¢²»°²È«¡¢ÄÑά»¤)£¿


ÒµÎñ½ÓÈë¹ý³ÌÖо³£×ÉѯµÄ¼¸¸öÎÊÌ⣺
Îó½âÒ».¶ªÊý¾Ý
Îó½â¶þ.²»°²È«£¬ÍøÉÏÒ»¶Ñ˵ mongodb ±»ºÚ¿Í¹¥»÷£¬½ØÍ¼Ò»¶ÑÐÂÎÅ
Îó½âÈý. DBA ÍÂ²Û mongodb Ì«ÄÑά»¤

Îó½âÔÒò£º
mongodb ±¾ÉíºÜÓÅÐ㣬µ«ÊǺܶà DBA ºÍÏàÓ¦¿ª·¢°Ñ¿Ø²»×¡
¹úÄÚϵͳÐÔ·ÖÎö mongodb ÄÚºËʵÏÖÔÀíÏà¹Ø×ÊÁÏǷȱ
ÍøÂçÉç»áÒÔ¶ï´«¶ï£¬DBA »òÕßÏà¹Ø¿ª·¢×ÔÉí°Ñ¿Ø²»×¡ÑݱäΪ mongodb µÄ¹ø
·ÖÏíÖ÷ÌâÈý£ºmongodb »ú·¿¶à»î·½°¸-ʵÏֳɱ¾¡¢ÐÔÄÜ¡¢Ò»ÖÂÐÔ"Èý·áÊÕ"

ÉçÇø mongodb Ë«Ïòͬ²½·½°¸(·ÅÆú¸Ã·½°¸)

·ÅÆú¸Ã·½°¸ÔÒò£º
Êý¾ÝÁ½·Ý¡¢¼¯ÈºÁ½·Ý¡¢ÎïÀí³É±¾¸ß¡£Èý»ú·¿¡¢Îå»ú·¿µÈ¸ü¶à»ú·¿¶à»î£¬³É±¾¼°¸´ÔÓÐÔ¸ü¸ß¡£
´æÔÚÒ»ÖÂÐÔÎÊÌ⣬Á½µØ¼¯ÈºÊý¾Ý²»Ò»Ö£¬balance Çé¿öÏÂÓÈΪͻ³ö
ÓÉÓÚÈËÁ¦ÔÒò£¬Èç¹û¿ªÔ´Í¬²½¹¤¾ß³öÏÖÎÊÌâ°Ñ¿Ø²»ÔÚ¡£
·½°¸Ò»£ºÍ¬³ÇÈý»ú·¿¶à»î·½°¸(1mongod+1mongod+1mongod
·½Ê½)

ÿ¸ö»ú·¿´úÀíÖÁÉÙ²¿Êð 2 ¸ö£¬±£Ö¤ÒµÎñ·ÃÎÊ´úÀí¸ß¿ÉÓÃ
Èç¹ûij»ú·¿Òì³££¬²¢ÇҸûú·¿½ÚµãΪÖ÷½Úµã£¬½èÖú mongodb ÌìÈ»µÄ¸ß¿ÉÓûúÖÆ£¬ÆäËû»ú·¿ 2 ¸ö
mongod ʵÀý»á×Ô¶¯Ñ¡¾ÙÒ»¸öнڵãΪÖ÷½Úµã¡£
¿Í»§¶ËÅäÖà nearest ¾Í½ü·ÃÎÊ£¬±£Ö¤¶Á×ß±¾»ú·¿½Úµã¡£
±×¶Ë£ºÈç¹ûÊÇÒìµØ»ú·¿£¬B »ú·¿ºÍ C »ú·¿Ð´´æÔÚ¿ç»ú·¿Ð´³¡¾°¡£Èç¹û A B C Ϊͬ³Ç»ú·¿£¬ÔòûÓøñ׶ˣ¬Í¬³Ç»ú·¿Ê±ÑÓ¿ÉÒÔºöÂÔ¡£
·½°¸¶þ£ºÍ¬³ÇÁ½»ú·¿¶à»î·½°¸£¨2mongod+2mongod+1arbiter
ģʽ£©

ÿ¸ö»ú·¿´úÀíÖÁÉÙ²¿Êð 2 ¸ö£¬±£Ö¤ÒµÎñ·ÃÎÊ´úÀí¸ß¿ÉÓÃ
Èç¹û»ú·¿ A ¹Òµô£¬Ôò»áÔÚ B »ú·¿ mongod ÖÐÖØÐÂÑ¡¾ÙÒ»¸öеÄÖ÷½Úµã¡£arbiter Ñ¡¾Ù½Úµã²»ÏûºÄ×ÊÔ´
¿Í»§¶ËÅäÖà nearest ²ÎÊý£¬±£Ö¤¶Á×ß±¾»ú·¿½Úµã
±×¶Ë£ºÈç¹ûÊÇÒìµØ»ú·¿£¬B »ú·¿ºÍ C »ú·¿Ð´´æÔÚ¿ç»ú·¿Ð´³¡¾°¡£Èç¹û A B Ϊͬ³Ç»ú·¿£¬ÔòûÓøñ׶ˣ¬Í¬³Ç»ú·¿Ê±ÑÓ¿ÉÒÔºöÂÔ¡£
·½°¸Èý£ºÒìµØÈý»ú·¿¶à»î·½°¸(1mongod+1mongod+1mongod
·½Ê½)-½â¾ö¿ç»ú·¿Ð´

ÿ¸ö»ú·¿´úÀíͨ¹ý´ò±êÇ©µÄ·½Ê½£¬´úÀíת·¢Êý¾Ýµ½Ö÷½ÚµãÔÚ±¾»ú·¿µÄ·ÖƬÉÏÈ¥¡£
A »ú·¿Êý¾Ýͨ¹ý±êǩʶ±ðת·¢µ½·ÖƬ shard-1£¬B »ú·¿Êý¾Ýת·¢µ½·ÖƬ shard-2£¬C »ú·¿Êý¾Ýת·¢µ½·ÖƬ
shard-3¡£
·ÖÏíÖ÷ÌâËÄ£ºmongodb Ïß³ÌÄ£ÐÍÆ¿¾±¼°ÆäÓÅ»¯·½·¨

mongodb ĬÈÏÏß³ÌÄ£ÐÍ(Ò»¸öÁ´½ÓÒ»¸öÏß³Ì)

˵Ã÷£º
listener Ï̸߳ºÔð½ÓÊÜËùÓеĿͻ§¶ËÁ´½Ó
listener Ïß³Ìÿ½ÓÊÕµ½Ò»¸öеĿͻ§¶ËÁ´½Ó¾Í´´½¨Ò»¸öỊ̈߳¬¸ÃÏß³ÌÖ»¸ºÔð´¦Àí¸ÃÁ´½ÓÇëÇó´¦Àí¡£
¸ÃÍøÂçÏß³ÌÄ£ÐÍȱÏÝ£º
Ò»¸öÁ´½Ó´´½¨Ò»¸öỊ̈߳¬Èç¹û 10 Íò¸öÁ´½Ó£¬ÄÇô¾ÍÐèÒª 10 Íò¸öỊ̈߳¬ÏµÍ³¸ºÔð¡¢ÄÚ´æÏûºÄÒ²»áºÜ¶à
µ±Á´½Ó¹Ø±ÕµÄʱºò£¬Ïß³ÌÏú»Ù£¬Æµ·±µÄÏ̴߳´½¨ºÍÏûºÄ½øÒ»²½Ôö¼Óϵͳ¸ºÔØ
µäÐͰ¸Àý£º
mysql ĬÈÏ·½Ê½¡¢mongodb ͬ²½Ïß³ÌÄ£ÐÍÅäÖã¬ÊÊÓÃÓÚÇëÇó´¦Àí±È½ÏºÄʱµÄ³¡¾°£¬ÈçÊý¾Ý¿â·þÎñ
mongodb ĬÈÏÏß³ÌÄ£ÐÍ(¶¯Ì¬Ïß³ÌÄ£ÐÍ£ºµ¥¶ÓÁз½Ê½)

˵Ã÷£º
¸ÃÄ£ÐͰÑÒ»´ÎÇëÇóת»»Îª¶à¸öÈÎÎñ£ºmongodb Êý¾Ý¶Á²Ù×÷(ÍøÂç IO)¡¢db ²ãÊý¾Ý·ÃÎÊ(´ÅÅÌ
IO)¡£
ÈÎÎñÈë¶Óµ½È«¾Ö¶ÓÁУ¬Ï̳߳ØÖеÄÏ̴߳ӶÓÁÐÖлñÈ¡ÈÎÎñÖ´ÐС£
ͬһ¸öÇëÇó·ÃÎʱ»²ð·ÖΪ¶à¸öÈÎÎñ£¬´ó²¿·ÖÇé¿öÏÂͨ¹ýµÝ¹éµ÷ÓÃͬһ¸öÇëÇóµÄ¶à¸öÈÎÎñ»áÓÉͬһ¸öÏ̴߳¦Àí£»¡£
µ±ÈÎÎñÌ«¶à£¬ÏµÍ³Ñ¹Á¦´óµÄʱºò£¬Ï̳߳ØÖÐÏß³ÌÊý¶¯Ì¬Ôö¼Ó£»µ±ÈÎÎñ¼õÉÙ£¬ÏµÍ³Ñ¹Á¦¼õÉÙµÄʱºò£¬Ï̳߳ØÖÐÏß³ÌÊý¶¯Ì¬¼õÉÙ£»
¸ÃÍøÂçÏß³ÌÄ£ÐÍȱÏÝ£º
Ï̳߳ػñÈ¡ÈÎÎñÖ´ÐУ¬ÓÐÈ«¾ÖËø¾ºÕù£¬ÕâÀï¾Í»á³ÉΪϵͳƿ¾±
µäÐͰ¸Àý£º
mongodb ¶¯Ì¬ adaptive Ïß³ÌÄ£ÐÍ£¬ÊÊÓÃÓÚÇëÇó´¦Àí±È½ÏºÄʱµÄ³¡¾°£¬ÈçÊý¾Ý¿â·þÎñ
mongodb ÓÅ»¯ºóÏß³ÌÄ£ÐÍ(¶¯Ì¬Ïß³ÌÄ£ÐÍ-¶à¶ÓÁз½Ê½)

˵Ã÷£º
°ÑÒ»¸öÈ«¾Ö¶ÓÁвð·ÖΪ¶à¸ö¶ÓÁУ¬ÈÎÎñÈë¶ÓµÄʱºò°´ÕÕ session Á´½Ó hash É¢Áе½¸÷×ԵĶÓÁУ¬¹¤×÷Ï̻߳ñÈ¡»ñÈ¡ÈÎÎñµÄʱºò£¬Í¬Àíͨ¹ýͬÑùµÄ
hash Ë㷨ȥ¶ÔÓ¦µÄ¶ÓÁлñÈ¡ÈÎÎñ£¬Í¨¹ýÕâÖÖ·½Ê½¼õÉÙËø¾ºÕù£¬Í¬Ê±ÌáÉýÕûÌåÐÔÄÜ¡£
µäÐͰ¸Àý£º
mongodb Äں˶à¶ÓÁÐ adaptive Ïß³ÌÄ£ÐÍÓÅ»¯£¬Ìض¨³¡¾°ÐÔÄÜÓкܺõÄÌáÉý£¬ÊÊÓÃÓÚÇëÇó´¦Àí±È½ÏºÄʱµÄ³¡¾°£¬ÈçÊý¾Ý¿â·þÎñ¡£
·ÖÏíÖ÷ÌâÎ壺²¢ÐÐÇ¨ÒÆ-¼¯ÈºÀ©ÈÝËÙÂÊ N ±¶ÌáÉýÓÅ»¯Êµ¼ù

²¢ÐÐÇ¨ÒÆ-¼¯ÈºÀ©ÈÝËÙÂÊ N ±¶ÌáÉýÓÅ»¯Êµ¼ù(¸ß°æ±¾)

²¢ÐÐÇ¨ÒÆ¹ý³Ì£¨¼ÙÉèÐèÒªÇ¨ÒÆµÄ±íÃûΪ£ºtest£¬ ´Ó 3 ½ÚµãÀ©Èݵ½ 6 ½Úµã£©£º
ѡȡÐèÒªÇ¨ÒÆµÄ¿é£¬¼ÙÉèÔ´¼¯ÈºÓÐ M ·ÖƬ£¬À©ÈÝÐÂÔö N ·ÖƬ£¬ÔòÒ»°ãÇé¿öÐèÒªÇ¨ÒÆµÄ¿é=min(M,N)
Ç¨ÒÆ²½Ö裺1. configServer-master Ñ¡³öÐèÒªÇ¨ÒÆµÄ¿é£»2. config.locks
±íÖÐ id=test ÕâÌõ¼Ç¼ÉÏËø£»3.֪ͨÐèÒªÇ¨ÒÆµÄÔ´·ÖƬ¿ªÊ¼Ç¨ÒÆ£»4.Ç¨ÒÆÍê³ÉºóÑÓʱ 10s£¬Öظ´
1-4 ²½ÖèʵÏÖ³ÖÐøÐÔ chunk Êý¾ÝÇ¨ÒÆ

²¢ÐÐÇ¨ÒÆ²½Ö裺
˵Ã÷£º¼ÙÉèÐèÒªÇ¨ÒÆµÄ±íÃûΪ test£¬ Ô´·ÖƬÊý M£¬À©ÈݺóÐÂÔö·ÖƬÊý N
configServer-master Ñ¡³öÐèÒªÇ¨ÒÆµÄ¿é£¬Ò»°ã S=min(M, N)£¬Ò²¾ÍÊÇ M
ºÍ N ÖеÄ×îСֵ£»
config.locks ±íÖлñÈ¡ id=test ÕâÌõ¼Ç¼¶ÔÓ¦µÄ·Ö²¼Ê½Ëø£»
Ò첽֪ͨÐèÒªÇ¨ÒÆµÄ S ¸öÔ´·ÖƬ¿ªÊ¼Ç¨ÒÆ£»
µÈ´ý S ¸ö chunk Ç¨ÒÆÍê³É
Ç¨ÒÆÍê³ÉºóÑÓʱ 10 Ãë
ÖØ¸´²½Öè 1-5

²¢ÐÐÇ¨ÒÆÆ¿¾±£º
»ñÈ¡·Ö²¼Ê½ËøÊ±¼äÌ«³¤£¬ÔÒò£ºconfig.locks ±íÖÐ id=test ±íµÄ·Ö²¼Ê½Ëø¿ÉÄܱ»ÆäËû²Ù×÷Ëø×¡
configServer Ò첽֪ͨԴ·ÖƬÖÐµÄ S ¸ö·ÖƬͬʱ¿ªÊ¼Ç¨ÒÆÊý¾Ýµ½Ä¿µÄ·ÖƬ£¬ÈÎÒ»¸ö chunk
Ç¨ÒÆÂý»áÍÏÀÛÕû¸öÇ¨ÒÆ¹ý³Ì¡£
±¾Åú´ÎÈ·ÈÏÇ¨ÒÆÍê³Éºó£¬»¹ÐèÒªÑÓʱ 10s£»Ò»°ã SSD ·þÎñÆ÷£¬Ò»¸ö chunk Ç¨ÒÆ¶¼ÔÚ¼¸°Ù ms
ÄÚÍê³É¡£
ÓÅ»¯·½·¨£º
±ÜÃâÆäËû²Ù×÷Õ¼Ó÷ֲ¼Ê½Ëø£¬ÀýÈç splite ÎÒÃÇ¿ÉÒÔ¹Ø±Õ autoSplite ¹¦ÄÜ£¬»òÕßµ÷´ó
chunksize
configServer ²¢ÐÐÇ¨ÒÆ²»°Ñ¶à¸ö·ÖƬµÄ²¢ÐÐÇ¨ÒÆ·Åµ½Í¬Ò»¸öÂß¼£¬¶øÊǷŵ½¸÷×ÔµÄÂß¼¡£
ÑÓʱ·Åµ½¸÷×Ô·ÖÆ¬Ç¨ÒÆÂß¼ÀïÃæ¿ØÖÆ£¬²»ÊÜÈ«¾ÖÑÓʱ¿ØÖÆ
·ÖƬÑÓʱ¿ÉÅäÖã¬Ö§³Öʵʱ¶¯Ì¬ÃüÁîÐе÷Õû
·ÖÏíÖ÷ÌâÁù:ÐÔÄÜÓÅ»¯°¸Àý

°¸Àý 1.ǧÒÚ¼¶Êý¾ÝÁ¿ mongodb ¼¯ÈºÐÔÄÜÊý±¶ÌáÉýÓÅ»¯Êµ¼ù-±³¾°

ÒµÎñ±³¾°£º
ºËÐÄÔªÊý¾Ý
Êý¾ÝÁ¿Ç§ÒÚ¼¶
ǰÆÚд¶à¶ÁÉÙ£¬ºóÆÚ¶Á¶àдÉÙ
¸ß·åÆÚ¶ÁдÁ÷Á¿°ÙÍò¼¶
ʱÑÓÃô¸Ð
Êý¾ÝÔö³¤¿ì£¬²»¶¨ÆÚÀ©ÈÝ
ͬ³Ç¶à»î¼¯Èº

ÓÅ»¯²ßÂÔ 1£º²¿Êð¼°Ê¹Ó÷½Ê½ÓÅ»¯
Ô¤·ÖƬ£¬Ð´Èë¸ºÔØ¾ùºâ¡£
WriteConcern£º{ w: "majority"}£¬Ð´´ó²¿·Ö½Úµã³É¹¦²Å·µ»Ø¿Í»§¶Ë
OK
¶Áд·ÖÀ룬¶Á´ÓÓÅÏÈ¡£
enableMajorityReadConcern ¹Ø±Õ£¬ÓÐÐÔÄÜËðºÄ¡£

ÓÅ»¯²ßÂÔ 2£º´æ´¢ÒýÇæ cache ÌÔ̲ßÂÔÓÅ»¯
wiredtiger ´æ´¢ÒýÇæ cache ÌÔ̲ßÂÔÏà¹ØµÄ¼¸¸öÅäÖÃÈçÏÂ:

wiredtiger ´æ´¢ÒýÇæ cache ÌÔ̲ßÂÔÓÅ»¯ºóÅäÖÃ:
eviction_target: 75%£¬eviction_trigger£º97%£¬eviction_dirty_target:
%3£¬eviction_dirty_trigger£º25%£¬evict.threads_min£º4£¬evict.threads_max£º16
×ÜÌå˼Ï룺evict Ï߳̾¡ÔçÌÔÌÔàÒ³ page µ½´ÅÅÌ£¬Ôö¼Ó evict ÌÔÌÏß³ÌÊý¼Ó¿ìÔàÊý¾ÝÌÔÌ£¬±ÜÃâÓû§ÇëÇóÏ߳̽øÐÐÔàÊý¾ÝÌÔÌ¡£

ÓÅ»¯²ßÂÔ 3£º´æ´¢ÒýÇæ checkpoint ÓÅ»¯
´æ´¢ÒýÇæ checkpoint ¼ì²âµã£¬°Ñµ±Ç°´æ´¢ÒýÇæÔàÊý¾ÝÈ«²¿¼Ç¼µ½´ÅÅÌ¡£´¥·¢Ìõ¼þÈçÏÂ:
¹Ì¶¨ÖÜÆÚ×öÒ»´Î checkpoint ¿ìÕÕ£¬Ä¬ÈÏ 60s
ÔöÁ¿ journal ÈÕÖ¾´ïµ½ 2G
ÉÙ²¿·ÖʵÀý´æÔÚÈçÏÂÏÖÏó£ºÒ»»á¶ù´ÅÅÌ IO ¼¸ºõ¿ÕÏÐ 0%£¬Ò»»á¶ù´ÅÅÌ IO ¶ÌÔÝÐÔ 100%¡£½øÐÐÈçÏÂÓÅ»¯ºó¿ÉÒÔ»º½â¸ÃÎÊÌâ:
checkpoint=(wait=30,log_size=1GB)
¸ÃÓÅ»¯×ÜÌå˼·£ºËõ¶Ì checkpoint ÖÜÆÚ£¬¼õÉÙ checkpoint ÆÚ¼ä»ýѹµÄÔàÊý¾Ý£¬»º½â´ÅÅÌ
IO ¸ßÎÊÌâ¡£
ÒÅÁôÎÊÌ⣺SSD ÅÌÖ»Óм«ÉÙÊý½ÚµãÓиÃÎÊÌ⣬ÔÒòδ֪£¬ºóÐø¼ÌÐø¸ú×Ù¡£

Æ¿¾±µã£º
´úÀí»º´æËùÓпͻ§¶ËµÄÁ´½ÓÐÅÏ¢µ½ÄÚ´æÖУ¬²¢¶¨ÆÚ¸üе½ config ¿âµÄ system.sessions
±íÖС£
´óÁ÷Á¿´óÊý¾ÝÁ¿¼¯Èº¿Í»§¶ËÁ´½ÓÖڶ࣬´óÁ¿¸üРsessions ±í£¬×îÖÕÖ÷·ÖƬÐÔÄÜϽµÒýÆðÕû¸ö¼¯ÈºÐÔÄÜ˲¼äÊý±¶Ï½µ¡£

ÓÅ»¯·½·¨£º
config ¿âµÄ system.sessions ±íÆôÓÃ·ÖÆ¬¹¦ÄÜ¡£
mongos ¶¨ÆÚ¸üÐÂÓÅ»¯ÎªÉ¢Áе½²»Í¬Ê±¼äµã½øÐиüС£

ÓÅ»¯²ßÂÔ 4£º
sharding ¼¯Èº system.session ÓÅ»¯
¸ÃÓÅ»¯×ÜÌå˼·£º
֮ǰ´úÀí¼¯ÖÐʽ¸üе¥¸ö·ÖƬ£¬ÓÅ»¯ÎªÉ¢Áе½²»Í¬Ê±¼äµã¸üжà¸ö·ÖƬ¡£
¸ÃÓÅ»¯ºó system.sessions ±í¸üÐÂÒýÆðµÄ˲¼äÐÔÄÜÊý±¶½µµÍºÍ´óÁ¿ÂýÈÕÖ¾ÎÊÌâµÃµ½Á˽â¾ö¡£

ÓÅ»¯²ßÂÔ 5£ºtcmalloc ÄÚ´æÓÅ»¯
db.serverStatus().tcmalloc ¼à¿Ø·¢ÏÖ²¿·Ö mongod ʵÀý pageheap¡¢ÄÚ´æË鯬µÈÏûºÄ¹ý¸ß¡£Í¨¹ýϵͳµ÷Ó÷ÖÎöµÃ³ö£ºÄÚ´æË鯬ÂÊ¡¢pageheap
¹ý¸ß£¬»áÒýÆð·ÖÅäÄÚ´æ¹ý³Ì±äÂý£¬ÒýÆð¼¯ÈºÐÔÄÜÑÏÖØÏ½µ¡£
¸ÃÓÅ»¯×ÜÌå˼·£º
½èÖú gperftools Èý·½¿âÖÐ tcmalloc ÄÚ´æ¹ÜÀíÄ£¿é£¬ÊµÊ±¶¯Ì¬µ÷Õû tcmalloc
ÄÚ´æ Release Rate£¬¾¡ÔçÊÍ·ÅÄڴ棬±ÜÃâ´æ´¢ÒýÇæ»ñÈ¡ cache ¹ý³Ì×èÈû±äÂý¡£
°¸Àý 2.ÍòÒÚ¼¶Êý¾ÝÁ¿ mongodb ¼¯ÈºÐÔÄÜÊý±¶ÌáÉýÓÅ»¯Êµ¼ù

ÒµÎñ±³¾°£º
¼¯Èº´æ´¢ÀëÏßÊý¾Ý
¼¯Èº×ÜÊý¾ÝÁ¿ÍòÒÚ¼¶
ǰÆÚÖ÷ҪΪÊý¾ÝдÈ룬ҪÇóÍòÒÚ¼¶Êý¾Ý¼¸ÖÜÄÚ¾¡¿ìÈ«²¿Ð´È뼯Ⱥ
ºóÆÚÖ÷ÒªÊǶÁÁ÷Á¿£¬µ¥´Î²éѯÊý¾ÝÌõÊý±È½Ï¶à£¬ÒªÇó¿ìËÙ·µ»Ø
ÿ¸ôÒ»¶¨Ê±¼äÖÜÆÚ(ÖÜΪµ¥Î»)»áÓгÖÐøÐÔ´óÁ¿Ð´Èë

ÓÅ»¯²ßÂÔ 1£º»ù´¡ÐÔÓÅ»¯
·ÖÏíÖ÷ÌâÁùÖжÁд·ÖÀë¡¢Ô¤·ÖƬ¡¢wiredtiger ´æ´¢ÒýÇæÓÅ»¯¡¢session ÓÅ»¯¡¢tcmalloc
ʹÓÃÓÅ»¯µÈ»ù´¡ÐÔÓÅ»¯²ßÂÔͬÑùÊÊÓÃÓڸü¯Èº£¬¾ßÌåÏê¼û¡¶·ÖÏíÖ÷ÌâÁù:°ÙÍò¼¶¸ß²¢·¢¶Áд/ǧÒÚ¼¶Êý¾ÝÁ¿ mongodb
¼¯ÈºÐÔÄÜÊý±¶ÌáÉýÓÅ»¯Êµ¼ù¡·

ÓÅ»¯²ßÂÔ 2£º´æ´¢Ä£ÐÍÓÅ»¯Ç°×´¿ö
ÓÅ»¯Ç°Êý¾ÝÄ£ÐͽṹÈçÏ£º
1.{
2. "_id": ObjectId("5fh2ebd18856960dbac31abc"),
3. "characteristic": "xxxx",
4. "key1": "***",
5. ......
6. "keyn": "***",
7.} |
ÒÔÉÏΪµ¥ÌõÊý¾ÝµÄÊý¾ÝÄ£ÐÍ£¬¸Ã¼¯Èº×ÜÊý¾ÝÁ¿ÍòÒÚ¼¶¡£
ÊýÊ®ÍòÌõÊý¾ÝÓµÓÐͬÑùµÄ characteristic ÌØÐÔ£¬×ÜÌØÐÔÊý×ܼÆÊý°ÙÍò¸ö¡£
Ò»´ÎÐÔ²éѯÊýÊ®¸ö characteristic ºÜÂý¡£
Æ¿¾±µã£º Ò»´ÎÐÔ²éѯÊýÊ®¸ö characteristic ÌØÕ÷Ìõ¼þµÄÊý¾Ý£¬Ã¿¸öÌØÕ÷ÓµÓÐÊý°ÙÍòÊý¾Ý£¬Ò»´Î²éѯ×ܼÆÇ§ÍòÐÐÊý¾Ý¡£ÓÉÓÚÊý¾ÝÁ¿ºÜ´ó£¬Ã¿ÐÐÊý¾Ý¼¸ºõÈ«ÔÚ´ÅÅÌ£¬Ò»´Î²éѯÐèҪǧÍò´Î
IO ²Ù×÷£¬²éѯ³ÉΪƿ¾±¡£

ÓÅ»¯²ßÂÔ 2£ºµÚÒ»ÂÖÊý¾Ý´æ´¢Ä£ÐÍÓÅ»¯£º
1.{
2. "_id": ObjectId("5f29ebd18856960dbac31abc"),
3. "characteristic": "xxxx"
4. "group": [
5. {
6. "key1": "***"
7. ......
8. "keyn": "***"
9. }, #¸ÃcharacteristicϵÚÒ»ÌõÊý¾Ý
10. ......
11. {
12. "key1": "***"
13. ......
14. "keyn": "***"
15. } #¸ÃcharacteristicϵÚnÌõÊý¾Ý
16. ]
17.} |
¸ÃÊý¾ÝÄ£ÐͰÑÏàͬ characteristic ÌØÐÔµÄÊýÊ®ÍòÊý¾ÝºÏ²¢µ½ÎªÒ»ÌõÊý¾Ý£¬¼õÉÙ´ÅÅÌ IO ²Ù×÷£¬Õû¸ö¶ÁÐÔÄÜ»áÓнü°Ù±¶ÌáÉý¡£
Æ¿¾±µã£º¸ÃÂÖÓÅ»¯½â¾öÁ˶ÁÆ¿¾±£¬È´ÒýÈëÁËеÄдƿ¾±¡£
ͨ¹ý $addToSet ·½Ê½Ïò group Êý×éÖÐÈ¥ÖØ×·¼ÓÊý¾Ý£¬Êý¾Ý³¤¶ÈÔ½À´Ô½³¤£¬´ÅÅÌ IO ѹÁ¦Ô½À´Ô½´ó¡¢Ð´ÐÔÄܳÉΪÐÂµÄÆ¿¾±¡£

ÓÅ»¯²ßÂÔ 2£ºµÚ¶þÂÖÊý¾Ý´æ´¢Ä£ÐÍÓÅ»¯£º
1.{
2. "_id": ObjectId("5f29ebd18856960dbac31abc"),
3. "characteristic": "xxxx",
4. "hashNum": num,
5. "group": [
6. {
7. "key1": "***",
8. ......
9. "keyn": "***",
10. }, #¸ÃcharacteristicϵÚÒ»ÌõÊý¾Ý
11. ......
12. {
13. "key1": "***",
14. ......
15. "keyn": "***",
16. } #¸ÃcharacteristicϵÚnÌõÊý¾Ý
17. ]
} |
ÈçÉÏ£¬°Ñͬһ¸ö characteristic ÌØÕ÷µÄÊýÊ®Íò/Êý°ÙÍòÊý¾ÝÉ¢ÁÐΪ 500 ·Ý£¬ÕâÑùºÏ²¢ºó
group Êý×éÖÐÒ²¾ÍÖ»°üº¬Êý°ÙÌõÊý¾ÝÐÅÏ¢£¬ÕâÑùºÏ²¢ºóµ¥ÌõÊý¾Ý¹ý´ó¡¢mongodb µ¥ÌõÊý¾Ý 64M
ÏÞÖÆÎÊÌâ¡¢´ÅÅÌ IO ¹ý¸ßµÈÆ¿¾±ÎÊÌâ¶¼¿ÉÒԵõ½½â¾ö¡£
×ÜÌåÊý¾ÝÄ£ÐÍÓÅ»¯Ë¼Â·£ºÍ¨¹ýºÏÀíµÄÊý¾ÝºÏ²¢²Ù×÷À´¼õÉÙÍøÂç IO¡¢´ÅÅÌ IO¡¢mongodb Äں˴¦Àíʱ¼ä£¬×îÖÕʹ¶ÁºÍд´ïµ½Æ½ºâ¡£
·ÖÏíÖ÷ÌâÆß£º³É±¾½ÚÊ¡-¼Çij·þÎñǧÒÚ¼¶Êý¾ÝÇ¨ÒÆ mongodb£¬°Ų̀
SSD ·þÎñÆ÷½ÚÊ¡ÓÅ»¯Êµ¼ù

³É±¾½ÚÊ¡-ǧÒÚ¼¶Êý¾ÝÇ¨ÒÆ mongodb£¬°Ų̀ SSD ·þÎñÆ÷½ÚÊ¡ÓÅ»¯Êµ¼ù

Ç¨ÒÆ±³¾°£º
ÐèÒªÇ¨ÒÆµÄÊý¾ÝÁ¿ÊýǧÒÚ¼¶
Ô´¼¯Èº´ÅÅ̽ôÕÅ£¬ÒµÎñдÈë¿ì£¬ÐèÒª¿ìËÙÍê³ÉÊý¾ÝÇ¨ÒÆ
Ô´¼¯ÈºÊý¾Ý´æ´¢ÓÚ¸ß io ssd ·þÎñÆ÷
ÒµÎñ¶ÔÐÔÄÜû̫¸ßÒªÇó
Ä¿µÄ mongodb ¼¯Èº²ÉÓÃµÍ io ´óÈÝÁ¿ sata ÅÌ
Ç¨ÒÆÄѵ㣺
ÈçºÎ¿ìËÙÍê³ÉÊý¾ÝÇ¨ÒÆ£¿

Æ¿¾±µã£º
ÓÉÓÚÄ¿µÄ¼¯ÈºÎªµÍ io ´óÈÝÁ¿ sata ÅÌ£¬Ç¨ÒÆÌ«Âý£¬Ô´¼¯Èº´ÅÅÌÓÐдÂú·çÏÕ

ÓÅ»¯²ßÂÔ£º
ͬ²½Êý¾Ýµ½´óÈÝÁ¿ SSD ÖÐת¼¯Èº
¿½±´ÖÐת¼¯ÈºÊý¾Ýµ½Ä¿±ê´óÈÝÁ¿ SATA ÅÌ·þÎñÆ÷
¼ÓÔØÊý¾Ý

³É±¾½ÚÊ¡£º
mongodb ĬÈ쵀 snappy ѹËõË㷨ѹËõ±ÈԼΪ 2.2-3.5 ±¶
zlib ѹËõË㷨ѹËõ±ÈԼΪ 4.5-7.5 ±¶(±¾´ÎÇ¨ÒÆ²ÉÓà zlib ¸ßѹËõËã·¨)
ǧÒÚ¼¶Êý¾ÝÇ¨ÒÆ mongodb ÊÕÒæ£º
Ô´¼¯Èº´ÅÅÌÏûºÄ:Ä¿µÄ¼¯Èº´ÅÅÌÏûºÄ= 8:1(¼´Ê¹Ä¿µÄ mongo ¼¯ÈºÒ²Óà SSD ·þÎñÆ÷£¬³É±¾Ò²¿ÉÒÔ½ÚÊ¡Æß±¶)
Ô´¼¯ÈºÎïÀí×ÊÔ´£º°Ų̀ SSD ·þÎñÆ÷
Ä¿µÄ mongodb ¼¯Èº×ÊÔ´ÏûºÄ£º6 ̨ SATA ÅÌ·þÎñÆ÷
·ÖÏíÖ÷Ìâ°Ë£ºÕ¹Íû-ÈçºÎʵÏÖ mongodb Óë SQL ÈÚºÏ


ÎÊÌâ±³¾°£º
Ëæ×Å mongodb-4.2 °æ±¾ÖжԷֲ¼Ê½ÊÂÎñµÄÖ§³Ö£¬ÒÔ¼° mongodb-4.4 °æ±¾²úÆ·¹æ»®Â·Ïßͼ¿ÉÒÔ¿´³ö£¬mongodb
³ýÁ˱£³Ö nosql ÌØÐÔÍ⣬»¹ÔÚ³¯×Å newSql ·½ÏòǰÐС£µ«ÊÇÔÚʵ¼ÊÒµÎñ½ÓÈëÖз¢ÏÖÒÔÏÂÏÖÏó:
¿ª·¢Ï°¹ßÁË SQL£¬×ª mongodb Óï·¨¸÷ÖÖ²»Ï°¹ß¡£
ÔËÓªºÍÊý¾Ý·ÖÎö¸ÚλÈËÔ±Ö»»áд SQL£¬²»»á mongo Óï¾ä¡£
ÎÒÃÇÄÜ×öʲô£¿
mongos ´úÀíÔö¼Ó mongodb ÐÒéºÍ SQL ת»»Ö§³Ö£¬ÓÃ×îС¿ª·¢³É±¾Âú×ãÒµÎñ SQL
ÐèÇó¡£
5%-10%×óÓÒµÄ SQL ÐÒéÖ§³Ö£¬Âú×ã 90%µÄÓû§ÐèÇó¡£
·ÖÏíÖ÷Ìâ¾Å£ºÆäËû-ÄÇЩÄêÎÒÃDzȹýµÄ¿Ó


¡°ÄÇЩÄêÎÒÃDzȹýµÄ¿Ó¡± £º
ʵ¼ÊÒµÎñ½ÓÈë mongodb Êý¾Ý¿â¹ý³ÌÖУ¬ÎÒÃDzȹýºÜ¶à¿Ó£¬°üÀ¨ÒµÎñ²»ºÏÀíʹÓᢲ»ºÏÀíÔËά¡¢¼¯Èº²»ºÏÀíÅäÖá¢mongodb
Äں˲ȿӡ¢Îó²Ù×÷µÈ£¬ÉõÖÁ³öÏÖ¹ýͬһ¸öºËÐÄÒµÎñ¼¸´Î¶¶¶¯¡£
±¾´Î·ÖÏíÖм¯ÈºÓÅ»¯Ö»ÁоÙÁËÖ÷ÒªµÄÓÅ»¯¹ý³Ì£¬Êµ¼ÊÓÅ»¯¹ý³Ì±È±¾´Î·ÖÏíÄÚÈݸü¼Ó¸´ÔÓ¡£
|