±à¼ÍƼö: |
±¾ÆªÎÄÕÂÖ÷Òª½éÉÜÁËÊý¾Ý¿âÆ¿¾±¡¢·Ö¿â·Ö±í¡¢´¹Ö±·Ö±í¡¢·Ö¿â·Ö±í¹¤¾ß¡¢·Ö¿â·Ö±í²½ÖèÒÔ¼°Ïà¹ØµÄ¹¤¾ßµÈ¡£
À´×ÔÓÚinfoq,ÓÉ»ðÁú¹ûÈí¼þAnna±à¼¡¢ÍƼö¡£ |
|
Êý¾Ý¿âÆ¿¾±
²»¹ÜÊÇ IO Æ¿¾±£¬»¹ÊÇ CPU Æ¿¾±£¬×îÖÕ¶¼»áµ¼ÖÂÊý¾Ý¿âµÄ»îÔ¾Á¬½ÓÊýÔö¼Ó£¬½ø¶ø±Æ½üÉõÖÁ´ïµ½Êý¾Ý¿â¿É³ÐÔØ»îÔ¾Á¬½ÓÊýµÄãÐÖµ¡£ÔÚÒµÎñ
Service À´¿´¾ÍÊÇ£¬¿ÉÓÃÊý¾Ý¿âÁ¬½ÓÉÙÉõÖÁÎÞÁ¬½Ó¿ÉÓ᣽ÓÏÂÀ´¾Í¿ÉÒÔÏëÏóÁ˰ɣ¨²¢·¢Á¿¡¢ÍÌÍÂÁ¿¡¢±ÀÀ££©¡£
IO Æ¿¾±
µÚÒ»ÖÖ£º´ÅÅ̶Á IO Æ¿¾±£¬ÈȵãÊý¾ÝÌ«¶à£¬Êý¾Ý¿â»º´æ·Å²»Ï£¬Ã¿´Î²éѯʱ»á²úÉú´óÁ¿µÄ IO£¬½µµÍ²éѯËÙ¶È
-> ·Ö¿âºÍ´¹Ö±·Ö±í
µÚ¶þÖÖ£ºÍøÂç IO Æ¿¾±£¬ÇëÇóµÄÊý¾ÝÌ«¶à£¬ÍøÂç´ø¿í²»¹» ->·Ö¿â
CPU Æ¿¾±
µÚÒ»ÖÖ£ºSQL ÎÊÌ⣬Èç SQL Öаüº¬ join£¬group by£¬order by£¬·ÇË÷Òý×Ö¶ÎÌõ¼þ²éѯµÈ£¬Ôö¼Ó
CPU ÔËËãµÄ²Ù×÷ -> SQL ÓÅ»¯£¬½¨Á¢ºÏÊʵÄË÷Òý£¬ÔÚÒµÎñ Service ²ã½øÐÐÒµÎñ¼ÆËã¡£
µÚ¶þÖÖ£ºµ¥±íÊý¾ÝÁ¿Ì«´ó£¬²éѯʱɨÃèµÄÐÐÌ«¶à£¬SQL ЧÂʵͣ¬CPU ÂÊÏȳöÏÖÆ¿¾± -> ˮƽ·Ö±í¡£
·Ö¿â·Ö±í
ˮƽ·Ö¿â

¸ÅÄî
ÒÔ×Ö¶ÎΪÒÀ¾Ý£¬°´ÕÕÒ»¶¨²ßÂÔ£¨hash¡¢range µÈ£©£¬½«Ò»¸ö¿âÖеÄÊý¾Ý²ð·Öµ½¶à¸ö¿âÖС£
½á¹û
ÿ¸ö¿âµÄ½á¹¹¶¼Ò»Ñù£»
ÿ¸ö¿âµÄÊý¾Ý¶¼²»Ò»Ñù£¬Ã»Óн»¼¯£»
ËùÓпâµÄ²¢¼¯ÊÇÈ«Á¿Êý¾Ý£»
³¡¾°
ϵͳ¾ø¶Ô²¢·¢Á¿ÉÏÀ´ÁË£¬·Ö±íÄÑÒÔ¸ù±¾ÉϽâ¾öÎÊÌ⣬²¢ÇÒ»¹Ã»ÓÐÃ÷ÏÔµÄÒµÎñ¹éÊôÀ´´¹Ö±·Ö¿â¡£
·ÖÎö
¿â¶àÁË£¬io ºÍ cpu µÄѹÁ¦×ÔÈ»¿ÉÒԳɱ¶»º½â¡£
ˮƽ·Ö±í

