Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
´øÄúÀí½âSQLSERVERÊÇÈçºÎÖ´ÐÐÒ»¸ö²éѯµÄ£¨Ï£©
 
×÷Õߣºcodingwu µÄ²©¿Í À´Ô´£º²©¿ÍÔ° ·¢²¼ÓÚ£º2015-6-30
 

Ö´ÐУ¨Execution£©

Ò»µ©²éѯÓÅ»¯Æ÷Ñ¡ÔñÁËÒ»¸öÖ´Ðмƻ®£¬ÇëÇó£¨request£©¾Í¿ÉÒÔ¿ªÊ¼Ö´ÐÐÁË¡£Ö´Ðмƻ®»á±»·­Òë³ÉΪһ¿Ãʵ¼ÊµÄÖ´ÐÐÊ÷

ÿ¸öÊ÷½Úµã¶¼ÊÇÒ»¸ö²Ù×÷·û£¬ËùÓвÙ×÷·û¶¼»áʵÏÖÒ»¸öÓÐ3¸ö·½·¨µÄ³éÏó½Ó¿Ú£¬·Ö±ðÊÇopen(), next(), close()

Èç¹û¸óÏÂÊÇC#³ÌÐòÔ±»òÕßÊÇJAVA³ÌÐòÔ±£¬Ò»¶¨²»ÄÑÀí½âʲôÊǽӿڣ¬Ê²Ã´ÊÇ·½·¨£¬Ê²Ã´ÊdzéÏó½Ó¿Ú

MSDNÀïÓÐÏà¹ØµÄ×ÊÁÏ£ºShowplan Âß¼­ÔËËã·ûºÍÎïÀíÔËËã·û²Î¿¼

²éѯ¼Æ»®ÊÇÓÉÎïÀíÔËËã·û×é³ÉµÄÒ»¸öÊ÷£¨Ö´ÐÐÊ÷£©

Âß¼­ÔËËã·û

Âß¼­ÔËËã·ûÃèÊöÁËÓÃÓÚ´¦ÀíÓï¾äµÄ¹ØÏµ´úÊý²Ù×÷¡£ »»ÑÔÖ®£¬Âß¼­ÔËËã·û´Ó¸ÅÄîÉÏÃèÊöÁËÐèÒªÖ´ÐÐÄÄЩ²Ù×÷¡£

ÎïÀíÔËËã·û

ÎïÀíÔËËã·ûʵʩÓÉÂß¼­ÔËËã·ûÃèÊöµÄ²Ù×÷¡£ ÿ¸öÎïÀíÔËËã·û¶¼ÊÇÒ»¸öÖ´ÐÐijÏî²Ù×÷µÄ¶ÔÏó»òÀý³Ì¡£ ÀýÈ磬ijЩÎïÀíÔËËã·û¿É·ÃÎÊ±í¡¢Ë÷Òý»òÊÓͼÖеÄÁлòÐС£ ÆäËûÎïÀíÔËËã·ûÖ´ÐÐÆäËû²Ù×÷£¬Èç¼ÆËã¡¢¾ÛºÏ¡¢Êý¾ÝÍêÕûÐÔ¼ì²é»òÁª½Ó¡£ ÎïÀíÔËËã·û¾ßÓÐÓëÆä¹ØÁªµÄ¿ªÏú¡£

ÎïÀíÔËËã·û³õʼ»¯¡¢ÊÕ¼¯Êý¾Ý£¬È»ºó¹Ø±Õ¡£ ¾ßÌåÀ´½²£¬ÎïÀíÔËËã·û¿ÉÒÔÏìÓ¦ÏÂÁÐÈýÖÖ·½·¨µ÷Óãº

Init()£ºInit() ·½·¨Ê¹ÎïÀíÔËËã·û³õʼ»¯×ÔÉí²¢ÉèÖÃËùÓÐÐèÒªµÄÊý¾Ý½á¹¹¡£ ¾¡¹ÜÒ»¸öÎïÀíÔËËã·ûͨ³£Ö»½ÓÊÕÒ»´Î Init() µ÷Ó㬵«Ò²¿ÉÒÔ½ÓÊÕÐí¶à´Îµ÷Óá£

