1.它是用來進行數據併發訪問時,保證數據同步的一種方式;
它是屬於悲觀鎖的一種,悲觀鎖適用於數據庫的寫操作比較多的場景,更進一步劃分屬於意向排他鎖;
上的鎖會在該事務被commit或者rollback語句結束釋放;
2.產生的鎖:根據where的條件字段 是否是索引 + 是都有數據 ,可以產生 不上鎖、行鎖、表鎖;
一般來講,沒有數據不會產生鎖,有索引會產生行鎖,無索引會產生表鎖;
有幾種特例:
1)根據幾個字段一起查詢,比如 id 爲索引,name不爲索引,id會產生行鎖,name也會產生行鎖;
begin;
select id,name from goods where id = 1 and name='name' for update;
commit;
2) 根據非索引字段查詢,不管有沒有產生數據,都會產生表鎖;
3)查詢條件爲 模糊查詢 ,無論是否查到數據,產生表鎖;