±à¼ÍƼö: |
ÎÄÕÂÏêϸ½éÉÜÁ˵εÎ×ÔÑеķֲ¼Ê½
KV ´æ´¢ Fusion µÄ»ù´¡ÉϹ¹½¨Ò»¸öÄÜÂú×ãÎÒÃÇÒµÎñ³¡¾°µÄNewSQL ¡£
±¾ÎÄÀ´×Ôinfoq£¬ÓÉ»ðÁú¹ûÈí¼þAlice±à¼¡¢ÍƼö¡£ |
|
Ò». Óöµ½µÄÎÊÌâ
µÎµÎµÄÒµÎñ¿ìËÙ³ÖÐø·¢Õ¹£¬Êý¾ÝÁ¿ºÍÇëÇóÁ¿¼±¾çÔö³¤£¬¶Ô´æ´¢ÏµÍ³µÈѹÁ¦ÓëÈÕ¾ãÔö¡£ËäÈ»·Ö¿â·Ö±íÔÚÒ»¶¨³Ì¶ÈÉÏ¿ÉÒÔ½â¾öÊý¾ÝÁ¿ºÍÇëÇóÔö¼ÓµÄÐèÇ󣬵«ÊÇÓÉÓڵεζàÌõÒµÎñÏߣ¨¿ì³µ£¬×¨³µ£¬Á½ÂÖ³µµÈ£©µÄÒµÎñ¿ìËٱ仯£¬Êý¾Ý¿â¼Ó×ֶμÓË÷ÒýµÄÐèÇó·Ç³£Æµ·±£¬·Ö¿â·Ö±í·½°¸¶ÔÓÚÆµ·±µÄ
Schema ±ä¸ü²Ù×÷²¢²»ÓѺ㬻ᵼ֠DBA ÈÎÎñ·±ÖØ£¬±ä¸üÖÜÆÚ³¤£¬²¢ÇÒ¶Ô¾Þ´óµÄ±í²Ù×÷»¹»á¶ÔÏßÉÏÓÐÒ»¶¨Ó°Ï졣ͬʱ£¬·Ö¿â·Ö±í·½°¸¶Ô¶þ¼¶Ë÷ÒýÖ§³Ö²»ÓѺûòÕ߸ù±¾²»Ö§³Ö¡£
¼øÓÚÉÏÊöÇé¿ö£¬NewSQL Êý¾Ý¿â·½°¸¾Í³ÉΪÎÒÃǽâ¾öÒµÎñÎÊÌâµÄÒ»¸ö·½Ïò¡£
¶þ. ¿ªÔ´²úÆ·µ÷ÑÐ
×ʼ£¬ÎÒÃǵ÷ÑÐÁË¿ªÔ´µÄ·Ö²¼Ê½ NewSQL ·½°¸£ºTiDB¡£ËäÈ» TiDB ÊǷdz£ÓÅÐãµÄ NewSQL
²úÆ·£¬µ«ÊǶÔÓÚÎÒÃǵÄÒµÎñ³¡¾°À´Ëµ£¬TiDB ²¢²»ÊǷdz£Êʺϣ¬ÔÒòÈçÏ£º
ÎÒÃÇÐèÒªÒ»¿î¸ßÍÌÍ£¬µÍÑÓ³ÙµÄÊý¾Ý¿â½â¾ö·½°¸£¬µ«ÊÇ TiDB ÓÉÓÚÒªÂú×ãÊÂÎñ£¬2pc ·½°¸ÌìÈ»ÎÞ·¨Âú×ãµÍÑÓ³Ù£¨100ms
ÒÔÄÚµÄ 99rt£¬ÉõÖÁ 50ms ÄÚµÄ 99rt£©
ÎÒÃǵĶàÊýÒµÎñ£¬²¢²»ÕæÕýÐèÒª·Ö²¼Ê½ÊÂÎñ£¬»òÕß˵¿ÉÒÔͨ¹ýÆäËû²¹³¥»úÖÆ£¬Èƹý·Ö²¼Ê½ÊÂÎñ¡£ÕâÊÇÓÉÓÚÒµÎñ³¡¾°¾ö¶¨µÄ¡£
TiDB Èý¸±±¾µÄ´æ´¢¿Õ¼ä³É±¾Ïà¶Ô±È½Ï¸ß¡£
ÎÒÃÇÄÚ²¿Ò»Ð©ÀëÏßÊý¾Ýµ¼ÈëÔÚÏßϵͳµÄ³¡¾°£¬²»ÄÜÖ±½ÓºÍ TiDB ´òͨ¡£
»ùÓÚÒÔÉÏÔÒò£¬ÎÒÃÇ¿ªÆôÁË×ÔÑзûºÏ×Ô¼ºÒµÎñÐèÇóµÄ NewSQL ֮·¡£
Èý. ÎÒÃǵĻù´¡
ÎÒÃDz¢Ã»ÓдòËã´Ó 0 ¿ª·¢Ò»¸öÍ걸µÄ NewSQL ϵͳ£¬¶øÊÇÔÚ×ÔÑеķֲ¼Ê½ KV ´æ´¢ Fusion
µÄ»ù´¡ÉϹ¹½¨Ò»¸öÄÜÂú×ãÎÒÃÇÒµÎñ³¡¾°µÄ NewSQL¡£Fusion ÊDzÉÓÃÁË Codis ¼Ü¹¹£¬¼æÈÝ
Redis ÐÒéºÍÊý¾Ý½á¹¹£¬Ê¹Óà RocksDB ×÷Ϊ´æ´¢ÒýÇæµÄ NoSQL Êý¾Ý¿â¡£Fusion
ÔڵεÎÄÚ²¿ÒѾÓм¸°Ù¸öÒµÎñÔÚʹÓã¬ÊǵεÎÖ÷ÒªµÄÔÚÏß´æ´¢Ö®Ò»¡£
Fusion µÄ¼Ü¹¹Í¼ÈçÏ£º