GetNext()£ºGetNext() ·½·¨Ê¹ÎïÀíÔËËã·û»ñµÃÊý¾ÝµÄµÚÒ»ÐлòºóÐøÐС£ ÎïÀíÔËËã·û¿ÉÒÔ²»½ÓÊÕ GetNext() µ÷Óã¬Ò²¿ÉÒÔ½ÓÊÕÐí¶à´Îµ÷Óá£

Close()£ºClose() ·½·¨Ê¹ÎïÀíÔËËã·ûÖ´ÐÐijЩÇå³ý²Ù×÷£¬È»ºó¹Ø±Õ¡£ Ò»¸öÎïÀíÔËËã·ûÖ»½ÓÊÕÒ»¸ö Close() µ÷Óá£

GetNext() ·½·¨·µ»ØÒ»¸öÊý¾ÝÐУ¬ËüµÄµ÷ÓôÎÊý×÷Ϊ ActualRows ÏÔʾÔÚʹÓà SET STATISTICS PROFILE ON »ò SET STATISTICS XML ON Éú³ÉµÄÏÔʾ¼Æ»®Êä³öÖС£ ÓйØÕâЩ SET Ñ¡ÏîµÄÏêϸÐÅÏ¢£¬Çë²ÎÔÄ SET STATISTICS PROFILE (Transact-SQL) ºÍ SET STATISTICS XML (Transact-SQL)¡£

ÎÄÖÐ˵µÄ²Ù×÷·ûʵ¼ÊÉÏÖ¸µÄ¾ÍÊÇÎïÀíÔËËã·û£ºÈý¸ö·½·¨Ö¸µÄÊÇopen()=init()£¬next()=getnext()£¬close()=close()

ÿ¸öÎïÀíÔËËã·û¾ÍÊǵ÷ÓÃ×Ô¼ºµÄÈý¸ö·½·¨

ÔÚSQLSERVERÖ´ÐÐÇëÇóµÄ¹ý³ÌÖУ¬Ö´ÐÐÊ÷µÄ¸ù½Úµã»á²»¶ÏÑ­»·µÄµ÷ÓÃopen£¨£©£¬È»ºóÖØ¸´µ÷ÓÃnext£¨£©Ö±µ½·µ»ØfalseÖµ

×îºóµ÷ÓÃclose£¨£©¡£Ê÷µÄ¸ù½ÚµãµÄÔËËã·û»áÒÀ´Îµ÷ÓÃËûµÄ×Ó½ÚµãµÄͬÑùµÄÔËËã·û£¬¶ø×Ó½ÚµãÓÖ»áÒÀ´Îµ÷ÓÃËûµÄ×Ó½ÚµãµÄͬÑùµÄÔËËã·û

Ò»Ö±µ÷ÓÃÏÂÈ¥¡£ÔÚÊ÷µÄÒ¶×Ó½ÚµãÒ»°ã¶¼»áÊǶÁÈ¡±íÊý¾Ý»ò±íË÷ÒýµÄÎïÀíÔËËã·û¡£¶øÖ´ÐÐÊ÷µÄÖмä½ÚµãÒ»°ã¶¼ÊÇһЩʵÏÖ²»Í¬Êý¾Ý²Ù×÷µÄÔËËã·û

ÀýÈ磺¹ýÂ˱íÊý¾Ý¡¢joinÁ¬½Ó¡¢¶ÔÊý¾ÝÅÅÐò¡£ÄÇЩʹÓò¢ÐеIJéѯ»áʹÓÃÒ»¸öÌØ±ðµÄÔËËã·û½Ð×ö£ºExchange Oprators£¨½»»»²Ù×÷£©

½»»»²Ù×÷ÔËËã·ûÔÚÖ´ÐеĹý³ÌÖлáʹÓöàÏß³Ì(tasks => workers)£¬µ÷ÓÃÿ¸öÏß³ÌÈ¥Ö´ÐÐ×ÓÊ÷µÄÖ´Ðмƻ®£¬