¸ÅÄî
ÒÔ×Ö¶ÎΪÒÀ¾Ý£¬°´ÕÕÒ»¶¨²ßÂÔ£¨hash¡¢range µÈ£©£¬½«Ò»¸ö±íÖеÄÊý¾Ý²ð·Öµ½¶à¸ö±íÖС£
½á¹û
ÿ¸ö±íµÄ½á¹¹¶¼Ò»Ñù£»
ÿ¸ö±íµÄÊý¾Ý¶¼²»Ò»Ñù£¬Ã»Óн»¼¯£»
ËùÓбíµÄ²¢¼¯ÊÇÈ«Á¿Êý¾Ý£»
³¡¾°
ϵͳ¾ø¶Ô²¢·¢Á¿²¢Ã»ÓÐÉÏÀ´£¬Ö»Êǵ¥±íµÄÊý¾ÝÁ¿Ì«¶à£¬Ó°ÏìÁË SQL ЧÂÊ£¬¼ÓÖØÁË CPU ¸ºµ££¬ÒÔÖÁÓÚ³ÉΪƿ¾±¡£
·ÖÎö
±íµÄÊý¾ÝÁ¿ÉÙÁË£¬µ¥´Î SQL Ö´ÐÐЧÂʸߣ¬×ÔÈ»¼õÇáÁË CPU µÄ¸ºµ£¡£
´¹Ö±·Ö¿â

¸ÅÄî
ÒÔ±íΪÒÀ¾Ý£¬°´ÕÕÒµÎñ¹éÊô²»Í¬£¬½«²»Í¬µÄ±í²ð·Öµ½²»Í¬µÄ¿âÖС£
½á¹û
ÿ¸ö¿âµÄ½á¹¹¶¼²»Ò»Ñù£»
ÿ¸ö¿âµÄÊý¾ÝÒ²²»Ò»Ñù£¬Ã»Óн»¼¯£»
ËùÓпâµÄ²¢¼¯ÊÇÈ«Á¿Êý¾Ý£»
³¡¾°
ϵͳ¾ø¶Ô²¢·¢Á¿ÉÏÀ´ÁË£¬²¢ÇÒ¿ÉÒÔ³éÏó³öµ¥¶ÀµÄÒµÎñÄ£¿é¡£
·ÖÎö
µ½ÕâÒ»²½£¬»ù±¾ÉϾͿÉÒÔ·þÎñ»¯ÁË¡£ÀýÈç£¬Ëæ×ÅÒµÎñµÄ·¢Õ¹Ò»Ð©¹«ÓõÄÅäÖÃ±í¡¢×Öµä±íµÈÔ½À´Ô½¶à£¬Õâʱ¿ÉÒÔ½«ÕâЩ±í²ðµ½µ¥¶ÀµÄ¿âÖУ¬ÉõÖÁ¿ÉÒÔ·þÎñ»¯¡£ÔÙÓУ¬Ëæ×ÅÒµÎñµÄ·¢Õ¹·õ»¯³öÁËÒ»Ì×ÒµÎñģʽ£¬Õâʱ¿ÉÒÔ½«Ïà¹ØµÄ±í²ðµ½µ¥¶ÀµÄ¿âÖУ¬ÉõÖÁ¿ÉÒÔ·þÎñ»¯¡£
´¹Ö±·Ö±í

