²¢·¢ÎÊÌ⣺´óÊý¾ÝÁ¿µÄ·ÃÎÊ(¶þ)

2014-11-23 17:35:01 ¡¤ ×÷Õß: ¡¤ ä¯ÀÀ: 204
µÄ¸Å Ò». ΪʲôҪÒýÈëËø ¶à¸öÓû§Í¬Ê±¶ÔÊý¾Ý¿âµÄ²¢·¢²Ù×÷ʱ»á´øÀ´ÒÔÏÂÊý¾Ý²»Ò»ÖµÄÎÊÌâ: ¶ªÊ§¸üРA,BÁ½¸öÓû§¶ÁͬһÊý¾Ý²¢½øÐÐÐÞ¸Ä,ÆäÖÐÒ»¸öÓû§µÄÐ޸Ľá¹ûÆÆ»µÁËÁíÒ»¸öÐ޸ĵĽá¹û,±ÈÈ綩Ʊ ϵͳ Ôà¶Á AÓû§ÐÞ¸ÄÁËÊý¾Ý,ËæºóBÓû§ÓÖ¶Á³ö¸ÃÊý¾Ý,µ«AÓû§ÒòΪijЩԭÒòÈ¡ÏûÁ˶ÔÊý¾ÝµÄÐÞ¸Ä,Êý¾Ý»Ö¸´Ô­Öµ,´ËʱBµÃµ½µÄÊý¾Ý¾ÍÓëÊý¾Ý¿âÄÚµÄÊý¾Ý²úÉúÁ˲»Ò»Ö ²»¿ÉÖØ¸´¶Á AÓû§¶ÁÈ¡Êý¾Ý,ËæºóBÓû§¶Á³ö¸ÃÊý¾Ý²¢ÐÞ¸Ä,´ËʱAÓû§ÔÙ¶ÁÈ¡Êý¾Ýʱ·¢ÏÖǰºóÁ½´ÎµÄÖµ²»Ò»Ö ²¢·¢¿ØÖƵÄÖ÷Òª·½·¨ÊÇ·âËø,Ëø¾ÍÊÇÔÚÒ»¶Îʱ¼äÄÚ½ûÖ¹Óû§×öijЩ²Ù×÷ÒÔ±ÜÃâ²úÉúÊý¾Ý²»Ò»Ö ¶þ ËøµÄ·ÖÀà ËøµÄÀà±ðÓÐÁ½ÖÖ·Ö·¨£º 1. ´ÓÊý¾Ý¿âϵͳµÄ½Ç¶ÈÀ´¿´£º·ÖΪ¶ÀÕ¼Ëø£¨¼´ÅÅËüËø£©£¬¹²ÏíËøºÍ¸üÐÂËø MS-SQL Server ʹÓÃÒÔÏÂ×ÊÔ´ËøÄ£Ê½¡£ ËøÄ£Ê½ ÃèÊö ¹²Ïí (S) ÓÃÓÚ²»¸ü¸Ä»ò²»¸üÐÂÊý¾ÝµÄ²Ù×÷£¨Ö»¶Á²Ù×÷£©£¬Èç SELECT Óï¾ä¡£ ¸üР(U) ÓÃÓڿɸüеÄ×ÊÔ´ÖС£·ÀÖ¹µ±¶à¸ö»á»°ÔÚ¶ÁÈ¡¡¢Ëø¶¨ÒÔ¼°Ëæºó¿ÉÄܽøÐеÄ×ÊÔ´¸üÐÂʱ·¢Éú³£¼ûÐÎʽµÄËÀËø¡£ ÅÅËü (X) ÓÃÓÚÊý¾ÝÐ޸IJÙ×÷£¬ÀýÈç INSERT¡¢UPDATE »ò DELETE¡£È·±£²»»áͬʱͬһ×ÊÔ´½øÐжàÖØ¸üС£ ÒâÏòËø ÓÃÓÚ½¨Á¢ËøµÄ²ã´Î½á¹¹¡£ÒâÏòËøµÄÀàÐÍΪ£ºÒâÏò¹²Ïí (IS)¡¢ÒâÏòÅÅËü (IX) ÒÔ¼°ÓëÒâÏòÅÅËü¹²Ïí (SIX)¡£ ¼Ü¹¹Ëø ÔÚÖ´ÐÐÒÀÀµÓÚ±í¼Ü¹¹µÄ²Ù×÷ʱʹÓ᣼ܹ¹ËøµÄÀàÐÍΪ£º¼Ü¹¹ÐÞ¸Ä (Sch-M) ºÍ¼Ü¹¹Îȶ¨ÐÔ (Sch-S)¡£ ´óÈÝÁ¿¸üР(BU) Ïò±íÖдóÈÝÁ¿¸´ÖÆÊý¾Ý²¢Ö¸¶¨ÁË TABLOCK ÌáʾʱʹÓᣠ¹²ÏíËø ¹²Ïí (S) ËøÔÊÐí²¢·¢ÊÂÎñ¶ÁÈ¡ (SELECT) Ò»¸ö×ÊÔ´¡£×ÊÔ´ÉÏ´æÔÚ¹²Ïí (S) ËøÊ±£¬ÈÎºÎÆäËüÊÂÎñ¶¼²»ÄÜÐÞ¸ÄÊý¾Ý¡£Ò»µ©ÒѾ­¶ÁÈ¡Êý¾Ý£¬±ãÁ¢¼´ÊÍ·Å×ÊÔ´ÉϵĹ²Ïí (S) Ëø£¬³ý·Ç½«ÊÂÎñ¸ôÀë¼¶±ðÉèÖÃΪ¿ÉÖØ¸´¶Á»ò¸ü¸ß¼¶±ð£¬»òÕßÔÚÊÂÎñÉú´æÖÜÆÚÄÚÓÃËø¶¨Ìáʾ±£Áô¹²Ïí (S) Ëø¡£ ¸üÐÂËø ¸üР(U) Ëø¿ÉÒÔ·Àֹͨ³£ÐÎʽµÄËÀËø¡£Ò»°ã¸üÐÂģʽÓÉÒ»¸öÊÂÎñ×é³É£¬´ËÊÂÎñ¶ÁÈ¡¼Ç¼£¬»ñÈ¡×ÊÔ´£¨Ò³»òÐУ©µÄ¹²Ïí (S) Ëø£¬È»ºóÐÞ¸ÄÐУ¬´Ë²Ù×÷ÒªÇóËø×ª»»ÎªÅÅËü (X) Ëø¡£Èç¹ûÁ½¸öÊÂÎñ»ñµÃÁË×ÊÔ´ÉϵĹ²ÏíÄ£Ê½Ëø£¬È»ºóÊÔͼͬʱ¸üÐÂÊý¾Ý£¬ÔòÒ»¸öÊÂÎñ³¢ÊÔ½«Ëø×ª»»ÎªÅÅËü (X) Ëø¡£¹²Ïíģʽµ½ÅÅËüËøµÄת»»±ØÐëµÈ´ýÒ»¶Îʱ¼ä£¬ÒòΪһ¸öÊÂÎñµÄÅÅËüËøÓëÆäËüÊÂÎñµÄ¹²ÏíÄ£Ê½Ëø²»¼æÈÝ£»·¢ÉúËøµÈ´ý¡£µÚ¶þ¸öÊÂÎñÊÔͼ»ñÈ¡ÅÅËü (X) ËøÒÔ½øÐиüС£ÓÉÓÚÁ½¸öÊÂÎñ¶¼Òª×ª»»ÎªÅÅËü (X) Ëø£¬²¢ÇÒÿ¸öÊÂÎñ¶¼µÈ´ýÁíÒ»¸öÊÂÎñÊͷʲÏíÄ£Ê½Ëø£¬Òò´Ë·¢ÉúËÀËø¡£ ÈôÒª±ÜÃâÕâÖÖDZÔÚµÄËÀËøÎÊÌ⣬ÇëʹÓøüР(U) Ëø¡£Ò»´ÎÖ»ÓÐÒ»¸öÊÂÎñ¿ÉÒÔ»ñµÃ×ÊÔ´µÄ¸üР(U) Ëø¡£Èç¹ûÊÂÎñÐÞ¸Ä×ÊÔ´£¬Ôò¸üР(U) Ëø×ª»»ÎªÅÅËü (X) Ëø¡£·ñÔò£¬Ëø×ª»»Îª¹²ÏíËø¡£ ÅÅËüËø ÅÅËü (X) Ëø¿ÉÒÔ·ÀÖ¹²¢·¢ÊÂÎñ¶Ô×ÊÔ´½øÐзÃÎÊ¡£ÆäËüÊÂÎñ²»ÄܶÁÈ¡»òÐÞ¸ÄÅÅËü (X) ËøËø¶¨µÄÊý¾Ý¡£ ÒâÏòËø ÒâÏòËø±íʾ SQL Server ÐèÒªÔÚ²ã´Î½á¹¹ÖеÄijЩµ×²ã×ÊÔ´ÉÏ»ñÈ¡¹²Ïí (S) Ëø»òÅÅËü (X) Ëø¡£ÀýÈ磬·ÅÖÃÔÚ±í¼¶µÄ¹²ÏíÒâÏòËø±íʾÊÂÎñ´òËãÔÚ±íÖеÄÒ³»òÐÐÉÏ·ÅÖù²Ïí (S) Ëø¡£ÔÚ±í¼¶ÉèÖÃÒâÏòËø¿É·ÀÖ¹ÁíÒ»¸öÊÂÎñËæºóÔÚ°üº¬ÄÇÒ»Ò³µÄ±íÉÏ»ñÈ¡ÅÅËü (X) Ëø¡£ÒâÏòËø¿ÉÒÔÌá¸ßÐÔÄÜ£¬ÒòΪ SQL Server ½öÔÚ±í¼¶¼ì²éÒâÏòËøÀ´È·¶¨ÊÂÎñÊÇ·ñ¿ÉÒÔ°²È«µØ»ñÈ¡¸Ã±íÉϵÄËø¡£¶øÎÞÐë¼ì²é±íÖеÄÿÐлòÿҳÉϵÄËøÒÔÈ·¶¨ÊÂÎñÊÇ·ñ¿ÉÒÔËø¶¨Õû¸ö±í¡£ ÒâÏòËø°üÀ¨ÒâÏò¹²Ïí (IS)¡¢ÒâÏòÅÅËü (IX) ÒÔ¼°ÓëÒâÏòÅÅËü¹²Ïí (SIX)¡£ ËøÄ£Ê½ ÃèÊö ÒâÏò¹²Ïí (IS) ͨ¹ýÔÚ¸÷×ÊÔ´ÉÏ·ÅÖà S Ëø£¬±íÃ÷ÊÂÎñµÄÒâÏòÊǶÁÈ¡²ã´
νṹÖеIJ¿·Ö£¨¶ø²»ÊÇÈ«²¿£©µ×²ã×ÊÔ´¡£ ÒâÏòÅÅËü (IX) ͨ¹ýÔÚ¸÷×ÊÔ´ÉÏ·ÅÖà X Ëø£¬±íÃ÷ÊÂÎñµÄÒâÏòÊÇÐ޸IJã´Î½á¹¹ÖеIJ¿·Ö£¨¶ø²»ÊÇÈ«²¿£©µ×²ã×ÊÔ´¡£IX ÊÇ IS µÄ³¬¼¯¡£ ÓëÒâÏòÅÅËü¹²Ïí (SIX) ͨ¹ýÔÚ¸÷×ÊÔ´ÉÏ·ÅÖà IX Ëø£¬±íÃ÷ÊÂÎñµÄÒâÏòÊǶÁÈ¡²ã´Î½á¹¹ÖеÄÈ«²¿µ×²ã×ÊÔ´²¢Ð޸IJ¿·Ö£¨¶ø²»ÊÇÈ«²¿£©µ×²ã×ÊÔ´¡£ÔÊÐí¶¥²ã×ÊÔ´ÉϵIJ¢·¢ IS Ëø¡£ÀýÈ磬±íµÄ SIX ËøÔÚ±íÉÏ·ÅÖÃÒ»¸ö SIX Ëø£¨ÔÊÐí²¢·¢ IS Ëø£©£¬ÔÚµ±Ç°ËùÐÞ¸ÄÒ³ÉÏ·ÅÖà IX Ëø£¨ÔÚÒÑÐÞ¸ÄÐÐÉÏ·ÅÖà X Ëø£©¡£ËäȻÿ¸ö×ÊÔ´ÔÚÒ»¶Îʱ¼äÄÚÖ»ÄÜÓÐÒ»¸ö SIX Ëø£¬ÒÔ·ÀÖ¹ÆäËüÊÂÎñ¶Ô×ÊÔ´½øÐиüУ¬µ«ÊÇÆäËüÊÂÎñ¿ÉÒÔͨ¹ý»ñÈ¡±í¼¶µÄ IS ËøÀ´¶ÁÈ¡²ã´Î½á¹¹Öеĵײã×ÊÔ´¡£ ¶ÀÕ¼Ëø£ºÖ»ÔÊÐí½øÐÐËø¶¨²Ù×÷µÄ³ÌÐòʹÓã¬ÆäËûÈκζÔËûµÄ²Ù×÷¾ù²»»á±»½ÓÊÜ¡£Ö´ÐÐÊý¾Ý¸üÐÂÃüÁîʱ£¬SQL Server»á×Ô¶¯Ê¹ÓöÀÕ¼Ëø¡£µ±¶ÔÏóÉÏÓÐÆäËûËø´æÔÚʱ£¬ÎÞ·¨¶ÔÆä¼Ó¶ÀÕ¼Ëø¡£ ¹²ÏíËø£º¹²ÏíËøËø¶¨µÄ×ÊÔ´¿ÉÒÔ±»ÆäËûÓû§¶ÁÈ¡£¬µ«ÆäËûÓû§ÎÞ·¨ÐÞ¸ÄËü£¬ÔÚÖ´ÐÐSelectʱ£¬SQL Server»á¶Ô¶ÔÏó¼Ó¹²ÏíËø¡£ ¸üÐÂËø£ºµ±SQL Server×¼±¸¸üÐÂÊý¾Ýʱ£¬ËüÊ×ÏȶÔÊý¾Ý¶ÔÏó×÷¸üÐÂËøËø¶¨£¬ÕâÑùÊý¾Ý½«²»Äܱ»Ð޸쬵«¿ÉÒÔ¶ÁÈ¡¡£µÈµ½SQL ServerÈ·¶¨Òª½øÐиüÐÂÊý¾Ý²Ù×÷ʱ£¬Ëû»á×Ô¶¯½«¸üÐÂËø»»Îª¶ÀÕ¼Ëø£¬µ±¶ÔÏóÉÏÓÐÆäËûËø´æÔÚʱ£¬ÎÞ·¨¶ÔÆä¼Ó¸üÐÂËø¡£ 2. ´Ó³ÌÐòÔ±µÄ½Ç¶È¿´£º·ÖΪÀÖ¹ÛËøºÍ±¯¹ÛËø¡£ ÀÖ¹ÛËø£ºÍêÈ«ÒÀ¿¿Êý¾Ý¿âÀ´¹ÜÀíËøµÄ¹¤×÷¡£ ±¯¹ÛËø£º³ÌÐòÔ±×Ô¼º¹ÜÀíÊý¾Ý»ò¶ÔÏóÉϵÄËø´¦Àí¡£ MS-SQLSERVER ʹÓÃËøÔÚ¶à¸öͬʱÔÚÊý¾Ý¿âÄÚÖ´ÐÐÐ޸ĵÄÓû§¼äʵÏÖ±¯¹Û²¢·¢¿ØÖÆ Èý ËøµÄÁ£¶È ËøÁ£¶ÈÊDZ»·âËøÄ¿±êµÄ´óС,·âËøÁ£¶ÈСÔò²¢·¢ÐÔ¸ß,µ«¿ªÏú´ó,·âËøÁ£¶È´óÔò²¢·¢ÐԵ͵«¿ªÏúС SQL ServerÖ§³ÖµÄËøÁ£¶È¿ÉÒÔ·ÖΪΪÐС¢Ò³¡¢¼ü¡¢¼ü·¶Î§¡¢Ë÷Òý¡¢±í»òÊý¾Ý¿â»ñÈ¡Ëø ×ÊÔ´ ÃèÊö RID Ðбêʶ·û¡£ÓÃÓÚµ¥¶ÀËø¶¨±íÖеÄÒ»ÐС£ ¼ü Ë÷ÒýÖеÄÐÐËø¡£ÓÃÓÚ±£»¤¿É´®ÐÐÊÂÎñÖеļü·¶Î§¡£ Ò³ 8 ǧ×Ö½Ú (KB) µÄÊý¾ÝÒ³»òË÷ÒýÒ³¡£ À©Õ¹ÅÌÇø ÏàÁڵİ˸öÊý¾ÝÒ³»òË÷ÒýÒ³¹¹³ÉµÄÒ»×é¡£ ±í °üÀ¨ËùÓÐÊý¾ÝºÍË÷ÒýÔÚÄÚµÄÕû¸ö±í¡£ DB Êý¾Ý¿â¡£ ËÄ Ëø¶¨Ê±¼äµÄ³¤¶Ì Ëø±£³ÖµÄʱ¼ä³¤¶ÈΪ±£»¤ËùÇëÇó¼¶±ðÉϵÄ×ÊÔ´ËùÐèµÄʱ¼ä³¤¶È¡£ ÓÃÓÚ±£»¤¶ÁÈ¡²Ù×÷µÄ¹²ÏíËøµÄ±£³Öʱ¼äÈ¡¾öÓÚÊÂÎñ¸ôÀë¼¶±ð¡£²ÉÓà READ COMMITTED µÄĬÈÏÊÂÎñ¸ôÀë¼¶±ðʱ£¬Ö»ÔÚ¶ÁȡҳµÄÆÚ¼äÄÚ¿ØÖƹ²ÏíËø¡£ÔÚɨÃèÖУ¬Ö±µ½ÔÚɨÃèÄÚµÄÏÂÒ»Ò³ÉÏ»ñÈ¡ËøÊ±²ÅÊÍ·ÅËø¡£Èç¹ûÖ¸¶¨ HOLDLOCK Ìáʾ»òÕß½«ÊÂÎñ¸ôÀë¼¶±ðÉèÖÃΪ REPEATABLE READ »ò SERIALIZABLE£¬ÔòÖ±µ½ÊÂÎñ½áÊø²ÅÊÍ·ÅËø¡£ ¸ù¾ÝΪÓαêÉèÖõIJ¢·¢Ñ¡ÏÓαê¿ÉÒÔ»ñÈ¡¹²ÏíģʽµÄ¹ö¶¯ËøÒÔ±£»¤ÌáÈ¡¡£µ±ÐèÒª¹ö¶¯ËøÊ±£¬Ö±µ½ÏÂÒ»´ÎÌáÈ¡»ò¹Ø±ÕÓα꣨ÒÔÏÈ·¢ÉúÕßΪ׼£©Ê±²ÅÊͷŹö¶¯Ëø¡£µ«ÊÇ£¬Èç¹ûÖ¸¶¨ HOLDLOCK£¬ÔòÖ±µ½ÊÂÎñ½áÊø²ÅÊͷŹö¶¯Ëø¡£ ÓÃÓÚ±£»¤¸üеÄÅÅËüËø½«Ö±µ½ÊÂÎñ½áÊø²ÅÊÍ·Å¡£ Èç¹ûÒ»¸öÁ¬½ÓÊÔͼ»ñȡһ¸öËø£¬¶ø¸ÃËøÓëÁíÒ»¸öÁ¬½ÓËù¿ØÖƵÄËø³åÍ»£¬ÔòÊÔͼ»ñÈ¡ËøµÄÁ¬½Ó½«Ò»Ö±×èÈûµ½£º ½«³åÍ»ËøÊͷŶøÇÒÁ¬½Ó»ñÈ¡ÁËËùÇëÇóµÄËø¡£ Á¬½ÓµÄ³¬Ê±¼ä¸ôÒѵ½ÆÚ¡£Ä¬ÈÏÇé¿öÏÂûÓг¬Ê±¼ä¸ô£¬µ«ÊÇһЩӦÓóÌÐòÉèÖó¬Ê±¼ä¸ôÒÔ·ÀÖ¹ÎÞÏÞÆÚµÈ´ý Îå SQL Server ÖÐËøµÄ×Ô¶¨Òå 1 ´¦ÀíËÀËøºÍÉèÖÃËÀËøÓÅÏȼ¶ ËÀËø¾ÍÊǶà¸öÓû§ÉêÇ벻ͬ·âËø,ÓÉÓÚÉêÇëÕß¾ùÓµÓÐÒ»²¿·Ö·âËøÈ¨¶øÓֵȴýÆäËûÓû§ÓµÓеIJ¿·Ö·âËø¶øÒýÆðµÄÎÞÐÝÖ¹µÄµÈ´ý ¿ÉÒÔʹÓÃSET DEADLOCK_PRIORITY¿ØÖÆÔÚ·¢ÉúËÀËøÇé¿öʱ»á»°µÄ·´Ó¦·½Ê½¡£Èç¹ûÁ½¸ö½ø³Ì¶¼Ëø¶¨Êý¾Ý£¬²¢ÇÒÖ±µ½ÆäËü½ø³ÌÊÍ·Å×Ô¼ºµÄËøÊ±£¬Ã¿¸ö½ø³Ì²ÅÄÜÊÍ·Å×Ô¼ºµÄËø£¬¼´·¢ÉúËÀËøÇé¿ö¡£ 2 ´¦Àí³¬Ê±ºÍÉèÖÃËø³¬Ê±³ÖÐøÊ±¼ä¡£ @@LOCK_TIMEOUT ·µ»Øµ±Ç°»á»°µÄµ±Ç°Ëø³¬Ê±ÉèÖ㬵¥Î»ÎªºÁÃë SET LOCK_TIMEOUT ÉèÖÃÔÊÐíÓ¦ÓóÌÐòÉèÖÃÓï¾äµÈ´ý×èÈû×ÊÔ´µÄ×ʱ¼ä¡£µ±Óï¾äµÈ´ýµÄʱ¼ä´óÓÚ LOCK_TIMEOUT ÉèÖÃʱ£¬ÏµÍ³½«×Ô¶¯È¡Ïû×èÈûµÄÓï¾ä£¬²¢¸øÓ¦ÓóÌÐò·µ»Ø¡±Òѳ¬¹ýÁËËøÇëÇó³¬Ê±Ê±¶Î¡±µÄ 1222 ºÅ´íÎó