È»ºó¾ÛºÏÕâЩÔËËã·ûµÄÊä³ö½á¹û£¬ÔÚÕâ¸ö¹ý³ÌÖлáʹÓõäÐ͵썶àÉú²úÕß¡¶-¡·Ò»¸öÏû·ÑÕßģʽ£©¡£

¹ØÓÚExchange Oprators£¨½»»»²Ù×÷£© ¿ÉÒԲο¼ÕâÆªÎÄÕ£ºSQL Server 2000ÖеIJ¢Ðд¦ÀíºÍÖ´Ðмƻ®ÖеÄλͼÔËËã·û

ÎÒÃÇʹÓà SET STATISTICS PROFILE ON ¾Í¿ÉÒÔ¿´µ½Ö´ÐÐÊ÷£¬ÏÂÃæÊÇһЩÁеÄÃû³Æ£¬¸üÏêϸµÄ¾Í²»ËµÁË£¬ÍøÉÏÓкܶà×ÊÁÏ

NodeId£ºÊ÷½Úµã

Parent£º¸¸½Úµã

PhysicalOp£ºÎïÀíÔËËã·û

LogicalOp£ºÂß¼­ÔËËã·û

ÕâÖÖÖ´ÐÐÊ÷µÄÖ´ÐÐÄ£ÐͲ»µ¥Ö»Ó¦ÓÃÓÚ²éѯ£¬²åÈ룬ɾ³ý£¬¸üеÄÖ´Ðж¼ÊÇͬÑùÀûÓÃÖ´ÐÐÊ÷À´Ö´ÐеÄ

²åÈë¼Ç¼¡¢É¾³ý¼Ç¼¡¢¸üмǼ¶¼»áÓÐÏàÓ¦µÄÔËËã·û

Ò»¸öÖ´ÐÐÊ÷ûÓÐ×ÓÊ÷µÄÇé¿ö

Ò»¸öÖ´ÐÐÊ÷¾ßÓÐ×ÓÊ÷µÄÇé¿ö

Èç¹ûÖ´ÐÐÊ÷¾ßÓÐ×ÓÊ÷£¬ËûµÄÖ´Ðз½Ê½Ò²ÊÇ´Ó×ÓÊ÷µÄÒ¶×ӽڵ㿪ʼִÐУ¬Ò»Ö±Ö´Ðе½Ê÷µÄ¸ù½Úµã

ÌØ±ðÒª½éÉÜһϣ¬ÕâЩÔËËã·ûÒ²ÓÐÍ£Ö¹-¼ÌÐøµÄÐÐÎªÌØÐÔ£¬Òâ˼ÊÇ˵³ý·ÇËûÃǵÄ×Ó½ÚµãÔËËã·ûÒѾ­ÎüÊÕÍêËùÓеÄÊäÈ룬ËûÃDzÅÄܲúÉúÊäÈë

ÀýÈ磺ÅÅÐòÔËËã·û£¬ÅÅÐòÔËËã·ûÔÚ×î³õµ÷ÓÃnext£¨£©º¯ÊýµÄʱºò²»»á·µ»ØÈκνá¹ûÒòΪÕâʱºòËûµÄ×ӽڵ㻹ûÓжÁÈ¡ÍêËùÓÐÊý¾Ý£¬

ÕâʱºòÐèҪִֹͣÐÐnext£¨£©º¯Êý£¨Ã¿¸öÔËËã·û´´½¨³öÀ´¾Í»á²»Í£µ÷ÓÃnextº¯Êý£©£¬Ö±µ½ËûµÄ×Ó½Úµã¶ÁÈ¡ÍêËùÓÐÊý¾ÝËû²ÅÄܶÔÕâЩÊý¾Ý

½øÐÐÅÅÐò£¨¼ÌÐøµ÷ÓÃnext£¨£©º¯Êý£©£¬È¡³ö½á¹û¼¯²¢ÅÅÐò

