qq_深都_03155654

老师,通过非索引字段更新数据时,是不是只有显式加锁for update时,innodb才会对所有记录进行加锁,,如果直接update. ....where usernsme=11 是不会对所有记录加锁的是么,比如 sql1: update...where usernsme=11 for update sql2: update...where username=11 sql1所有记录加锁 sql2,当前更新数据隐式加锁,其他所有记录不加锁

2019-09-30
1
1
回复 1
马听老师 回复 qq_深都_03155654

更新的时候,不加 for update 也会加锁,如果条件字段没有索引,则需要扫描所有的行,去找到对应的记录,因此会锁所有的记录。应该是 select * from table_name where a=1 默认不会加排他锁,但是加了 for update,如果a 字段有索引,就会对这一行加排他锁了;如果a 字段没索引,就对所有记录加排他锁了。

2019-10-27
没有更多内容
取消 回复 发送