input函数的作用是
结论:id是主键时,此SQL只需要在id=10这条记录上加X锁即可。
小程序游戏源码交易平台
结论:若id列是unique列,其上有unique索引。那么SQL需要加两个X锁,⼀个对应于id unique索引上的id = 10的记录,另⼀把锁对应于聚簇索引上的[name='d',id=10]的记录。
组合三:id列是⼆级⾮唯⼀索引,RC隔离级别
相对于组合⼀、⼆,组合三⼜发⽣了变化,隔离级别仍旧是RC不变,但是id列上的约束⼜降低了,id列不再唯⼀,只有⼀个普通的索引。假设delete from t1 where id = 10; 语句,仍旧选择id列上的索引进⾏过滤where条件,那么此时会持有哪些锁?同样见下图:
结论:若id列上有⾮唯⼀索引,那么对应的所有满⾜SQL查询条件的记录,都会被加锁。同时,这些记录在主键索引上的记录,也会被加锁。
组合四:id列上没有索引,RC隔离级别
mysql面试题基础知识相对于前⾯三个组合,这是⼀个⽐较特殊的情况。id列上没有索引,where id = 10;这个过滤条件,没法通过索引进⾏过滤,那么只能⾛全表扫描做过滤。对应于这个组合,SQL会加什么锁?或者是换句话说,全表扫描时,会加什么锁?这个答案也有很多:有⼈说会在表上加X锁;有⼈说会将聚簇索引上,选择出来的id = 10;的记录加上X锁。那么实际情况呢?请看下图:
结论:若id列上没有索引,SQL会⾛聚簇索引的全扫描进⾏过滤,由于过滤是由MySQL Server层⾯进⾏的。因此每条记录,⽆论是否满⾜条件,都会被加上X锁。但是,为了效率考量,MySQL做了优化,对于不满⾜条件的记录,会在判断后放锁,最终持有的,是满⾜条件的记录上的锁,但是不满⾜条件的记录上的加锁/放锁动作不会省略。同时,优化也违背了2PL的约束。
富马酸喹硫平片组合五:id列是主键,RR隔离级别
组合五,id列是主键列,Repeatable Read隔离级别,针对delete from t1 where id = 10; 这条SQL,加锁与组合⼀:[id主键,Read Committed]⼀致。
组合六:id列是⼆级唯⼀索引,RR隔离级别
solder
组合六的加锁,与组合⼆:[id唯⼀索引,Read Committed]⼀致。两个X锁,id唯⼀索引满⾜条件的记录上⼀个,对应的聚簇索引上的记录⼀个。
编程课哪里学比较好组合七:id列是⼆级⾮唯⼀索引,RR隔离级别

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。