2️⃣ 本深圳小公司 Java 后端
投票
面试官说我可重复读和读已提交的实现原理答的不对。
我答的主要是 MVCC 机制中 ReadView 的生成机制不同
面试官说不是的(´・_・`)
他说在是因为如下原因
在可重复读的隔离级别下一个先执行的事物去读取数据会给数据加共享锁,并且共享锁不会在读取完成后立即释放,因为共享锁和排他锁互斥的原因,其他事务此时想要更新数据就会被阻塞,无法完成更新,所以数据两次读取的值是相同的。
而在读已提交级别事物会立即释放,所以别的事物进行数据更新不会被阻塞能完成数据更新导致两次读取数据不一致
那他的意思是原理是通过控制锁的释放时间了
我的内心:
不是 mvcc?
select 语句默认不是不加任何锁?
阻塞?不主动给 select 语句后面加 lock in share mode 会有共享锁吗?i
#大家都开始春招面试了吗# #
#数据人的面试交流地# #数据人offer决赛圈怎么选# #聊聊我眼中的AI# #牛客解忧铺#
我答的主要是 MVCC 机制中 ReadView 的生成机制不同
面试官说不是的(´・_・`)
他说在是因为如下原因
在可重复读的隔离级别下一个先执行的事物去读取数据会给数据加共享锁,并且共享锁不会在读取完成后立即释放,因为共享锁和排他锁互斥的原因,其他事务此时想要更新数据就会被阻塞,无法完成更新,所以数据两次读取的值是相同的。
而在读已提交级别事物会立即释放,所以别的事物进行数据更新不会被阻塞能完成数据更新导致两次读取数据不一致
那他的意思是原理是通过控制锁的释放时间了
我的内心:
不是 mvcc?
select 语句默认不是不加任何锁?
阻塞?不主动给 select 语句后面加 lock in share mode 会有共享锁吗?i
#大家都开始春招面试了吗# #
#数据人的面试交流地# #数据人offer决赛圈怎么选# #聊聊我眼中的AI# #牛客解忧铺#
全部评论
面试官没有明确区分普通SELECT和显式加锁的情况。对于普通SELECT,隔离级别的行为主要由MVCC决定,而不是锁的释放时间。
很正常,秋招的时候有我也被一个面试官整得怀疑自己了,最后回去一查就是他错了。
默认包是MVCC的,锁个鸡毛,反问问他他写mysql是不是每一条语句都加for update。
@神哥不得了
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
书海为家:#人脑vsAI#
尽管深度学习的最初灵感来源于人类的大脑,但二者的运作方式截然不同:深度学习所需要的数据量远比人脑所需要的多得多。可是一旦经过大数据训练,它在相同领域的表现将远远超过人类(尤其是在数字的量化学习,例如挑选某人最可能购买的产品,或从100万张脸中挑选最匹配的一张)——相对来说,人类在同一时间内只能把注意力放在少数几件事情上面,而深度学习算法却可以同时处理海量信息,并且发现在大量数据背后的模糊特征之间的关联,这些模糊特征不仅复杂而且微妙,人类往往无法理解,甚至可能不会注意到。
虽然深度学习拥有人类所缺乏的并行处理海量数据的“绝技”,但不具备人类在面对决策时独一无二的汲取过去的经验、使用抽象概念和常识的能力。
与人类相比,深度学习想要充分发挥作用,离不开海量的相关数据、单一领域的应用场景以及明确的目标函数,这三项缺一不可,如果缺少其中任何一项,深度学习将无用武之地。 点赞 评论 收藏
分享