Èç¹ûÊý¾ÝÒѾ­»º´æÔÚÄÚ´æÀïÁË£¬SQLSERVER¾Í²»ÐèҪȥ´ÅÅÌÀïÈ¡Êý¾Ý£¬Ö±½ÓÔÚÄÚ´æÀïÈ¡Êý¾Ý£¬ÄÚ´æÀïµÄÕâ¿é¿Õ¼ä£¬

SQLSERVER¹Ù·½ÊõÓï½Ð£ºBuffer pool

¶øÔÚÄÚ´æÀﻺ´æÖ´Ðмƻ®µÄÕâ¿é¿Õ¼ä£¬SQLSERVER¹Ù·½ÊõÓï½Ð£ºPlan Cache

Ö´ÐÐÄ£¿é£¨Ä£¿é»¯£©

½á¹û£¨Results£©

ÔÚÖ´ÐÐÍê±ÏÖ®ºó£¬SQLERVER»á½«½á¹û¼¯·µ»Ø¸ø¿Í»§¶ËÓ¦ÓóÌÐò

µ±Ö´Ðе½Ö´ÐÐÊ÷µÄ¸ù½ÚµãµÄʱºò£¬¸ù½Úµãͨ³£¸ºÔ𽫽á¹û¼¯Ð´Èëµ½ÍøÂ绺³åÇø£¨network buffers£©

È»ºó½«ÕâЩ½á¹û¼¯·¢Ëͻؿͻ§¶Ë¡£Ò»¸öÍêÕûµÄ½á¹û¼¯»¹Ã»Óд´½¨Íê±Ï£¬Ò»²¿·ÖµÄ½á¹ûÊ×ÏÈ»á´æ·Åµ½ÖÐ¼ä´æ´¢£¨ÄÚ´æ»ò´ÅÅÌ£©

È»ºóÖð¶ÎÖð¶Î·¢Ë͸ø¿Í»§¶Ë£¬ÀýÈçÒ»¸öSQLÓï¾ä²éѯµÄ½á¹ûÐèÒª·µ»Ø10Ìõ¼Ç¼£¬ÓÐ3Ìõ¼Ç¼ÒѾ­Éú³ÉºÃÁË£¬¿ÉÒÔ·µ»Ø¸ø¿Í»§¶ËÁË

SQLSERVERÊ×ÏȽ«Õâ3Ìõ¼Ç¼·ÅÈëÖÐ¼ä´æ´¢£¨ÄÚ´æ»ò´ÅÅÌ£©£¬Ò²¿ÉÒÔ½ÐÍøÂ绺³åÇø£¬µÈ¿Í»§¶ËÀ´È¡×ßÕâ3Ìõ¼Ç¼£¬Èç´ËÀàÍÆ¡£

·µ»Ø½á¹û¼¯¸ø¿Í»§¶ËµÄʱºò£¬SQLSERVERÓõÄÊÇÍøÂçÁ÷¿ØÖÆÐ­Òé¡£

Èç¹û¿Í»§¶ËûÓлý¼«µØ½«ÕâЩ½á¹û¼¯È¡×ߣ¨ÀýÈçµ÷ÓÃSqlDataReader.Read£¨£©£©¡£×îÖջᵼÖÂÍøÂçÁ÷¿ØÖÆ×é¼þ²»µÃ²»×èÈû

½á¹û¼¯·¢ËͶ˲¢ÇÒ»á¹ÒÆð²éѯµÄÖ´ÐС£

Ö»ÓÐÍøÂçÁ÷¿ØÖÆ×é¼þЭµ÷ºÍ»º½âÁËÍøÂç×ÊÔ´µÄÐèÇó£¨ÍøÂçûÓÐ×èÈû£©£¬²éѯ²Å»á»Ö¸´£¬²¢ÇÒ¼ÌÐøÉú³É½á¹û¼¯

²»ÖªµÀ´ó¼ÒÓÐûÓÐÓöµ½¹ýµÈ´ýÀàÐÍ£ºASYNC_NETWORK_IOµÄµÈ´ý

