作者回复: 好几个同学说对,你第一个标明出处👍🏿
作者回复: 这些都不叫幻读,幻读的意思是“用一个事务里面,后一个请求看到的比之前相同请求看到的,多了记录出来”。
改了不算
大家关注一下这个问题。
好问题
作者回复: 1. 好问题,不会还是没解决我们说的一致性问题。如果在3、4之间插入了 Session B的逻辑呢
2. 我估计就是启动事务(执行begin),结束时提交(执行commit)吧,没有了解过所有框架,不确定哈
作者回复: 1. 如果有索引用到这个字段的话,比较大可能会用到这个索引,比主键索引小
2. 索引字段就算是NULL,上面的id也不是的
3. 进了Buffer pool 的原因吧
4. 嗯,rc用得挺多的,但是原因可能只是因为“以前是这么用的”。 使用rc可能有问题,也可能没问题。但是我觉得DBA不知道为什么这么选,这个是问题。
rc本身的问题其实前面我们说过一些,比如不是一致性读。后面也会有文章说到。
作者回复: 😄 来得及来得及
作者回复: 1. 对,这个是个bug, 从库上会全表扫描。MariaDB 的版本有解决这个问题。生产上我们最好不允许没有主键的表
2. 按照你问的,gap锁没问题了。delete 被锁是因为行锁吧。从库重放就是因为走全表扫描按行锁下来触发的
3. 出现这个问题肯定是binlog设置了row格式。
这样binlog里面有所有值。如果你有主键的话,就是主键查,没有的话…就是全表了
作者回复: count(id)可能会选择最小的索引来遍历
而count(字段)的话,如果字段上没有索引,就只能选主键索引
作者回复: 嗯,代码就是这么写的 我也觉得可以优化一下… 不过现在就这样😓
作者回复: 是的,咱们专栏07篇也有类似的介绍😆
作者回复: 索引条件过滤完后还多少行?如果行数少(几百行?)就没关系直接执行了
作者回复: 为什么会呢?不会的