行锁mysql怎么执行_Mysql调用什么情况会用到行锁与表锁
在調(diào)用存儲(chǔ)過程中,就會(huì)涉及到表鎖,行鎖這一概念:所謂區(qū)別:有索引的時(shí)候就是行鎖,沒有索引的時(shí)候就是表索。
innodb 的行鎖是在有索引的情況下,沒有索引的表是鎖定全表的.
表鎖演示(無索引)
Session1:
Session2:
mysql> update innodb_test set name='sjis' where id = 1 ;
處于等待狀態(tài)....
再回到session1 commit以后,session2就出來結(jié)果了(鎖定了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
實(shí)驗(yàn)結(jié)果是:我在session1的for update 操作看似只鎖定ID為2的行其實(shí)鎖定了全表,以至于后面session2的對ID為1的行update 需要等待Session1鎖的釋放。
行鎖演示(索引為ID)
Session1:
Session2:
實(shí)驗(yàn)結(jié)果:這次的鎖定是鎖定的行,所以沒有被鎖定的行(ID不為2的行)可以進(jìn)行update..
總結(jié)
以上是生活随笔為你收集整理的行锁mysql怎么执行_Mysql调用什么情况会用到行锁与表锁的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python将数字转为0010_用Pyt
- 下一篇: win10 mysql 3534_win