行锁mysql怎么执行_Mysql调用什么情况会用到行锁与表锁
生活随笔
收集整理的這篇文章主要介紹了
行锁mysql怎么执行_Mysql调用什么情况会用到行锁与表锁
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在調用存儲過程中,就會涉及到表鎖,行鎖這一概念:所謂區別:有索引的時候就是行鎖,沒有索引的時候就是表索。
innodb 的行鎖是在有索引的情況下,沒有索引的表是鎖定全表的.
表鎖演示(無索引)
Session1:
Session2:
mysql> update innodb_test set name='sjis' where id = 1 ;
處于等待狀態....
再回到session1 commit以后,session2就出來結果了(鎖定了8秒,過了8秒左右才去session1提交)。
mysql> update innodb_test set name='sjis' where id = 1 ;
Query OK, 1 row affected (8.11 sec)
Rows matched: 1 Changed: 1 Warnings: 0
實驗結果是:我在session1的for update 操作看似只鎖定ID為2的行其實鎖定了全表,以至于后面session2的對ID為1的行update 需要等待Session1鎖的釋放。
行鎖演示(索引為ID)
Session1:
Session2:
實驗結果:這次的鎖定是鎖定的行,所以沒有被鎖定的行(ID不為2的行)可以進行update..
總結
以上是生活随笔為你收集整理的行锁mysql怎么执行_Mysql调用什么情况会用到行锁与表锁的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python将数字转为0010_用Pyt
- 下一篇: win10 mysql 3534_win