ÎÒÃDzÉÓà hash ·ÖƬµÄ·½Ê½À´×öÊý¾Ý sharding¡£´ÓÉÏÍùÏ¿´£¬Óû§Í¨¹ý Redis ÐÒéµÄ¿Í»§¶Ë¾Í¿ÉÒÔ·ÃÎÊ
Fusion£¬Óû§µÄ·ÃÎÊÇëÇó·¢µ½ proxy£¬ÔÙÓÉ proxy ת·¢Êý¾Ýµ½ºó¶Ë Fusion µÄÊý¾Ý½Úµã¡£proxy
µ½ºó¶ËÊý¾Ý½ÚµãµÄת·¢£¬ÊǸù¾ÝÇëÇóµÄ key ¼ÆËã hash Öµ£¬È»ºó¶Ô slot ·ÖƬÊýÈ¡Ó࣬µÃµ½Ò»¸ö¹Ì¶¨µÄ
slotid£¬Ã¿¸ö slotid »á¹Ì¶¨µÄÓ³Éäµ½Ò»¸ö´æ´¢½Úµã£¬ÒԴ˽â¾öÊý¾Ý·ÓÉÎÊÌâ¡£
ÓÐÁËÒ»¸ö¸ß²¢·¢£¬µÍÑÓ³Ù£¬´óÈÝÁ¿µÄ´æ´¢²ãºó£¬ÎÒÃÇÒª×öµÄ¾ÍÊÇÔÚÖ®ÉϹ¹½¨ MySQL ÐÒéÒÔ¼°¶þ¼¶Ë÷Òý¡£
ÐèÇó

×ۺϿ¼ÂÇ´ó¶àÊýÓû§¶ÔÐèÇó£¬ÎÒÃÇÕûÀíÁËÎÒÃÇµÄ NewSQL ÐèÒªÌṩµÄ¼¸¸öºËÐÄÄÜÁ¦£º
¸ßÍÌÍ£¬µÍÑÓ³Ù£¬´óÈÝÁ¿
¼æÈÝ MySQL ÐÒé¼°ÏÂÓÎÉú̬
Ö§³ÖÖ÷¼ü²éѯºÍ¶þ¼¶Ë÷Òý²éѯ
Schema ±ä¸üÁé»î£¬²»Ó°ÏìÏßÉÏ·þÎñÎȶ¨ÐÔ¡£
¼Ü¹¹Éè¼Æ
Fusion-NewSQL ÓÉÏÂÃæ¼¸¸ö²¿·Ö×é³É£º
1. ½âÎö MySQL ÐÒéµÄ DiseServer
2. ´æ´¢Êý¾ÝµÄ Fusion ¼¯Èº -Data ¼¯Èº
3. ´æ´¢Ë÷ÒýÐÅÏ¢µÄ Fusion ¼¯Èº -Index ¼¯Èº
4. ¸ºÔð Schema µÄ¹ÜÀíÅäÖÃÖÐÐÄ -ConfigServer
5. Òì²½¹¹½¨Ë÷Òý³ÌÐò -Consumer ¸ºÔðÏû·Ñ Data ¼¯ÈºÐ´µ½ MQ ÖÐµÄ MySQL-Binlog
¸ñʽÊý¾Ý£¬¸ù¾Ý schema ÐÅÏ¢£¬Éú³ÉË÷ÒýÊý¾ÝдÈë Index ¼¯Èº¡£
6. ÍⲿÒÀÀµ£¬MQ£¬Zookeeper
¼Ü¹¹Í¼ÈçÏ£º

