Java面试题(12)-mysql事务相关问题

本文详细介绍了数据库事务的ACID特性,包括原子性、一致性、隔离性和持久性,重点讨论了事务隔离性带来的脏读、不可重复读和幻读问题,以及MySQL中不同隔离级别的应用。MySQL默认的REPEATABLE-READ级别在实际场景中的作用和效率平衡。
摘要由CSDN通过智能技术生成

1、数据库事务四大特性(ACID---首字母缩写):

* 原子性:atomicity     一个事务操作是不可分割的整体,一个事务中的操作一定是要么全部成功,要么全部失败的。

* 一致性:consistency   一个事务执行前后,数据库的状态是一致的。A100 B100----------> A90   B110

* 隔离性:isolation     当多个事务同时执行的时候,互相是不会产生影响的。

* 持久性:durability    当事务执行完毕之后,其对数据库产生的影响一定会持久的保存在磁盘上。

2、事务隔离性带来的问题

在并发事务没有进行隔离的情况下,会发生如下问题:

* 脏读:一个事务读取到了另外一个事务没有提交的数据

* 不可重复读:一个事务读取到了另外一个事务修改的数据(修改)

* 幻读(虚读):一个事务读取到了另外一个事务新增的数据(新增)

3、事务隔离级别

MySQL提供了事务隔离级别来解决这些问题。在MySQL中共支持四种隔离级别,分别是:

级别名字隔离级别脏读不可重复读幻读数据库默认隔离级别
1读未提交read uncommitted
2读已提交read committedOracle
3可重复读repeatable readMySQL
4串行化serializable
读取未提交 最低的隔离级别,允许读取尚未提交的数据变更,可能会导致脏读、幻读或不可重复读
读取已提交 允许读取并发事务已经提交的数据, 可以阻 止脏读,但是幻读或不可重复读仍有可能发生
可重复读 对同一字段的多次读取结果都是一致的,除非数据是被本身事务自己所修改,可以阻止脏读和不可重复读,但幻读仍有可 能发生
可串行化 最高的隔离级别,完全服从 ACID 的隔离级别。所有的事务依次逐个执行,这样事务之间就完全不可能产生干扰,也就是说,该级 别可以防止脏读、不可重复读以及幻读
事务隔离级别越严格,数据库效率越低。 MySQL 默认的事务隔离级别是:
REPEATABLE-READ 级别,简称 RR 级别
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值