医疗行业网站建设方案,做网站生意不赚钱,网站建设数据库ER图怎么画,红豆梧州论坛#x1f40c;个人主页#xff1a; #x1f40c; 叶落闲庭 #x1f4a8;我的专栏#xff1a;#x1f4a8; c语言 数据结构 javaEE 操作系统 Redis 石可破也#xff0c;而不可夺坚#xff1b;丹可磨也#xff0c;而不可夺赤。 MySQL 一、事务四大特性ACID1.1 原子性1.2 … 个人主页 叶落闲庭 我的专栏 c语言 数据结构 javaEE 操作系统 Redis 石可破也而不可夺坚丹可磨也而不可夺赤。 MySQL 一、事务四大特性ACID1.1 原子性1.2 一致性1.3 隔离性1.4 持久性 二、并发事务问题2.1 脏读2.2 不可重复读2.3 幻读 三、事务隔离级别3.1 脏读演示3.2 不可重复读演示3.3 可重复读演示 一、事务四大特性ACID
1.1 原子性
原子性Atomicity):事务是不可分割的最小操作单元要么全部成功要么全部失败。 事务是一组操作这组操作是不可分割的最小操作单元表示这组操作的内容要么全部执行成功如果有一个操作没有成功那么这组操作全部执行失败。 1.2 一致性
一致性(Consistency:事务完成时必须使所有的数据都保持一致状态。 例如在进行转账操作时一个账户给另一个用户转账不管这个操作最终成功还是因为转账失败回滚最后这两个账户的余额相加都是一致的。 1.3 隔离性
隔离性(Isolation):数据库系统提供的隔离机制保证事务在不受外部并发操作影响的独立环境下运行。 隔离性指的是有若干个并发事务比如有两个事务事务1和事务2都在同时操作这个数据库事务1去操作的时候不会影响并发的事务2的执行事物2去操作的时候也不会影响并发的事务1去执行这两个事务是在独立的环境下运行的。 1.4 持久性
持久性(Durability事务一旦提交或回滚它对数据库中的数据的改变就是永久的。 数据库当中的数据最终是存放在磁盘当中的一个事务不管是操作成功提交了还是操作异常回滚了最终对数据库的改变是永久的保留到磁盘中的。 二、并发事务问题
2.1 脏读
一个事务读到另外一个事务还没有提交的数据。 有两个并发执行的事物事务A要进行select和update操作事务B执行select操作它们操作的是同一个数据库当事务A执行完update操作还没有提交时事务B进行了select操作这时就查出了事务A将要修改但还没有提交修改的数据这被称为脏读。 2.2 不可重复读
一个事务先后读取同一条记录但两次读取的数据不同称之为不可重复读。 有两个并发事务事务A有4个操作第一个操作是selectid1一个数据事务A在进行第二个操作时事务B对事务A第一次查询的数据进行了修改并且提交了这次修改接着事务A进行第三个操作依然是selectid1与第一个操作一样但这次查到的数据发生了改变这就是不可重复读。 2.3 幻读
一个事务按照条件查询数据时没有对应的数据行但是在插入数据时又发现这行数据已经存在好像出现了”幻影”。 有两个并发事务事务A进行了selectid1的操作在提交前事务B进行了insertid1的操作并且提交完成此时数据库当中已经有了id为1的数据接下来事务A进行insertid1的操作此时会提示插入失败因为事务B已经插入了id为1的数据此时事务A再次进行selectid1的操作但还是没有查到已经解决了不可重复读的问题了这就类似出现了幻觉这个现象称之为幻读。 三、事务隔离级别
隔离级别脏读不可重复读幻读Read uncommitted√√√Read committedOracle默认×√√Repeatable ReadMySQL默认××√Serializable×××
查看事务隔离级别
SELECT TRANSACTION_ISOLATION;设置事务隔离级别
SET SESSION TRANSACTION ISOLATION LEVEL {Read uncommitted|Read committed|Repeatable Read|Serializable } ;3.1 脏读演示
Read uncommitted Read committed 3.2 不可重复读演示 3.3 可重复读演示