悲觀鎖:假設每一次拿數(shù)據,都有認為會被修改,所以給數(shù)據庫的行或表上鎖。要注意for update要用在索引上歇拆,不然會鎖表。
START TRANSACTION; # 開啟事務
select * from table_name where id=1 for update;
UPDATE table_name SET name= 'nike' WHERE id = 1;
COMMIT; # 提交事務
樂觀鎖:就是很樂觀范咨,每次去拿數(shù)據的時候都認為別人不會修改故觅。更新時如果version變化了,更新不會成功渠啊。
update status set name='nike',version=(version+1) where id=1 and version=version;