¼¼ÊõÌôÕ½¼°·½°¸
1.SQL ±íת Hashmap
MySQL µÄ±í½á¹¹Êý¾ÝÈçºÎת³É Redis µÄÊý¾Ý½á¹¹ÊÇÎÒÃÇÃæÁٵĵÚÒ»¸öÎÊÌâ¡£
ÈçÏÂͼ£º

ÎÒÃǽ« MySQL ±íµÄÒ»ÐмǼת³É Redis µÄÒ»¸ö Hashmap ½á¹¹¡£Hashmap µÄ
key ÓɱíÃû + Ö÷¼üÖµ×é³É£¬Âú×ãÁËÈ«¾ÖΨһµÄÌØÐÔ¡£ÏÂͼչʾÁË MySQL ͨ¹ýÖ÷¼ü²éѯת»»Îª Redis
ÐÒéµÄ·½Ê½£º

³ýÁËÊý¾Ý£¬Ë÷ÒýÒ²ÐèÒª´æ´¢ÔÚ Fusion-NewSQL ÖУ¬ºÍÊý¾Ý´æ³É hashmap ²»Í¬£¬Ë÷Òý´æ´¢³É
key-value ½á¹¹¡£¸ù¾ÝË÷ÒýÀàÐͲ»Í¬£¬×é³É key-value µÄ¸ñʽ»¹ÓÐÒ»µãϸ΢µÄ²î±ð (ÏÂÃæµÄ¸ñʽΪÁË¿´ÆðÀ´Ö±¹Û£¬Êµ¼ÊÉÏ·Ö¸ô·û£¬indexname
¶¼ÊÇ×ö¹ý±àÂëµÄ)£º
1. ΨһË÷Òý£º
Key: table_indexname_indexColumnsValue Value: Rowkey
2. ·ÇΨһË÷Òý£º
Key: table_indexname_indexColumnsValue_Rowkey Value£ºnull
Ôì³ÉÕâÖÖ²îÒìµÄÔÒò¾ÍÊÇ·ÇΨһË÷ÒýÔÚ¼ÓÈë Rowkey ֮ǰµÄ²¿·ÖÊÇÓпÉÄÜÖØ¸´µÄ£¬ÎÞ·¨È«¾ÖΨһ¡£ÁíÍ⣬ΨһË÷Òý²»½«
Rowkey ±àÂëÔÚ key ÖУ¬ÊÇÒòΪÔÚ²éѯÓï¾äÊǵ¥´¿µÄ¡°=¡±²éѯµÄʱºòÖ±½Ó get ²Ù×÷¾Í¿ÉÒÔÕÒµ½¶ÔÓ¦µÄ
Rowkey ÄÚÈÝ£¬¶ø²»ÐèҪͨ¹ý scan£¬ÕâÑùµÄЧÂʸü¸ß¡£