1¡¢¸ÅÄ
ÒÔ×Ö¶ÎΪÒÀ¾Ý£¬°´ÕÕ×ֶεĻîÔ¾ÐÔ£¬½«±íÖÐ×ֶβ𵽲»Í¬µÄ±í£¨Ö÷±íºÍÀ©Õ¹±í£©ÖС£
2¡¢½á¹û£º
ÿ¸ö±íµÄ½á¹¹¶¼²»Ò»Ñù£»
ÿ¸ö±íµÄÊý¾ÝÒ²²»Ò»Ñù£¬Ò»°ãÀ´Ëµ£¬Ã¿¸ö±íµÄ×Ö¶ÎÖÁÉÙÓÐÒ»Áн»¼¯£¬Ò»°ãÊÇÖ÷¼ü£¬ÓÃÓÚ¹ØÁªÊý¾Ý£»
ËùÓбíµÄ²¢¼¯ÊÇÈ«Á¿Êý¾Ý£»
3¡¢³¡¾°£º
ϵͳ¾ø¶Ô²¢·¢Á¿²¢Ã»ÓÐÉÏÀ´£¬±íµÄ¼Ç¼²¢²»¶à£¬µ«ÊÇ×ֶζ࣬²¢ÇÒÈȵãÊý¾ÝºÍ·ÇÈȵãÊý¾ÝÔÚÒ»Æð£¬µ¥ÐÐÊý¾ÝËùÐèµÄ´æ´¢¿Õ¼ä½Ï´ó¡£ÒÔÖÁÓÚÊý¾Ý¿â»º´æµÄÊý¾ÝÐмõÉÙ£¬²éѯʱ»áÈ¥¶Á´ÅÅÌÊý¾Ý²úÉú´óÁ¿µÄËæ»ú¶Á
IO£¬²úÉú IO Æ¿¾±¡£
4¡¢·ÖÎö£º
¿ÉÒÔÓÃÁбíÒ³ºÍÏêÇéÒ³À´°ïÖúÀí½â¡£´¹Ö±·Ö±íµÄ²ð·ÖÔÔòÊǽ«ÈȵãÊý¾Ý£¨¿ÉÄÜ»áÈßÓླ£Ò»Æð²éѯµÄÊý¾Ý£©·ÅÔÚÒ»Æð×÷ΪÖ÷±í£¬·ÇÈȵãÊý¾Ý·ÅÔÚÒ»Æð×÷ΪÀ©Õ¹±í¡£ÕâÑù¸ü¶àµÄÈȵãÊý¾Ý¾ÍÄܱ»»º´æÏÂÀ´£¬½ø¶ø¼õÉÙÁËËæ»ú¶Á
IO¡£²ðÁËÖ®ºó£¬ÒªÏë»ñµÃÈ«²¿Êý¾Ý¾ÍÐèÒª¹ØÁªÁ½¸ö±íÀ´È¡Êý¾Ý¡£
µ«¼Çס£¬Ç§Íò±ðÓà join£¬ÒòΪ join ²»½ö»áÔö¼Ó CPU ¸ºµ£²¢ÇһὲÁ½¸ö±íñîºÏÔÚÒ»Æð£¨±ØÐëÔÚÒ»¸öÊý¾Ý¿âʵÀýÉÏ£©¡£¹ØÁªÊý¾Ý£¬Ó¦¸ÃÔÚÒµÎñ
Service ²ã×öÎÄÕ£¬·Ö±ð»ñÈ¡Ö÷±íºÍÀ©Õ¹±íÊý¾ÝÈ»ºóÓùØÁª×ֶιØÁªµÃµ½È«²¿Êý¾Ý¡£
·Ö¿â·Ö±í¹¤¾ß
1¡¢sharding-sphere£ºjar£¬Ç°ÉíÊÇ sharding-jdbc£»
2¡¢TDDL£ºjar£¬Taobao Distribute Data Layer£»
3¡¢Mycat£ºÖмä¼þ¡£
×¢£º¹¤¾ßµÄÀû±×£¬Çë×ÔÐе÷ÑУ¬¹ÙÍøºÍÉçÇøÓÅÏÈ¡£
·Ö¿â·Ö±í²½Öè
¸ù¾ÝÈÝÁ¿£¨µ±Ç°ÈÝÁ¿ºÍÔö³¤Á¿£©ÆÀ¹À·Ö¿â»ò·Ö±í¸öÊý -> Ñ¡ key£¨¾ùÔÈ£©-> ·Ö±í¹æÔò£¨hash
»ò range µÈ£©-> Ö´ÐУ¨Ò»°ã˫д£©-> À©ÈÝÎÊÌ⣨¾¡Á¿¼õÉÙÊý¾ÝµÄÒÆ¶¯£©¡£
·Ö¿â·Ö±íÎÊÌâ
·Ç partition key µÄ²éѯÎÊÌ⣺£¨Ë®Æ½·Ö¿â·Ö±í£¬²ð·Ö²ßÂÔΪ³£ÓÃµÄ hash ·¨£©
³ýÁË partition key Ö»ÓÐÒ»¸ö·Ç partition key ×÷ΪÌõ¼þ²éѯ
Ó³Éä·¨

