咸咸海风

https://github.com/xianxianhaifeng

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: :: :: 管理 ::
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 运行的时候,并没有给数据加上行级锁,可以对数据进行编辑,提交的瞬间完成上锁,提交,解锁等动作。所以,当多人对表进行操作的时候,并不会产生无法操作的现象。

posted on 2020-12-28 10:57  咸咸海风  阅读(927)  评论(0编辑  收藏  举报