ºóÃæ»áÔÚ²éѯÁ÷³ÌÖÐÖØµã½²ÊöÈçºÎͨ¹ý¶þ¼¶Ë÷Òý²éѯµ½Êý¾Ý¡£
2. Êý¾ÝºÍË÷ÒýÒ»ÖÂÐÔ
ÒòΪÊý¾ÝºÍË÷Òý·Ö±ð´æ´¢ÔÚ²»Í¬ Fusion ¼¯Èº£¬Êý¾ÝºÍË÷ÒýµÄÒ»ÖÂÐÔ±£Ö¤¾Í³ÉÁË Fusion-New
ÏµÍ³ÃæÁÙµÄÒ»¸ö¹Ø¼üµã£¬ÔÚûÓзֲ¼Ê½ÊÂÎñµÄÇé¿öÏ£¬ÎÒÃǵ±Ç°Ñ¡ÔñÁ˱£Ö¤Êý¾ÝË÷ÒýµÄ×îÖÕÒ»ÖÂÐÔ¡£Óû§Ð´ÈëÊý¾ÝÔÚÊý¾Ý¼¯ÈºÖпªÆô
RocksDB µÄµ¥»úÊÂÎͬʱ°´Á´½Ó±£Ðò£¬ÕâÑùÊý¾ÝÁ÷Èë MQ µÄʱºò¾ÍÊÇÓÐÐòµÄ¡£Ò첽ģ¿é´Ó MQ
ÖÐÏû·Ñ³öÀ´ÔÙÅúÁ¿Ð´Èëµ½Ë÷Òý¼¯Èº£¬Õû¸öÁ÷³Ì¾Í±£Ö¤µÄË÷ÒýÊý¾ÝµÄ¹¹½¨ÓëÊý¾Ý¼¯ÈºÕæÊµµÄ˳ÐòÒ»Ö¡£µ±È»£¬ÕâÖÐ¼ä´æÔÚÒ»¸öʱ¼ä´°¿ÚµÄÊý¾Ý²»Ò»Ö£¬Õâ¸öʱ¼äÈ¡¾öÓÚ
MQ µÄÍÌÍÂÄÜÁ¦¡£
3. ¶þ¼¶Ë÷Òý²éѯ
ÏÂÃæÊÇÒ»¸öʹÓöþ¼¶Ë÷Òý²éѯÊý¾ÝµÄ°¸Àý£º
dise-server »á¸ù¾ÝÓû§²éѯÌõ¼þºÍµ±Ç°ËùÓÐË÷Òý×öÆ¥Å䣬ÕÒµ½·ûºÏµÄË÷Òý£¬È»ºóͨ¹ý Redis
µÄ scan ÃüÁ°´Ç°×ºËÑË÷ index ¼¯ÈºµÄÊý¾Ý£¬»ñÈ¡·ûºÏÌõ¼þµÄÖ÷¼ü¡£
ÈçÏÂͼ£º

ͨ¹ýÖ÷¼ü£¬¿ÉÒÔÖ±½Óµ½ Data ¼¯Èº²éµ½ÏàÓ¦µÄÊý¾Ý¡£
¸ù¾ÝÉÏÃæË÷ÒýÊý¾ÝµÄ¸ñʽ¿ÉÒÔ¿´µ½£¬scan ·¶Î§µÄʱºò£¬Ç°×º±ØÐë¹Ì¶¨£¬Ó³Éäµ½ SQL Óï¾äµ½Ê±ºò£¬Òâζ×Å
where µ½Ìõ¼þÖУ¬·¶Î§²éѯֻÄÜÓÐÒ»¸ö×ֶΣ¬¶ø²»Äܶà¸ö×ֶΡ£
±ÈÈ磺

Ë÷ÒýÊÇ age ºÍ name Á½¸ö×ֶεÄÁªºÏË÷Òý¡£
Èç¹û²éѯÓï¾äÈçÏ£º
select * from student where age > 20 and name >¡®W¡¯;
scan ¾ÍûÓа취ȷ¶¨Ç°×º£¬Ò²¾ÍÎÞ·¨Í¨¹ý index_age_name Õâ¸öË÷Òý²éѯµ½Âú×ãÌõ¼þµÄÊý¾Ý£¬ËùÒÔʹÓÃ
KV ÐÎʽ´æ´¢µ½Ë÷ÒýÖ»ÄÜÂú×ã where Ìõ¼þÖÐÓÐÒ»¸ö×Ö¶ÎÊÇ·¶Î§²éѯ¡£µ±È»¿ÉÒÔͨ¹ý½«ÁªºÏË÷Òý·Ö¿ª´æ·Å£¬¶à´Î½»»¥ËÑË÷È¡½»¼¯µÄ·½Ê½½â¾ö£¬µ«ÊÇÕâ¾ÍºÍÎÒÃǼõÉÙ
RPC ´ÎÊý£¬½µµÍÑÓ³ÙµÄÉè¼Æ³õÖÔÏàÎ¥±³ÁË¡£ÎªÁ˽â¾öÕâ¸öÎÊÌ⣬ÎÒÃÇÒýÈëÁË Elastic Search
ËÑË÷ÒýÇæ¡£
¼Ü¹¹Í¼ÈçÏ£º