»ùÒò·¨

×¢£ºÐ´Èëʱ£¬»ùÒò·¨Éú³É user_id£¬Èçͼ¡£¹ØÓÚ xbit »ùÒò£¬ÀýÈçÒª·Ö 8 ÕÅ±í£¬23=8£¬¹Ê
x È¡ 3£¬¼´ 3bit »ùÒò¡£¸ù¾Ý user_id ²éѯʱ¿ÉÖ±½Óȡģ·Óɵ½¶ÔÓ¦µÄ·Ö¿â»ò·Ö±í¡£¸ù¾Ý
user_name ²éѯʱ£¬ÏÈͨ¹ý user_name_code Éú³Éº¯ÊýÉú³É user_name_code
ÔÙ¶ÔÆäȡģ·Óɵ½¶ÔÓ¦µÄ·Ö¿â»ò·Ö±í¡£
id Éú³É³£Óà snowflake Ëã·¨¡£
¶ËÉϳýÁË partition key ²»Ö¹Ò»¸ö·Ç partition key ×÷ΪÌõ¼þ²éѯ
Ó³Éä·¨

ÈßÓà·¨

×¢£º°´ÕÕ order_id »ò buyer_id ²éѯʱ·Óɵ½ db_o_buyer ¿âÖУ¬°´ÕÕ
seller_id ²éѯʱ·Óɵ½ db_o_seller ¿âÖС£
ºǫ́³ýÁË partition key »¹Óи÷ÖÖ·Ç partition key ×éºÏÌõ¼þ²éѯ
NoSQL ·¨

ÈßÓà·¨

·Ç partition key ¿ç¿â¿ç±í·ÖÒ³²éѯÎÊÌâ
£¨Ë®Æ½·Ö¿â·Ö±í£¬²ð·Ö²ßÂÔΪ³£ÓÃµÄ hash ·¨£©
×¢£ºÓà NoSQL ·¨½â¾ö£¨ES µÈ£©¡£
À©ÈÝÎÊÌ⣨ˮƽ·Ö¿â·Ö±í£¬²ð·Ö²ßÂÔΪ³£ÓÃµÄ hash ·¨£©
ˮƽÀ©Èݿ⣨Éý¼¶´Ó¿â·¨)

×¢£ºÀ©ÈÝÊdzɱ¶µÄ¡£
ˮƽÀ©ÈÝ±í£¨Ë«Ð´Ç¨ÒÆ·¨£©
µÚÒ»²½£º£¨Í¬²½Ë«Ð´£©Ó¦ÓÃÅäÖÃ˫д£¬²¿Êð£»
µÚ¶þ²½£º£¨Í¬²½Ë«Ð´£©½«ÀÏ¿âÖеÄÀÏÊý¾Ý¸´ÖƵ½Ð¿âÖУ»
µÚÈý²½£º£¨Í¬²½Ë«Ð´£©ÒÔÀÏ¿âΪ׼У¶ÔпâÖеÄÀÏÊý¾Ý£»
µÚËIJ½£º£¨Í¬²½Ë«Ð´£©Ó¦ÓÃÈ¥µô˫д£¬²¿Êð£»
×¢£ºË«Ð´ÊÇͨÓ÷½°¸¡£
·Ö¿â·Ö±í×ܽá
·Ö¿â·Ö±í£¬Ê×ÏȵÃÖªµÀÆ¿¾±ÔÚÄÄÀȻºó²ÅÄܺÏÀíµØ²ð·Ö£¨·Ö¿â»¹ÊÇ·Ö±í£¿Ë®Æ½»¹ÊÇ´¹Ö±£¿·Ö¼¸¸ö£¿£©¡£ÇÒ²»¿ÉΪÁË·Ö¿â·Ö±í¶ø²ð·Ö¡£
Ñ¡ key ºÜÖØÒª£¬¼ÈÒª¿¼Âǵ½²ð·Ö¾ùÔÈ£¬Ò²Òª¿¼Âǵ½·Ç partition key µÄ²éѯ¡£
Ö»ÒªÄÜÂú×ãÐèÇ󣬲ð·Ö¹æÔòÔ½¼òµ¥Ô½ºÃ¡£
|