select 中for update的使用

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)查詢條件爲 模糊查詢 ,無論是否查到數據,產生表鎖;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章