update是表锁还是行锁?

如表字段有:id name age
表 数 据:

id 姓名 年龄
1 张三 10
1 李四 20
update test set name = '张三1' where age = 10;
update test set name = '李四1' where age = 20;	

对两条不同的记录进行修改,第一条记录更新未提交,第二条记录更新会显示在等待的状态。
当把第一条记录commit后,第二条记录也可以提交commit;

若在表test中添加索引age

update test set name = '张三2' where age = 10;
update test set name = '李四2' where age = 20;	

第一条记录更新未提交,第二条记录更新不受影响

结论:
没有加索引是表锁,加了索引是行锁。(mysql)
行锁(oracal)

你可能感兴趣的:(java,oracle,mysql)