¡¡¡¡
mysql5.6
ÎÒÃÇÔÚ²Ù×÷Êý¾Ý¿âµÄʱºò£¬¿ÉÄÜ»áÓÉÓÚ²¢·¢ÎÊÌâ¶øÒýÆðµÄÊý¾ÝµÄ²»Ò»ÖÂÐÔ£¨Êý¾Ý³åÍ»£©
ÀÖ¹ÛËø
ÀÖ¹ÛËø²»ÊÇÊý¾Ý¿â×Ô´øµÄ£¬ÐèÒªÎÒÃÇ×Ô¼ºÈ¥ÊµÏÖ¡£ÀÖ¹ÛËøÊÇÖ¸²Ù×÷Êý¾Ý¿âʱ(¸üвÙ×÷)£¬Ïë·¨ºÜÀÖ¹Û£¬ÈÏΪÕâ´ÎµÄ²Ù×÷²»»áµ¼Ö³åÍ»£¬ÔÚ²Ù×÷Êý¾Ýʱ£¬²¢²»½øÐÐÈÎºÎÆäËûµÄÌØÊâ´¦Àí£¨Ò²¾ÍÊDz»¼ÓËø£©£¬¶øÔÚ½øÐиüкó£¬ÔÙÈ¥ÅжÏÊÇ·ñÓгåÍ»ÁË¡£
ͨ³£ÊµÏÖÊÇÕâÑùµÄ£ºÔÚ±íÖеÄÊý¾Ý½øÐвÙ×÷ʱ(¸üÐÂ)£¬ÏȸøÊý¾Ý±í¼ÓÒ»¸ö°æ±¾(version)×ֶΣ¬Ã¿²Ù×÷Ò»´Î£¬½«ÄÇÌõ¼Ç¼µÄ°æ±¾ºÅ¼Ó1¡£Ò²¾ÍÊÇÏȲéѯ³öÄÇÌõ¼Ç¼£¬»ñÈ¡³översion×Ö¶Î,Èç¹ûÒª¶ÔÄÇÌõ¼Ç¼½øÐвÙ×÷(¸üÐÂ),ÔòÏÈÅжϴ˿ÌversionµÄÖµÊÇ·ñÓë¸Õ¸Õ²éѯ³öÀ´Ê±µÄversionµÄÖµÏàµÈ£¬Èç¹ûÏàµÈ£¬Ôò˵Ã÷Õâ¶ÎÆÚ¼ä£¬Ã»ÓÐÆäËû³ÌÐò¶ÔÆä½øÐвÙ×÷£¬Ôò¿ÉÒÔÖ´ÐиüУ¬½«version×ֶεÄÖµ¼Ó1£»Èç¹û¸üÐÂʱ·¢Ïִ˿̵ÄversionÖµÓë¸Õ¸Õ»ñÈ¡³öÀ´µÄversionµÄÖµ²»ÏàµÈ£¬Ôò˵Ã÷Õâ¶ÎÆÚ¼äÒѾÓÐÆäËû³ÌÐò¶ÔÆä½øÐвÙ×÷ÁË£¬Ôò²»½øÐиüвÙ×÷¡£
¾ÙÀý£º
ϵ¥²Ù×÷°üÀ¨3²½Ö裺
1.²éѯ³öÉÌÆ·ÐÅÏ¢
select (status,status,version) from t_goods where id=#{id}
2.¸ù¾ÝÉÌÆ·ÐÅÏ¢Éú³É¶©µ¥
3.ÐÞ¸ÄÉÌÆ·statusΪ2
update t_goods
set status=2,version=version+1
where id=#{id} and version=#{version};
³ýÁË×Ô¼ºÊÖ¶¯ÊµÏÖÀÖ¹ÛËøÖ®Í⣬ÏÖÔÚÍøÉÏÐí¶à¿ò¼ÜÒѾ·â×°ºÃÁËÀÖ¹ÛËøµÄʵÏÖ£¬Èçhibernate£¬ÐèҪʱ£¬¿ÉÄÜ×ÔÐÐËÑË÷"hiberate ÀÖ¹ÛËø"ÊÔÊÔ¿´¡£
±¯¹ÛËø
ÓëÀÖ¹ÛËøÏà¶ÔÓ¦µÄ¾ÍÊDZ¯¹ÛËøÁË¡£±¯¹ÛËø¾ÍÊÇÔÚ²Ù×÷Êý¾Ýʱ£¬ÈÏΪ´Ë²Ù×÷»á³öÏÖÊý¾Ý³åÍ»£¬ËùÒÔÔÚ½øÐÐÿ´Î²Ù×÷ʱ¶¼ÒªÍ¨¹ý»ñÈ¡Ëø²ÅÄܽøÐжÔÏàͬÊý¾ÝµÄ²Ù×÷£¬Õâµã¸újavaÖеÄsynchronizedºÜÏàËÆ£¬ËùÒÔ±¯¹ÛËøÐèÒªºÄ·Ñ½Ï¶àµÄʱ¼ä¡£ÁíÍâÓëÀÖ¹ÛËøÏà¶ÔÓ¦µÄ£¬±¯¹ÛËøÊÇÓÉÊý¾Ý¿â×Ô¼ºÊµÏÖÁ˵ģ¬ÒªÓõÄʱºò£¬ÎÒÃÇÖ±½Óµ÷ÓÃÊý¾Ý¿âµÄÏà¹ØÓï¾ä¾Í¿ÉÒÔÁË¡£
˵µ½ÕâÀÓɱ¯¹ÛËøÉæ¼°µ½µÄÁíÍâÁ½¸öËø¸ÅÄî¾Í³öÀ´ÁË£¬ËüÃǾÍÊǹ²ÏíËøÓëÅÅËüËø¡£¹²ÏíËøºÍÅÅËüËøÊDZ¯¹ÛËøµÄ²»Í¬µÄʵÏÖ£¬ËüÁ©¶¼ÊôÓÚ±¯¹ÛËøµÄ·¶³ë¡£
¹²ÏíËø
¹²ÏíËøÖ¸µÄ¾ÍÊǶÔÓÚ¶à¸ö²»Í¬µÄÊÂÎñ£¬¶Ôͬһ¸ö×ÊÔ´¹²Ïíͬһ¸öËø¡£Ï൱ÓÚ¶ÔÓÚͬһ°ÑÃÅ£¬ËüÓµÓжà¸öÔ¿³×Ò»Ñù¡£¾ÍÏñÕâÑù£¬Äã¼ÒÓÐÒ»¸ö´óÃÅ£¬´óÃŵÄÔ¿³×Óкü¸°Ñ£¬ÄãÓÐÒ»°Ñ£¬ÄãÅ®ÅóÓÑÓÐÒ»°Ñ£¬ÄãÃǶ¼¿ÉÄÜͨ¹ýÕâ°ÑÔ¿³×½øÈëÄãÃǼң¬Ò»ÏÂÀí½âÁ˹þ£¬Ã»´í£¬Õâ¸ö¾ÍÊÇËùνµÄ¹²ÏíËø¡£
¸Õ¸Õ˵ÁË£¬¶ÔÓÚ±¯¹ÛËø£¬Ò»°ãÊý¾Ý¿âÒѾʵÏÖÁË£¬¹²ÏíËøÒ²ÊôÓÚ±¯¹ÛËøµÄÒ»ÖÖ£¬ÄÇô¹²ÏíËøÔÚmysqlÖÐÊÇͨ¹ýʲôÃüÁîÀ´µ÷ÓÃÄØ¡£Í¨¹ý²éѯ×ÊÁÏ£¬Á˽⵽ͨ¹ýÔÚÖ´ÐÐÓï¾äºóÃæ¼ÓÉÏlock in share mode¾Í´ú±í¶ÔijЩ×ÊÔ´¼ÓÉϹ²ÏíËøÁË¡£
±ÈÈ磬ÎÒÕâÀïͨ¹ýmysql´ò¿ªÁ½¸ö²éѯ±à¼Æ÷£¬ÔÚÆäÖпªÆôÒ»¸öÊÂÎñ£¬²¢²»Ö´ÐÐcommitÓï¾ä
---------------------