Mysql默认的事务隔离级别是多少?什么是脏读、幻读和不可重复读?
什么是脏读?幻读?不可重复阅读?什么是事务隔离级别? mysql默认的隔离级别是多少?
脏读:事务A读取了事务B更新的数据,然后B回滚了操作,那么A读到的数据就是脏数据
不可重复读:事务A多次读取相同的数据,事务B更新了并且在事务A的多次读取之间提交了数据,导致事务A多次读取相同数据时结果不一致。
幻读:系统管理员A将数据库中所有学生的成绩从具体成绩改为ABCDE成绩,但系统管理员B随后插入了一条具体成绩的记录。系统A的管理员完成更改后,发现还有一条记录没有更改,就像出现了幻觉一样。这称为幻读。
未分配读
未分配读,顾名思义,就是一个事务可以从另一个未分配事务中读取数据。
读取确认
读取确认,顾名思义,就是一笔交易必须等待另一笔交易确认后才能读取数据。
小A去买东西(卡上有一万元)。当他付账时(交易已开通),系统检测到他卡上预存了一万元,此时此刻! !小A的妻子想把家里的钱都转过来献上。当系统想要扣钱的时候,又检查了卡上的金额,发现钱没有了(当然,第二次检查金额要等到新郎转了钱)。但他会很郁闷
分析:这是一个阅读。如果事务更新(UPDATE)数据,则读操作事务必须等待更新操作事务提交后才能读取数据,这样可以解决脏读问题。但在这种情况下,事务范围内的两个相同的查询返回了不同的数据。这是一本无与伦比的读物。
重复读
重复读是指当数据被读取时(交易开始),不再允许修改操作
例:小A去买东西(卡上有1万元)。当他付完帐单时(交易已打开,不允许进行其他交易的UPDATE操作)。计费系统提前检测到他的卡上还有一万。目前,他的妻子无法转移这笔钱。然后计费系统可以扣除这笔钱。
分析:重复阅读可以解决不可重复阅读的问题。写完这篇之后,你需要明白一件事,不可重复读对应的是修改,即UPDATE操作。但也可能存在幻读问题。因为幻读问题对应的是INSERT操作,而不是UPDATE操作。
幻读什么时候发生?
例:小A去逛街,浪费了2000元,然后他的妻子去查看他的消费记录(查看FTS全表,给妻子开箱),发现他真的浪费了2000元,就在这里。当时小A花了一万买了一台电脑,INSERT一条消费记录并提交。当妻子打印出小A的消费记录清单(由妻子的企业提供)时,她意识到自己已经花了12000元,这似乎是幻觉。这是幻读。
可序列化 序列化
可序列化是事务隔离的最高级别。在这个级别上,事务是串行、顺序执行的,从而避免了脏读、不可重复读和幻读。但这种级别的事务隔离效率低下并且消耗数据库容量,因此一般不使用。
Mysql的默认隔离级别是只读的。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。