ÎÒÃǽ¨ÒéÓû§½«ÐèÒª¸´ÔÓ²éѯµÄ×Ö¶ÎÉèÖÃΪ ES Ë÷Òý£¬consumer Ïû·Ñ MQ µÄʱºò½«ÕâЩ×Ö¶ÎÊý¾Ýдһ·Ýµ½
ES ÖУ¬ÕâÑù¶ÔÓÚ¶Ô²éѯÌõ¼þ¼òµ¥£¬ÑÓ³ÙÃô¸ÐµÄ²éѯ£¬Ê¹Óà Index ¼¯ÈºµÄÊý¾Ý£»¶ÔÌõ¼þ¸´ÔÓ£¬ÑÓ³Ù²»Ãô¸ÐµÄ²éѯʹÓÃ
ES¡£ÕâÑù½â¾öÁ˶þ¼¶Ë÷Òý¹¦ÄܷḻÐÔÎÊÌâ¡£
4. Éú̬¹¹½¨
Ò»¸öµ¥¶ÀµÄ´æ´¢²úÆ·½â¾öËùÓÐÎÊÌâµÄʱ´úÔçÒѾ¹ýÈ¥£¬Êý¾Ý¹ÂµºÊÇûÓа취ºÜºÃ·þÎñÒµÎñµÄ£¬ÈçºÎÓëµÎµÎÏÖÓиö¸÷¸öÊý¾Ýϵͳ´òͨÊý¾Ý£¬³ÉÁËÎÒÃDZØÐëÃæ¶ÔµÄÎÊÌâ¡£ÏÂÃæ·ÖÊý¾ÝÁ÷³öµ½ÆäËûϵͳºÍ´ÓÆäËûϵͳµ¼ÈëÁ½¸ö·½ÃæÀ´²ûÊö
Fusion-NewSQL µÄÊý¾ÝÁ÷¶¯·½°¸¡£
4.1. Fusion-NewSQL µ½ÆäËû´æ´¢ÏµÍ³
Fusion-NewSQL ÊÇÒ»¸öÐÂϵͳ£¬Ã»°ì·¨¶Ìʱ¼äÈø÷¸öÊý¾ÝϵͳΪÎÒÃÇ×öÊÊÅä¡£¼ÈÈ» Fusion-NewSQL
ÒѾÓÐÁË Schema ÐÅÏ¢£¬ÄÇôͨ¹ý¼æÈÝ MySQL µÄ Binlog ¸ñʽ£¬½« Fusion-NewSQL
ÔÚÊý¾ÝÁ´Â·ÖÐαװ³É MySQL£¬¾Í¿ÉÒÔÖ±½ÓʹÓà Mysql µÄÏÂÓÎÊý¾ÝÁ÷¶¯Á´Â·¡£ÕâÑùµÄ·½Ê½ÓÃ×îСµÄ¹¤×÷Á¿×î´ó³Ì¶È×öµ½Á˼æÈÝ¡£
4.2.Hive µ½ Fusion-NewSQL
Fusion-NewSQL »¹Ö§³Ö½«ÀëÏßµÄ Hive ±íÖеÄÊý¾Ýͨ¹ý Fusion-NewSQL ÌṩµÄ
FastLoad£¨DTS£©¹¤¾ß£¬½« Hive ±íÊý¾ÝתÈëµ½ Fusion-NewSQL£¬Âú×ãÀëÏßÊý¾Ýµ½ÔÚÏßµÄÊý¾ÝÁ÷¶¯¡£
Èç¹ûÓû§×Ô¼ºÍê³ÉÊý¾ÝÁ÷ת£¬Ò»°ã»áɨÃè Hive ±í£¬È»ºó¹¹½¨ MySQL µÄдÈëÓï¾ä£¬Ò»ÌõÌõ½«Êý¾ÝдÈëµ½
Fusion-NewSQL£¬
Á÷³ÌÈçÏÂÃæÕâÑù£º

´ÓÉÏÃæµÄÁ÷³Ì¿ÉÒÔ¿´³öÕâÖÖÇ¨ÒÆ·½Ê½Óм¸¸öÎÊÌ⣺
1. ÿÌõ Hive Êý¾Ý¶¼Òª¾¹ý½Ï³¤Á´Â·£¬Êý¾Ýµ¼ÈëºÄʱ½Ï³¤¡£
2. ÀëÏ߯½Ì¨µÄÊý¾ÝÁ¿´ó£¬ÍÌ͸ߣ¬Êý¾Ýµ¼ÈëÖ±½Ó´ó·ùÌáÉýÔÚÏßϵͳµÄ QPS£¬¶ÔÔÚÏßϵͳµÄÎȶ¨ÐÔÓнϴóÓ°Ïì¡£
´ÓÉÏÃæµÄÍ´µã¿ÉÒÔ¿´³öÀ´£¬Ö÷ÒªµÄÎÊÌâÊÇÀëÏßÊý¾Ýµ¼ÈëʹÓÃÁËÔÚÏßϵͳ¸´Ô IO Á´Â·¡£ËùÒÔÈçºÎÈÆ¹ýÔÚÏߵij¤
IO Á´Â·£¬×öÅúÁ¿µ¼Èë¾Í³ÉÁ˽â¾öÕâ¸öÎÊÌâµÄ¹Ø¼ü¡£ÎÒÃÇÉè¼ÆÁË Fastload Êý¾Ýµ¼ÈëÆ½Ì¨£¬ÈƹýÔÚÏß
IO ·¾¶
Á÷³ÌÈçÏ£º