ÉÏͼÀ¿Í»§¶Ë¶þ¾ÍÒªµÈ´ý£¬ÔÚSQLSRVERÀï²éѯ¾Í»áÏÔʾASYNC_NETWORK_IOÀàÐ͵ĵȴý

ÓÐȤµÄÊÇ£¬OUTPUT²ÎÊýµÄ·µ»Ø£¬OUTPUT²ÎÊýµÄÖµ»á±»²åÈëµ½·µ»Ø¸ø¿Í»§¶ËµÄ½á¹û¼¯µÄÍøÂçÊý¾ÝÁ÷ÖС£

µ±ÇëÇóÍê³ÉµÄʱºò£¬OUTPUT²ÎÊýÖµÖ»ÄÜÔÚ²éѯִÐеÄ×îºóдµ½½á¹û¼¯ÖУ¬Õâ¾ÍÊÇΪʲ÷áOUTPUT²ÎÊýÖµ

Ö»Óе±ËùÓеĽá¹û¼¯¶¼·µ»ØÁ˲ÅÄܼì²éOUTPUT²ÎÊýµÄÖµ

²éѯִÐйý³ÌÖÐÒª¸³ÓèµÄÄڴ棨Query Execution Memory Grant£©

һЩÔËËã·ûÐèÒª¹Ì¶¨µÄÄÚ´æÈ¥Ö´ÐÐËûÃǵŤ×÷¡£ÅÅÐòÔËËã·ûΪÁ˽øÐÐÅÅÐòÐèÒªÄÚ´æÈ¥´æ´¢ÊäÈëµ½ÅÅÐòÔËËã·ûµÄÊý¾Ý

Hash joinºÍhash¾ÛºÏ±ØÐ뽨Á¢´óÐ͵Ähash±íÈ¥Ö´ÐÐËûÃǵŤ×÷¡£Ö´Ðмƻ®ÖªµÀÄÇЩδÍê³ÉµÄÔËËã·ûÐèÒª¶àÉÙÄÚ´æ

¸ù¾ÝÔËËã·ûÀàÐÍ£¬Ô¤¹ÀµÄÐмǼ£¬ÔËËã·û±ØÐëÒª´¦Àíͳ¼ÆÐÅÏ¢Ìṩ¸øËûµÄ±íÖеÄ×ֶεĴóС¡£

ÄÇЩÔÚÖ´Ðмƻ®ÀïµÄÔËËã·ûËùÐèÒªµÄ×ܵÄÄÚ´æÎÒÃÇͨ³£³ÆÎªÄڴ渳Óè¡£

ÊÔÏëһϣ¬µ±·Ç³£¶àµÄ²¢·¢²éѯ±»Ö´ÐеÄʱºò£¬ÒòΪ´óÁ¿µÄ°º¹óµÄÔËËã·û£¨ÕâЩÔËËã·ûÒ»°ã¶¼ÐèÒªºÜ¶àÄڴ棬ËùÒÔ³ÆÖ®Îª°º¹óµÄ£©

ÐèÒªÇëÇóÄڴ棬ÔÚͬһʱ¼äÀïÃæËûÃÇÄܹ»Óþ¡¼ÆËã»úµÄÄÚ´æ¡£

ΪÁË×èÖ¹ÕâÖÖÇé¿öµÄ·¢Éú£¬SQLSERVERʹÓÃÒ»ÖֽС°×ÊÔ´ÐźÅÁ¿¡±µÄ¶«Î÷¡£Õâ¸ö¶«Î÷Äܹ»È·±£ÕýÔÚÖ´ÐеIJéѯµÄ×ÜÄÚ´æ·ÖÅä²»»á³¬¹ý

µ±Ç°¼ÆËã»úÖеÄÄÚ´æ×ܺ͡£µ±×ܵÄÄÚ´æ·ÖÅä¾Í¿ìºÄ¾¡µ±Ç°·þÎñÆ÷ÀïµÄ¿ÉÓÃÄÚ´æµÄʱºò£¬ÕýÔÚÖ´ÐеIJéѯ±ØÐëÒªµÈ´ýÄÇЩ¾Í¿ìÖ´ÐÐÍê±Ï

