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 ......
Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM
Select CONVERT(varchar(100), GETDATE(), 1): 05/16/06
Select CONVERT(varchar(100), GETDATE(), 2): 06.05.16
Select CONVERT(varchar(100), GETDATE(), 3): 16/05/06
Select CONVERT(varchar(100), GETDATE(), 4): 16.05.06
Select CONVERT ......
Óû§×Ô¶¨Ò庯Êý£¨User Defined Functions£©ÊÇSQL Server µÄÊý¾Ý¿â¶ÔÏó£¬Ëü²»ÄÜÓÃÓÚÖ´ÐÐһϵÁиıäÊý¾Ý¿â״̬µÄ²Ù×÷£¬µ«Ëü¿ÉÒÔÏñϵͳº¯ÊýÒ»ÑùÔÚ²éѯ»ò´æ´¢¹ý³ÌµÈµÄ³ÌÐò¶ÎÖÐʹÓã¬Ò²¿ÉÒÔÏñ´æ´¢¹ý³ÌÒ»Ñùͨ¹ý EXECUTE ÃüÁîÀ´Ö´ÐС£Óû§×Ô¶¨Ò庯ÊýÖд洢ÁËÒ»¸öTransact-SQL Àý³Ì£¬¿ÉÒÔ·µ»ØÒ»¶¨µÄÖµ¡£
¡¡¡¡ÔÚSQL Server Öиù¾Ýº ......
ÔÚʹÓùý³ÌÖдó¼Ò¾³£Åöµ½Êý¾Ý¿âÈÕÖ¾·Ç³£´óµÄÇé¿ö£¬ÔÚÕâÀï½éÉÜÁËÁ½ÖÖ´¦Àí·½·¨……
¡¡¡¡·½·¨Ò»
¡¡¡¡Ò»°ãÇé¿öÏ£¬SQLÊý¾Ý¿âµÄÊÕËõ²¢²»Äܴܺó³Ì¶ÈÉϼõСÊý¾Ý¿â´óС£¬ÆäÖ÷Òª×÷ÓÃÊÇÊÕËõÈÕÖ¾´óС£¬Ó¦µ±¶¨ÆÚ½øÐд˲Ù×÷ÒÔÃâÊý¾Ý¿âÈÕÖ¾¹ý´ó¡£
¡¡¡¡1¡¢ÉèÖÃÊý¾Ý¿âģʽΪ¼òµ¥Ä£Ê½£º´ò¿ªSQLÆóÒµ¹ÜÀíÆ÷£¬ÔÚ¿ØÖÆÌ¨¸ùÄ ......