mysql楽観的ロック同時問題の解決


ブログ1:根本的な解決策は1つしかありません:キュー、他の言うことは役に立ちません:https://www.cnblogs.com/sheseido/p/5038562.html
ブログ2:https://www.cnblogs.com/laoyeye/p/8097684.html1、バージョン番号を使用して楽観的なロックバージョン番号を実現する方法は2種類あり、1つはデータバージョンメカニズムであり、1つはタイムスタンプメカニズムである.具体的には以下の通りです.
      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};

2、使用条件制限による楽観ロックの実現
UPDATE t_goods
SET num = num - #{buyNum} 
WHERE
    id = #{id} 
AND num - #{buyNum} >= 0 
AND STATUS = 1

ブログ3:https://www.cnblogs.com/ssskkk/p/8673374.html
問題の導入
         REPEATABLE_READ   :      select             。
         READ COMMITTED   :     select             。
Mysql          repeatable_read  :https://www.cnblogs.com/kangshuai/p/5735374.html
 :        select           (         commit)   。
 :       ,      update    ,            commit  update    。

楽観的なロック処理の同時の原理の重点
1)      select               ,                   (         REPEATABLE_READ    )。                   。
2)            select    ,   where                     。                       ,      ,    。

だから次のように処理することができます(楽観的なロックを利用して物事の同時処理を処理します)
            (   ),            , update    where                       +1,    

  1)select num,version from table;
  2)update table set num=num-1 ,version =version+1 where condition=? version=#{version} 
  3)Query OK, 1 rows affected (0.04 sec) |   :1 rows affected 
     update    where                       +1: update table set num=num-1 ,version =version+1 where condition=? version=#{version} 
                where                          version,  update       (Query OK, 1 rows affected (0.04 sec)) 0        。()