µÄ²éѯȥÊÍ·ÅËûÃÇÓµÓеÄÄÚ´æ¡£

Äú¿ÉÒÔ²éѯsys.dm_exec_query_memory_grantsÕâ¸öDMVÊÓͼÀ´»ñÈ¡µ±Ç°µÄÄÚ´æ·ÖÅ䣨ÇëÇóµÄÄڴ棬·ÖÅäÁ˵ÄÄڴ棩

µ±Ò»¸ö²éѯ±ØÐëÒªµÈ´ýÄÚ´æµÄ¸³Óè/·ÖÅ䣬ÔÚSQL PROFILERÀï¿ÉÒÔ¿´µ½Execution Warnings ʼþÀàÐÍ

Execution Warnings ʼþÀàÐÍÖ¸³öÁ˵±SQLÓï¾ä»òÕß´æ´¢¹ý³ÌÖ´ÐеĹý³ÌÖеÄÄÚ´æ·ÖÅ侯¸æ

Õâ¸öʼþÀàÐÍÄܹ»¼àÊÓ±ØÐëÒªµÈ´ýÒ»Ãë»ò¸ü¶àÄÚ´æµÄijЩ²éѯ£¬»òÕß»ñÈ¡ÄÚ´æÊ§°ÜµÄ²éѯ

ÔÚSQL PROFILERÀһЩÓëÄÚ´æÓйصÄʼþÀàÐÍ

Exchange Spill ʼþÀàÐÍ

Sort Warnings ʼþÀàÐÍ£ºÅÅÐòµÄʱºòËùÐèÄÚ´æ²»×ã

Hash Warning ʼþÀàÐÍ

Ïà¹ØÓï¾ä

select * from sys.dm_exec_query_resource_semaphores select * from sys.dm_exec_query_memory_grants

SELECT [session_id],
2 [request_id],
3 [start_time],
4 [status],
5 [command],
6 [wait_type],
7 [text_size],
8 [language] ,
9 [transaction_isolation_level],
10 [row_count],
11 [granted_query_memory],
12 [executing_managed_code]
13 FROM sys.[dm_exec_requests]

ÎÒÈçºÎÀûÓÃÕâЩÐÅÏ¢£¨How can I use all this information£©

ÉÏÃæµÄÐÅÏ¢ÓпÉÄܰïÄú½â¾öperformance troubleshooting problems£¨ÐÔÄÜÎÊÌ⣩

Ò»µ©ÄúÃ÷°×ÁËÄúµÄ¿Í»§¶ËÕýÔÚ·¢ËͶà¸öÇëÇóµ½SQLSERVER£¬SQLSERVER¶ËÕýÔÚ´´½¨¶à¸öÈÎÎñ£¨task£©È¥´¦Àí

Äú·¢¸øËûµÄÇëÇó£¬ÐÔÄܵÄÃÕÌâ¾Í¿ÉÒԺܼòµ¥µØ½â¾öÁË£ººÜ¶àʱºò£¬ÄúµÄÈÎÎñ²»ÊÇÕýÔÚÖ´ÐУ¨ÕýÔÚÕ¼ÁìCPU£©¾ÍÊÇ´¦ÓÚÕýÔڵȴý

ÿ´ÎµÈ´ý£¬SQLSERVER¶¼»áÒÀ¿¿ÄÚ²¿µÈ´ýͳ¼ÆÐÅϢȥÊÕ¼¯µÈ´ýµÄÐÅÏ¢£¨µÈ´ýʲôºÍµÈÁ˶à¾Ã£©¡£

ÀûÓÃÊÕ¼¯»ØÀ´µÄͳ¼ÆÐÅϢȥ½â¾öÐÔÄÜÆ¿¾±ÊǷdz£ºÃµÄ·½·¨

¸½ÉÏÁ½ÕÅÍêÕûµÄͼ

×ܽá

ÎÄÖкÃÏñÒÅ©ÁËScheduler

Scheduler

