新说MySQL事宜断绝级别!
By default, InnoDB operates in REPEATABLE READ transaction isolation level. In this case, InnoDB uses next-key locks for searches and index scans, which prevents phantom rows (see Section 14.7.4, “Phantom Rows”). 凭证本来这句话的意思,应该是 InnoDB默认用了REPEATABLE READ。在这种环境下,行使next-key locks办理幻读题目! 功效预计,某个海内翻译职员翻着翻着酿成了 InnoDB默认用了REPEATABLE READ。在这种环境下,可以办理幻读题目! 然后各人继承你抄我,我抄你,功效你懂的! 显然,漏了"行使了next-key locks!"这个前提后,意思完全改变,我们在该断绝级别下执行语句
是快照读,是不加任何锁的,基础不能办理幻读题目,除非你用
这样,你就用上了next-key locks,才气办理幻读题目! 串行读即SERIALIZABLE_READ。在该断绝级别下,全部的select语句后都自动加上lock in share mode。因此,在该断绝级别下,无论你怎样举办查询,城市行使next-key locks。全部的select操纵均为当前读! ![]() OK,留意看上表赤色部门!就是由于在该断绝级别下行使了next-key locks,innodb将pId=1这条索引记录,和(1,++∞)这个间隙锁住了。其他事宜要在这个间隙上插数据,就会阻塞,从而防备幻读产生! 有的人会说,你这第二次查询的功效,也变了啊,明明和第一次查询功效纷歧样啊?对此,我只能说,请看清晰啊。这是被本身的事宜改的,不是被其他事物修改的。这不算是幻读,也不是不行一再读。 总结上面罗里吧嗦一大堆,最其后一个表格做总结吧,你口试答这个表就行。上面的统统是为了这张表做筹备! 【编辑保举】
点赞 0 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |