for update:
当语句运行时,会在对应行(where子句)加上行级锁,无where子句等于全表上锁。若遇到客户端断网、测试人员忘记提交\回滚事务,则会发生锁表。
rowid: 运行后并未给数据加上行级锁(通过物理地址去确定某一行数据),但可以编辑数据,提交事务的瞬间完成上锁、提交、解锁等动作,不易发生锁表。
for update不如select a.*,a.rowid from t,因为前者可能会造成锁表,后者不会锁表;
本文探讨了forupdate与rowid在SQL语句中的不同作用。forupdate在运行时会加行级锁,可能导致锁表;而rowid则在提交事务瞬间才上锁,减少锁表风险。
for update:
当语句运行时,会在对应行(where子句)加上行级锁,无where子句等于全表上锁。若遇到客户端断网、测试人员忘记提交\回滚事务,则会发生锁表。
rowid: 运行后并未给数据加上行级锁(通过物理地址去确定某一行数据),但可以编辑数据,提交事务的瞬间完成上锁、提交、解锁等动作,不易发生锁表。
for update不如select a.*,a.rowid from t,因为前者可能会造成锁表,后者不会锁表;
1321
3534
2778
4013

被折叠的 条评论
为什么被折叠?