¶ÔÓÚÿ¸öÂß¼­CPU£¬SQLSERVER»áÓÐÒ»¸öschedulerÓëÖ®¶ÔÓ¦£¬ÔÚSQL²ãÃæÉÏ´ú±íCPU¶ÔÏó£¬

Ö»ÓÐÄõ½schedulerËùÓÐȨµÄworker²ÅÄÜÔÚÕâ¸öÂß¼­CPUÉÏÔËÐÐ

ÓÅ»¯£¨Optimization£©

¸Õ²Å˵µ½Ñ¡ÔñÒ»ÖÖÊý¾Ý·ÃÎÊ·¾¶£¨Ö´Ðмƻ®£©£¬ÏÖÔÚ¼ÌÐøËµÒ»¸öÇëÇó£¨request£©µÄÉúÃüÖÜÆÚµÄÏÂÒ»²½£ºÓÅ»¯

ÔÚSQLSERVERÀïÃæ£¬ÓÅ»¯Òâζ×Å´Ó¶à¸öÑ¡ÔñÌõ¼þÖÐÑ¡Ôñ×î¼ÑµÄÊý¾Ý·ÃÎÊ·¾¶¡£

¿¼ÂÇһϣ¬Èç¹ûÄãÓÐÒ»¸ö¼òµ¥µÄÉæ¼°µ½Á½¸ö±íµÄjoin²éѯ£¬Ã¿¸ö±í¶¼ÓжîÍâµÄË÷Òý£¬

ÕâÀï¾ÍÓÐ4ÖÖ¿ÉÑ¡µÄÖ´Ðз½°¸£¬È¥·ÃÎʱíÖеÄÊý¾Ý

ÒòΪÓÐÕâ÷á¶àµÄ¿ÉÑ¡·½°¸£¬²éѯ¸´ÔÓ¶ÈÒѾ­±È½Ï¸ßÁË£¬Èç¹ûÕâʱºò±íÖеÄË÷Òý¼ÌÐøÔö¶àµÄ»°£¬²éѯ¸´ÔÓ¶ÈÓпÉÄÜÒÔÖ¸ÊýµÄ·½Ê½Ôö³¤

ÔÙ¼ÓÉÏJOINÁª½Ó±¾À´¾ÍÓÐÈýÖÖÁª½Ó·½Ê½£ºnested loops join¡¢merge join¡¢hash join

¿ÉÏë¶øÖª£¬ÓÅ»¯Õâ¸öÃû´ÊÔÚSQLSERVERÀïÊǶàÃ´ÖØÒª£¬SQLSERVERʹÓÃÒ»¸ö²éѯÓÅ»¯Æ÷À´Ô¤¹ÀÕâÖмäÒªÏûºÄµÄʱ¼ä,IO,CPU

²éѯÓÅ»¯Æ÷»á¿¼ÂǸ÷ÖÖÖ´Ðз½°¸£¬SQLSERVER»á¾¡Á¦»ùÓÚÿÖÖÖ´Ðз½°¸µÄ¿ªÏúÈ¥×÷³öÆÀ¹À£¬È»ºó¾¡¿ÉÄÜÑ¡ÔñÒ»¸ö¿ªÏú×îµÍµÄ

Ö´Ðз½°¸¡£SQLSERVERÊ×ÏÈ»á¼ÆËãÔÚÏÖÓеıíÊý¾ÝÁ¿Ï¸÷ÖÖÖ´Ðз½°¸¸÷×ÔÐèÒª¶àÉٵĿªÏú¡£ÎªÁËÑ¡³öÒ»¸ö¿ªÏú×îµÍµÄÖ´Ðз½°¸£¬

SQLSERVERÐèÒªÖªµÀ×öÁª½ÓµÄÿÕűíµÄÊý¾ÝÁ¿ºÍ±íÀïÃæ¸÷¸ö×ֶεÄÊý¾ÝµÄ·Ö²¼£¬Õâ¾ÍÐèÒª¿¿Í³¼ÆÐÅÏ¢£¬

