for update 和 rowid 的区别

SELECT a.*,rowid FROM test a;
SELECT * FROM test a FOR UPDATE;
 
  • 1
  • 2

for update 语句运行时,

会在对应行(where 条件)加上行级锁,如果没有where条件,会对全表进行加锁 ,当其他人忘记提交或者回滚事务的时候,就会发生锁表,只适合单人进行操作,不适合多人同时操作;

rowid 运行的时候,

并没有给数据加上行级锁,可以对数据进行编辑,提交的瞬间完成上锁,提交,解锁等动作。所以,当多人对表进行操作的时候,并不会产生无法操作的现象。

for update 和 rowid 的区别

SELECT a.*,rowid FROM test a;
SELECT * FROM test a FOR UPDATE;

for update 语句运行时,会在对应行(where 条件)加上行级锁,如果没有where条件,会对全表进行加锁 ,当其他人忘记提交或者回滚事务的时候,就会发生锁表,只适合单人进行操作,不适合多人同时操作;
rowid 运行的时候,并没有给数据加上行级锁,可以对数据进行编辑,提交的瞬间完成上锁,提交,解锁等动作。所以,当多人对表进行操作的时候,并不会产生无法操作的现象。

上一篇:MySQL数据库之rowid


下一篇:【看懂执行计划】访问表的方式