ͨ¹ý Hadoop ²¢ÐмÆË㣬½«ÐèÒªµ¼ÈëµÄ Hive Êý¾ÝÖ±½Ó¹¹½¨³É Fusion-NewSQL ÄÜʶ±ðµÄ
sst Îļþ¡£Fusion-NewSQL Ö±½Ó½« sst Îļþ´ÓÔ¶¶ËÏÂÔØµ½±¾µØ£¬È»ºóʹÓô洢½Úµãͨ¹ý
Rocksdb Ìṩ ingest ¹¦ÄÜ£¬Ö±½Ó½« sst Îļþ¼ÓÔØµ½ Fusion-NewSQL ÖУ¬Óû§¿ÉÒÔ¶Áµ½¼ÓÔØµ½
sst ÎļþÖеÄÊý¾Ý¡£Í¨¹ýÕâÑùµÄÔ¤Ïȹ¹½¨ sst Îļþ£¬Ö±½ÓÎļþÍøÂç´«ÊäºÍ´æ´¢ÒýÇæÖ±½Ó¼ÓÔØµÄ²½Ö裬¾Í±ÜÃâÁËÊý¾Ýµ¼Èë×ßÔÚÏß
IO ¸´ÔÓÁ÷³Ì£¬½â¾öÁËÎȶ¨ÐÔÎÊÌ⣬ͬʱ½«Êý¾Ýµ¼ÈëºÄʱ¼õÉÙµ½ÔÀ´µÄ 1/10¡£
×ܽá
ͨ¹ý½â¾öÉÏÃæµÄ¼¼Êõµã£¬ÎÒÃÇÓÃÁ˽ÏСµÄ´ú¼Û£¬¹¹½¨ÁËÒ»¸ö»ùÓÚ KV ´æ´¢µÄ NewSQL ϵͳ£¬²¢ÇÒ¿ìËÙ½«
Fusion-NewSQL ϵͳ½ÓÈëµ½µÎµÎÕûÌåµÄÊý¾ÝÁ´Â·ÖС£ËäÈ»Õâ²»ÊÇÒ»¸öÍ걸µÄ NewSQL ϵͳ£¬µ«ÒѾ¿ÉÒÔÂú×ã´ó¶àÊýÒµÎñ³¡¾°µÄÐèÒª£¬ÇÐʵʵÏÖÁË
20% ¹¤×÷Á¿Âú×ã 80% ¹¦ÄܵÄÐèÇó¡£µ±Ç° Fusion-NewSQL ÒѾ½ÓÈë¶©µ¥¡¢Ô¤¹À¡¢Õ˵¥¡¢Óû§ÖÐÐÄ¡¢½»Ò×ÒýÇæµÈºËÐÄÒµÎñ£¬×ܵÄÊý¾ÝÈçÏÂͼ£º

ºóÐø¹¤×÷
ÓÐÏÞÖÆµÄÊÂÎïÖ§³Ö£¬±ÈÈçÈÃÒµÎñ¹æ»®ÂäÔÚÒ»¸ö½ÚµãµÄÊý¾Ý¿ÉÒÔÖ§³Öµ¥»ú¿çÐÐÊÂÎñ£»
ʵʱË÷ÒýÌæ´úÒì²½Ë÷Òý£¬Âú×㼴д¼´¶Á¡£Ä¿Ç°ÒѾÓÐÒ»¸öд´© + ²¹³¥»úÖÆµÄ·½°¸£¬ÔÚûÓзֲ¼Ê½ÊÂÎñµÄǰÌáÏÂÂú×ãÕý³£×´Ì¬µÄʵʱË÷Òý£¬Òì³£Çé¿öϱ£Ö¤Êý¾ÝË÷Òý×îÖÕÒ»Öµķ½°¸£»
¸ü¶àµÄ SQL ÐÒéºÍ¹¦ÄÜÖ§³Ö¡£
|