ÒòΪͳ¼ÆÐÅÏ¢±¾À´¾ÍÊÇÓÃÀ´Í³¼ÆÕâЩÊý¾ÝµÄ¡£ÁíÍâÒ»¸öÒª¿¼ÂǵÄÒòËØ¾ÍÊÇ£¬Ã¿ÖÖÖ´Ðз½°¸ËùÐèÒªµÄCPUÏûºÄºÍÄÚ´æÏûºÄ

×ÛºÏÒÔÉϸ÷ÖÖÒòËØ£¬SQLSRVER»áÔÚÿÖÖÖ´Ðз½°¸ÀïËã³öÒ»¸öcostÖµ

SQLSERVER»áÔÚÕâЩִÐз½°¸ÀïÑ¡³öÒ»¸öcostÖµ×îµÍµÄÖ´Ðз½°¸×÷ΪִÐмƻ®Ö´ÐÐ

´ó¼Ò¿´Ò»Ï£¬SQLSERVERÒª¶ÔÉÏÃæ¸÷ÖÖÒòËØ½øÐп¼ÂÇ£¬ÕâÀÂÇÊÇÐèҪʱ¼äµÄ£¬ËùÒÔΪʲ÷áSQLSERVER

ÐèÒª½«Ö´Ðмƻ®»º´æµ½ÄÚ´æÀïÒԱ㽫À´¼ÌÐøÊ¹ÓÃÕâ¸öÖ´Ðмƻ®£¬¾ÍÊÇΪÁ˽ÚÊ¡±àÒëʱ¼ä

½«À´Í¬ÑùµÄÇëÇó½øÈëµ½SQLSERVER£¬²¢ÇÒÕâЩÇëÇóÄܹ»ÔÚCACHEÀïÕÒµ½Ò»¸öÒѾ­±àÒëÁ˺ÍÓÅ»¯Á˵ÄÖ´Ðмƻ®

ËûÃǾÍÄÜÌø¹ý²éѯÓÅ»¯Æ÷µÄÓÅ»¯½×¶Î

ÕâÀïÒ»¶¨Òª×¢Ò⣺ͬÑùµÄÇëÇó½øÀ´SQLSERVERµÄʱºò£¬ÎÞÂÛCACHEÀïÓÐûÓпÉÒÔÖØÓõÄÖ´Ðмƻ®£¬SQLSERVER¶¼ÐèÒª

¶ÔÇëÇóÀïµÄSQLÓï¾ä½øÐнâÎö£¬ËùÒÔÎÒÉÏÃæ²Å˵£º¾ÍÊÇΪÁ˽ÚÊ¡±àÒëʱ¼ä ¶ø²»ÊÇ ¾ÍÊÇΪÁ˽ÚÊ¡½âÎö/±àÒëʱ¼ä

½âÊͺͱàÒëÄ£¿é£¨Ä£¿é»¯£©

 

   
´Îä¯ÀÀ       
Ïà¹ØÎÄÕÂ

»ùÓÚEAµÄÊý¾Ý¿â½¨Ä£
Êý¾ÝÁ÷½¨Ä££¨EAÖ¸ÄÏ£©
¡°Êý¾Ýºþ¡±£º¸ÅÄî¡¢ÌØÕ÷¡¢¼Ü¹¹Óë°¸Àý
ÔÚÏßÉ̳ÇÊý¾Ý¿âϵͳÉè¼Æ ˼·+Ч¹û
 
Ïà¹ØÎĵµ

GreenplumÊý¾Ý¿â»ù´¡Åàѵ
MySQL5.1ÐÔÄÜÓÅ»¯·½°¸
ijµçÉÌÊý¾ÝÖÐ̨¼Ü¹¹Êµ¼ù
MySQL¸ßÀ©Õ¹¼Ü¹¹Éè¼Æ
Ïà¹Ø¿Î³Ì

Êý¾ÝÖÎÀí¡¢Êý¾Ý¼Ü¹¹¼°Êý¾Ý±ê×¼
MongoDBʵս¿Î³Ì
²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿âÉè¼ÆÓëÓÅ»¯
PostgreSQLÊý¾Ý¿âʵսÅàѵ