¹ØÓÚInnoDBË÷Òý£¬ÎÒÃÇ¿ÉÄÜÖªµÀInnDBË÷ÒýÊÇÓÃB+Ê÷ʵÏֵģ¬¶øB+Ê÷¾ÍÊÇÒ»ÖÖÄÜÓÅ»¯²éѯËٶȵÄÊý¾Ý½á¹¹¡£µ«ÎÒÃÇÓÖûÏë¹ýÕâÑùÒ»¸öÎÊÌ⣬ÄÜÓÅ»¯²éѯËٶȵÄÊý¾Ý½á¹¹Óкܶ࣬ΪʲôInnoDBÒª²ÉÓÃB+Ê÷£¿
¹þÏ£±íÊÇÒ»ÖÖÒÔ¼ü - Öµ£¨key-value£©´æ´¢Êý¾ÝµÄ½á¹¹£¬ÎÒÃÇÖ»ÒªÊäÈë´ý²éÕҵļü¼´ key£¬¾Í¿ÉÒÔÕÒµ½Æä¶ÔÓ¦µÄÖµ¼´ Value¡£¹þÏ£µÄ˼·ºÜ¼òµ¥£¬°ÑÖµ·ÅÔÚÊý×éÀÓÃÒ»¸ö¹þÏ£º¯Êý°Ñ key »»Ëã³ÉÒ»¸öÈ·¶¨µÄλÖã¬È»ºó°Ñ value ·ÅÔÚÊý×éµÄÕâ¸öλÖá£
²»¿É±ÜÃâµØ£¬¶à¸ö key Öµ¾¹ý¹þÏ£º¯ÊýµÄ»»Ë㣬»á³öÏÖͬһ¸öÖµµÄÇé¿ö¡£´¦ÀíÕâÖÖÇé¿öµÄÒ»ÖÖ·½·¨ÊÇ£¬À³öÒ»¸öÁ´±í¡£
¼ÙÉèÏÖÔÚά»¤×ÅÒ»¸öÉí·ÝÖ¤ÐÅÏ¢ºÍÐÕÃûµÄ±í£¬ÐèÒª¸ù¾ÝÉí·ÝÖ¤ºÅ²éÕÒ¶ÔÓ¦µÄÃû×Ö£¬Õâʱ¶ÔÓ¦µÄ¹þÏ£Ë÷ÒýµÄʾÒâͼÈçÏÂËùʾ£º
ͼÖУ¬User2 ºÍ User4 ¸ù¾ÝÉí·ÝÖ¤ºÅËã³öÀ´µÄÖµ¶¼ÊÇ N£¬µ«Ã»¹Øϵ£¬ºóÃ滹¸úÁËÒ»¸öÁ´±í¡£¼ÙÉ裬ÕâʱºòÄãÒª²é ID_card_n2 ¶ÔÓ¦µÄÃû×ÖÊÇʲô£¬´¦Àí²½Öè¾ÍÊÇ£ºÊ×ÏÈ£¬½« ID_card_n2 ͨ¹ý¹þÏ£º¯ÊýËã³ö N£»È»ºó£¬°´Ë³Ðò±éÀú£¬ÕÒµ½ User2¡£
ÐèҪעÒâµÄÊÇ£¬Í¼ÖÐËĸö ID_card_n µÄÖµ²¢²»ÊǵÝÔöµÄ£¬ÕâÑù×öµÄºÃ´¦ÊÇÔö¼ÓÐ嵀 User ʱËٶȻáºÜ¿ì£¬Ö»ÐèÒªÍùºó×·¼Ó¡£µ«È±µãÊÇ£¬ÒòΪ²»ÊÇÓÐÐòµÄ£¬ËùÒÔ¹þÏ£Ë÷Òý×öÇø¼ä²éѯµÄËÙ¶ÈÊǺÜÂýµÄ¡£
¿ÉÒÔÉèÏëÏ£¬Èç¹ûÏÖÔÚÒªÕÒÉí·ÝÖ¤ºÅÔÚID_card_X, ID_card_YÕâ¸öÇø¼äµÄËùÓÐÓû§£¬¾Í±ØÐëÈ«²¿É¨ÃèÒ»±éÁË¡£
ËùÒÔ£¬¹þÏ£±íÕâÖֽṹÊÊÓÃÓÚÖ»ÓеÈÖµ²éѯµÄ³¡¾°£¬±ÈÈç Memcached ¼°ÆäËûһЩ NoSQL ÒýÇæ¡£
ÓÐÐòÊý×éÔÚµÈÖµ²éѯºÍ·¶Î§²éѯ³¡¾°ÖеÄÐÔÄܾͶ¼·Ç³£ÓÅÐã¡£»¹ÊÇÉÏÃæÕâ¸ö¸ù¾ÝÉí·ÝÖ¤ºÅ²éÃû×ÖµÄÀý×Ó£¬Èç¹ûÎÒÃÇʹÓÃÓÐÐòÊý×éÀ´ÊµÏֵĻ°£¬Ê¾ÒâͼÈçÏÂËùʾ£º
ÕâÀïÎÒÃǼÙÉèÉí·ÝÖ¤ºÅûÓÐÖظ´£¬Õâ¸öÊý×é¾ÍÊÇ°´ÕÕÉí·ÝÖ¤ºÅµÝÔöµÄ˳Ðò±£´æµÄ¡£ÕâʱºòÈç¹ûÄãÒª²é ID_card_n2 ¶ÔÓ¦µÄÃû×Ö£¬Óöþ·Ö·¨¾Í¿ÉÒÔ¿ìËٵõ½£¬Õâ¸öʱ¼ä¸´ÔÓ¶ÈÊÇ O(log(N))¡£
ͬʱºÜÏÔÈ»£¬Õâ¸öË÷Òý½á¹¹Ö§³Ö·¶Î§²éѯ¡£Òª²éÉí·ÝÖ¤ºÅÔÚID_card_X, ID_card_YÇø¼äµÄ User£¬¿ÉÒÔÏÈÓöþ·Ö·¨ÕÒµ½ ID_card_X£¨Èç¹û²»´æÔÚ ID_card_X£¬¾ÍÕÒµ½´óÓÚ ID_card_X µÄµÚÒ»¸ö User£©£¬È»ºóÏòÓÒ±éÀú£¬Ö±µ½²éµ½µÚÒ»¸ö´óÓÚ ID_card_Y µÄÉí·ÝÖ¤ºÅ£¬Í˳öÑ»·¡£
Èç¹û½ö½ö¿´²éѯЧÂÊ£¬ÓÐÐòÊý×é¾ÍÊÇ×îºÃµÄÊý¾Ý½á¹¹ÁË¡£µ«ÊÇ£¬ÔÚÐèÒª¸üÐÂÊý¾ÝµÄʱºò¾ÍÂé·³ÁË£¬ÍùÖмä²åÈëÒ»¸ö¼Ç¼¾Í±ØÐëµÃŲ¶¯ºóÃæËùÓеļǼ£¬³É±¾Ì«¸ß¡£
ËùÒÔ£¬ÓÐÐòÊý×éË÷ÒýÖ»ÊÊÓÃÓÚ¾²Ì¬´æ´¢ÒýÇ棬±ÈÈçÒª±£´æµÄÊÇ 2017 Äêij¸ö³ÇÊеÄËùÓÐÈË¿ÚÐÅÏ¢£¬ÕâÀ಻»áÔÙÐ޸ĵÄÊý¾Ý¡£
ÉÏÃæ¸ù¾ÝÉí·ÝÖ¤ºÅ²éÃû×ÖµÄÀý×Ó£¬Èç¹ûÎÒÃÇÓöþ²æËÑË÷Ê÷À´ÊµÏֵĻ°£¬Ê¾ÒâͼÈçÏÂËùʾ£º
¶þ²æËÑË÷Ê÷µÄÌصãÊÇ£ºÃ¿¸ö½ÚµãµÄ×ó¶ù×ÓСÓÚ¸¸½Úµã£¬¸¸½ÚµãÓÖСÓÚÓÒ¶ù×Ó¡£ÕâÑùÈç¹ûÄãÒª²é ID_card_n2 µÄ»°£¬°´ÕÕͼÖеÄËÑË÷˳Ðò¾ÍÊÇ°´ÕÕ UserA -> UserC -> UserF -> User2 Õâ¸ö·¾¶µÃµ½¡£Õâ¸öʱ¼ä¸´ÔÓ¶ÈÊÇ O(log(N))¡£
µ±È»ÎªÁËά³Ö O(log(N)) µÄ²éѯ¸´ÔӶȣ¬¾ÍÐèÒª±£³ÖÕâ¿ÃÊ÷ÊÇƽºâ¶þ²æÊ÷¡£ÎªÁË×öÕâ¸ö±£Ö¤£¬¸üеÄʱ¼ä¸´ÔÓ¶ÈÒ²ÊÇ O(log(N))¡£
Ê÷¿ÉÒÔÓжþ²æ£¬Ò²¿ÉÒÔÓжà²æ¡£¶à²æÊ÷¾ÍÊÇÿ¸ö½ÚµãÓжà¸ö¶ù×Ó£¬¶ù×ÓÖ®¼äµÄ´óС±£Ö¤´Ó×óµ½ÓÒµÝÔö¡£¶þ²æÊ÷ÊÇËÑË÷ЧÂÊ×î¸ßµÄ£¬µ«ÊÇʵ¼ÊÉÏ´ó¶àÊýµÄÊý¾Ý¿â´æ´¢È´²¢²»Ê¹Óöþ²æÊ÷¡£ÆäÔÒòÊÇ£¬Ë÷Òý²»Ö¹´æÔÚÄÚ´æÖУ¬»¹ÒªÐ´µ½´ÅÅÌÉÏ¡£
¿ÉÒÔÏëÏóÒ»ÏÂÒ»¿Ã 100 Íò½ÚµãµÄƽºâ¶þ²æÊ÷£¬Ê÷¸ß 20¡£Ò»´Î²éѯ¿ÉÄÜÐèÒª·ÃÎÊ 20 ¸öÊý¾Ý¿é¡£ÔÚ»úеӲÅÌʱ´ú£¬´Ó´ÅÅÌËæ»ú¶ÁÒ»¸öÊý¾Ý¿éÐèÒª 10 ms ×óÓÒµÄѰַʱ¼ä¡£Ò²¾ÍÊÇ˵£¬¶ÔÓÚÒ»¸ö 100 ÍòÐÐµÄ±í£¬Èç¹ûʹÓöþ²æÊ÷À´´æ´¢£¬µ¥¶À·ÃÎÊÒ»¸öÐпÉÄÜÐèÒª 20 ¸ö 10 ms µÄʱ¼ä£¬Õâ¸ö²éѯ¿ÉÕæ¹»ÂýµÄ¡£
ΪÁËÈÃÒ»¸ö²éѯ¾¡Á¿ÉٵضÁ´ÅÅÌ£¬¾Í±ØÐëÈòéѯ¹ý³Ì·ÃÎʾ¡Á¿ÉÙµÄÊý¾Ý¿é¡£ÄÇô£¬ÎÒÃǾͲ»Ó¦¸ÃʹÓöþ²æÊ÷£¬¶øÊÇҪʹÓá°N ²æ¡±Ê÷¡£ÕâÀ¡°N ²æ¡±Ê÷Öеġ°N¡±È¡¾öÓÚÊý¾Ý¿éµÄ´óС¡£
ÒÔ InnoDB µÄÒ»¸öÕûÊý×Ö¶ÎË÷ÒýΪÀý£¬Õâ¸ö N ²î²»¶àÊÇ 1200¡£Õâ¿ÃÊ÷¸ßÊÇ 4 µÄʱºò£¬¾Í¿ÉÒÔ´æ 1200 µÄ 3 ´Î·½¸öÖµ£¬ÕâÒѾ 17 ÒÚÁË¡£¿¼Âǵ½Ê÷¸ùµÄÊý¾Ý¿é×ÜÊÇÔÚÄÚ´æÖеģ¬Ò»¸ö 10 ÒÚÐеıíÉÏÒ»¸öÕûÊý×ֶεÄË÷Òý£¬²éÕÒÒ»¸öÖµ×î¶àÖ»ÐèÒª·ÃÎÊ 3 ´Î´ÅÅÌ¡£Æäʵ£¬Ê÷µÄµÚ¶þ²ãÒ²Óкܴó¸ÅÂÊÔÚÄÚ´æÖУ¬ÄÇô·ÃÎÊ´ÅÅ̵Äƽ¾ù´ÎÊý¾Í¸üÉÙÁË¡£
N ²æÊ÷ÓÉÓÚÔÚ¶ÁдÉϵÄÐÔÄÜÓŵ㣬ÒÔ¼°ÊÊÅä´ÅÅ̵ķÃÎÊģʽ£¬ÒѾ±»¹ã·ºÓ¦ÓÃÔÚÊý¾Ý¿âÒýÇæÖÐÁË¡£
BÊ÷Ò²³ÆB-Ê÷,ËüÊÇÒ»¿Å¶à·ƽºâ²éÕÒÊ÷£¬BÊ÷ºÍºóÃæ½²µ½µÄB+Ê÷Ò²ÊÇ´Ó×î¼òµ¥µÄ¶þ²æÊ÷±ä»»¶øÀ´µÄ£¬²¢Ã»ÓÐʲôÉñÃصĵط½£¬ÏÂÃæÎÒÃÇÀ´¿´¿´BÊ÷µÄ¶¨Òå¡£
B+Ê÷ÆäʵºÍBÊ÷ÊǷdz£ÏàËƵģ¬ÎÒÃÇÊ×ÏÈ¿´¿´Ïàͬµã¡£
Ïàͬµã£º
¸ù½ÚµãÖÁÉÙÒ»¸öÔªËØ
·Ç¸ù½ÚµãÔªËØ·¶Î§£ºm/2 <= k <= m-1
²»Í¬µã£º
B+Ê÷ÓÐÁ½ÖÖÀàÐ͵Ľڵ㣺ÄÚ²¿½áµã£¨Ò²³ÆË÷Òý½áµã£©ºÍÒ¶×Ó½áµã¡£ÄÚ²¿½Úµã¾ÍÊÇ·ÇÒ¶×ӽڵ㣬ÄÚ²¿½Úµã²»´æ´¢Êý¾Ý£¬Ö»´æ´¢Ë÷Òý£¬Êý¾Ý¶¼´æ´¢ÔÚÒ¶×ӽڵ㡣
ÄÚ²¿½áµãÖеÄkey¶¼°´ÕÕ´ÓСµ½´óµÄ˳ÐòÅÅÁУ¬¶ÔÓÚÄÚ²¿½áµãÖеÄÒ»¸ökey£¬×óÊ÷ÖеÄËùÓÐkey¶¼Ð¡ÓÚËü£¬ÓÒ×ÓÊ÷ÖеÄkey¶¼´óÓÚµÈÓÚËü¡£Ò¶×Ó½áµãÖеļǼҲ°´ÕÕkeyµÄ´óСÅÅÁС£
ÿ¸öÒ¶×Ó½áµã¶¼´æÓÐÏàÁÚÒ¶×Ó½áµãµÄÖ¸Õ룬Ҷ×Ó½áµã±¾ÉíÒÀ¹Ø¼ü×ֵĴóС×ÔС¶ø´ó˳ÐòÁ´½Ó¡£
¸¸½Úµã´æÓÐÓÒº¢×ӵĵÚÒ»¸öÔªËصÄË÷Òý¡£
BºÍB+Ê÷µÄÇø±ðÔÚÓÚ£¬B+Ê÷µÄ·ÇÒ¶×Ó½áµãÖ»°üº¬µ¼º½ÐÅÏ¢£¬²»°üº¬Êµ¼ÊµÄÖµ£¬ËùÓеÄÒ¶×Ó½áµãºÍÏàÁ¬µÄ½ÚµãʹÓÃÁ´±íÏàÁ¬£¬±ãÓÚÇø¼ä²éÕҺͱéÀú¡£
B+ Ê÷µÄÓŵãÔÚÓÚ£º
µ«ÊÇBÊ÷Ò²ÓÐÓŵ㣬ÆäÓŵãÔÚÓÚ£¬ÓÉÓÚBÊ÷µÄÿһ¸ö½Úµã¶¼°üº¬keyºÍvalue£¬Òò´Ë¾³£·ÃÎʵÄÔªËØ¿ÉÄÜÀë¸ù½Úµã¸ü½ü£¬Òò´Ë·ÃÎÊÒ²¸üѸËÙ¡£
Ô´´ÉùÃ÷£º±¾ÎÄϵ×÷ÕßÊÚȨÌÚѶÔÆ¿ª·¢ÕßÉçÇø·¢±í£¬Î´¾Ðí¿É£¬²»µÃתÔØ¡£
ÈçÓÐÇÖȨ£¬ÇëÁªÏµ cloudcommunity@tencent.com ɾ³ý¡£
Ô´´ÉùÃ÷£º±¾ÎÄϵ×÷ÕßÊÚȨÌÚѶÔÆ¿ª·¢ÕßÉçÇø·¢±í£¬Î´¾Ðí¿É£¬²»µÃתÔØ¡£
ÈçÓÐÇÖȨ£¬ÇëÁªÏµ cloudcommunity@tencent.com ɾ³ý¡£