dzÎöSQL ServerÈý´óËã·¨µÄI/O³É±¾
1. Nested Loop Join(ǶÌ×Ñ»·Áª½á)
Ëã·¨£º
Æä˼·Ï൱µÄ¼òµ¥ºÍÖ±½Ó£º¶ÔÓÚ¹ØϵRµÄÿ¸öÔª×é r ½«ÆäÓë¹ØϵSµÄÿ¸öÔª×é s ÔÚJOINÌõ¼þµÄ×Ö¶ÎÉÏÖ±½Ó±È½Ï²¢É¸Ñ¡³ö·ûºÏÌõ¼þµÄÔª×顣д³Éα´úÂë¾ÍÊÇ£º
´ú¼Û£º
±»Áª½áµÄ±íËù´¦ÄÚ²ã»òÍâ²ãµÄ˳Ðò¶Ô´ÅÅÌI/O¿ªÏúÓÐ×ŷdz£ÖØÒªµÄÓ°Ïì¡£¶øCPU¿ªÏúÏà¶ÔÀ´ËµÓ°Ïì½ÏС£¬Ö÷ÒªÊÇÔª×é¶ÁÈëÄÚ´æÒÔºó(in-memory)µÄ¿ªÏú£¬ÊÇ O (n * m)
¶ÔÓÚI/O¿ªÏú£¬¸ù¾Ý page-at-a-time µÄÇ°ÌáÌõ¼þ£¬I/O cost = M + M * N£¬
·ÒëһϾÍÊÇ I/OµÄ¿ªÏú = ¶ÁÈ¡MÒ³µÄI/O¿ªÏú + M´Î¶ÁÈ¡NÒ³µÄI/O¿ªÏú¡£
2. Sort-Merge Join (ÅÅÐòºÏ²¢Áª½á)
Nested LoopÒ»°ãÔÚÁ½¸ö¼¯ºÏ¶¼ºÜ´óµÄÇé¿öÏÂЧÂʾÍÏ൱²îÁË£¬¶øSort-MergeÔÚÕâÖÖÇé¿öϾͱÈËüÒª¸ßЧ²»ÉÙ£¬ÓÈÆäÊǵ±Á½¸ö¼¯ºÏµÄJOIN×Ö¶ÎÉ϶¼Óоۼ¯Ë÷Òý(clustered index)´æÔÚʱ£¬Sort-MergeÐÔÄܽ«´ïµ½×îºÃ¡£
Ëã·¨£º
»ù±¾Ë¼Â·Ò²ºÜ¼òµ¥(¸´Ï°Ò»ÏÂÊý¾Ý½á¹¹Öеĺϲ¢ÅÅÐò°É)£¬Ö÷ÒªÓÐÁ½¸ö²½Ö裺
a.°´JOIN×ֶνøÐÐÅÅÐò
b.¶ÔÁ½×éÒÑÅÅÐò¼¯ºÏ½øÐкϲ¢ÅÅÐò£¬´ÓÀ´Ô´¶Ë¸÷×ÔÈ¡µÃÊý¾ÝÁкó¼ÓÒԱȽÏ(ÐèÒª¸ù¾ÝÊÇ·ñÔÚJOIN×Ö¶ÎÓÐÖظ´Öµ×öÌØÊâµÄ“·ÖÇø”´¦Àí)
´ú¼Û£º(Ö÷ÒªÊÇI/O¿ªÏú)
ÓÐÁ½¸öÒòËØ×óÓÒSort-MergeµÄ¿ªÏú£ºJOIN×Ö¶ÎÊÇ·ñÒÑÅÅÐò ÒÔ¼° JOIN×Ö¶ÎÉϵÄÖظ´ÖµÓжàÉÙ¡£
¡ô×îºÃÇé¿öÏÂ(Á½Áж¼ÒÑÅÅÐòÇÒÖÁÉÙÓÐÒ»ÁÐûÓÐÖظ´Öµ)£ºO (n + m) Ö»ÐèÒª¶ÔÁ½¸ö¼¯ºÏ¸÷ɨÃèÒ»±é¡££¨ÕâÀïµÄm£¬nÈç¹û¶¼ÄÜÓõ½Ë÷ÒýÄǾ͸üºÃÁË£©
¡ô×î²îÇé¿öÏÂ(Á½Áж¼Î´ÅÅÐòÇÒÁ½ÁÐÉϵÄËùÓÐÖµ¶¼Ïàͬ)£ºO (n * log n + m * log m + n * m) Á½´ÎÅÅÐòÒÔ¼°Ò»´ÎÈ«²¿Ôª×é¼äµÄµÑ¿¨¶û³Ë»ý
3. Hash Join (¹þÏ£Áª½á)
Hash JoinÔÚ±¾ÖÊÉÏÀàËÆÓÚÁ½Áж¼ÓÐÖظ´ÖµÊ±µÄSort-MergeµÄ´¦Àí˼Ïë——·ÖÇø(patitioning)¡£µ«ËüÃÇÒ²ÓÐÇø±ð£ºHash Joinͨ¹ý¹þÏ£À´·ÖÇø(ÿһ¸öÍ°¾ÍÊÇÒ»¸ö·ÖÇø)¶øSort-Mergeͨ¹ýÅÅÐòÀ´·ÖÇø(ÿһ¸öÖظ´Öµ¾ÍÊÇÒ»¸ö·ÖÇø)¡£
ÖµµÃ×¢ÒâµÄÊÇ£¬Hash JoinÓëÉÏÊöÁ½ÖÖËã·¨Ö®¼äµÄ½Ï´óÇø±ðͬʱҲÊÇÒ»¸ö½Ï´óÏÞÖÆÊÇËüÖ»ÄÜÓ¦ÓÃÓÚµÈÖµÁª½á(equality join)£¬ÕâÖ÷ÒªÊÇÓÉÓÚ¹þÏ£º¯Êý¼°ÆäÍ°µÄÈ·¶¨ÐÔ¼°ÎÞÐòÐÔËùµ¼Öµġ£
Ëã·¨£º
»ù±¾µÄHash JoinËã·¨ÓÉÒÔÏÂÁ½²½×é³É£º
ͬnested loop£¬ÔÚÖ´Ðмƻ®ÖÐbuild inputλÓÚÉÏ·½£¬probe inputλÓÚÏ·½¡£
hash join²Ù×÷·ÖÁ½¸ö½×¶ÎÍê³É£ºbuild£¨¹¹Ô죩½×¶ÎºÍprobe£¨Ì½²â£©½×¶Î¡£
a.Build Input Phase£º »ùÓÚJOIN×ֶΣ¬Ê¹ÓùþÏ£º¯Êýh2Ϊ½ÏСµÄS¼¯ºÏ¹¹½¨ÄÚ´æÖÐ(in-memory)µÄ¹þÏ£±í£¬Ïàͬ¼üÖµµÄÒÔlinked list×é³ÉÒ»¸ö
Ïà¹ØÎĵµ£º
Maximizing SQL*Loader Performance
SQL*Loader is flexible and offers many options that should be considered to maximize the speed of data loads. These include:
¡ñ Use Direct Path Loads - The conventional path loader essentially loads the data by usin ......
sql serverµÄ money ÀàÐÍÆäʵ¾ÍÊÇСÊýÀàÐÍ decimal £¬ÎÒ²»Ï²»¶ÓÃËü£¬ÒòΪÓÐÒ»´Îʲô¹¤¾ßÉú³É£¬·¢ÏÖËü×Ô¶¯°ÑmoneyÀàÐÍת»»³ÉÁËdecimalÀàÐÍÁË£¬ÓëÆäÈÃËüת£¬»¹²»Èç×Ô¼ºÉè¼ÆÊý¾Ý¿âʱ½«»õ±ÒÀàÐÍ×Ö¶ÎÉèÖÃΪ decimal ÀàÐͲ»¾ÍµÃÁË£¬·ÏÄÇʸÉÂ ×Ö½ÚÊý ³¤¶È(СÊýµãÇ°.СÊýµãºó) ......
drop table #Tmp --ɾ³ýÁÙʱ±í#Tmp
create table #Tmp --´´½¨ÁÙʱ±í#Tmp
(
ID int IDENTITY (1,1) not null, --´´½¨ÁÐID,²¢ÇÒÿ´ÎÐÂÔöÒ»Ìõ¼Ç¼¾Í»á¼Ó1
WokNo &nb ......
Èç¹ûÄãÕýÔÚ¸ºÔðÒ»¸ö»ùÓÚSQL ServerµÄÏîÄ¿£¬»òÕßÄã¸Õ¸Õ½Ó´¥SQL Server£¬Ä㶼ÓпÉÄÜÒªÃæÁÙһЩÊý¾Ý¿âÐÔÄܵÄÎÊÌ⣬ÕâƪÎÄÕ»áΪÄãÌṩһЩÓÐÓõÄÖ¸µ¼£¨ÆäÖдó¶àÊýÒ²¿ÉÒÔÓÃÓÚÆäËüµÄDBMS£©¡£
ÔÚÕâÀÎÒ²»´òËã½éÉÜʹÓÃSQL ServerµÄÇÏÃÅ£¬Ò²²»ÄÜÌṩһ¸ö°üÖΰٲ¡µÄ·½°¸£¬ÎÒËù×öµÄÊÇ×ܽáһЩ¾Ñé----¹ØÓÚÈçºÎÐγÉÒ»¸öºÃµÄÉè¼Æ¡£Õ ......
ͨ¹ýË÷Òý£¬¿ÉÒÔ¼Ó¿ìÊý¾ÝµÄ²éѯËٶȺͼõÉÙϵͳµÄÏìӦʱ¼ä£»¿ÉÒÔʹ±íºÍ±íÖ®¼äµÄÁ¬½ÓËٶȼӿ졣µ«ÊÇ£¬²»ÊÇÔÚÈκÎʱºòʹÓÃË÷Òý¶¼Äܹ»´ïµ½ÕâÖÖЧ¹û¡£ÈôÔÚ²»Ç¡µ±µÄ³¡ºÏÏ£¬Ê¹ÓÃË÷Òý·´¶ø»áÊÂÓëԸΥ¡£ Ë÷ÒýÊÇÒÔ±íÁÐΪ»ù´¡µÄÊý¾Ý¿â¶ÔÏó¡£Ë÷ÒýÖб£´æ×űíÖÐÅÅÐòµÄË÷ÒýÁÐ
¡¡¡¡
ͨ¹ýË÷Òý£¬¿ÉÒÔ¼Ó¿ìÊý¾ÝµÄ²éѯËٶȺͼõÉÙϵͳµÄÏìӦʱ¼ä£ ......