mysql-事物

目录

A. 事务的基本要素

B. 事物并发,问题

C. mysql事物隔离级别

D. mysql默认隔离级别,可重复读(repeatable-read)

D.1. 出现幻读的情况

D.2. 验证快照的生成方式

D.3 RR(可重复读)防止幻读

D.4 可重复读,读取其他事物提交的数据

E. 串行化(serializable)

F. 读已提交(read-committed)

F.1. 不可重复读


A. 事务的基本要素

1. 原子性

2. 一致性

3. 隔离性

4. 持久性

B. 事物并发,问题

1. 脏读 , 事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据(在B未提交的时候,A就能看到B修改的数据)

2. 不可重复读 , 事物A对同一条数据多次读取的结果不同,(在事物A读取期间,事物B对数据进行了更新操作,然后提交,事物A能够看到事物B的更新操作),解决方式:锁住符合条件的行

3. 幻读,

  • 解释1. 当同一个查询在不同的时间产生不同的行集时,就会出现所谓的幻像问题。例如,如果执行了两次SELECT,但是第二次返回了第一次没有返回的行,那么该行就是一个“幻像”行。
  • 解释2. 在事物A中将 id<10 的数据删除(默认级别下,可重复读,事物B的操作会阻塞,因为存在间隙锁,事物A提交之后事物B才能够执行),事物B中插入一条id=3的数据然后提交,再次查询发现id=3的数据没有删除,出现幻觉。
  • 事物A对数据进行修改结束后,发现和预期的修改结果不一致。解决方法:锁住表
  •                事物A在没有提交的时候,事物B对该条数据的修改操作是“阻塞状态”(针对于新增的那条数据)
  •                事物A 修改,提交后,事物B 也对某条数据进行了修改,提交后,发现结果不是事物A想要的结果(针对于修改的那条数据)
  • 解释3. 第一个事务对一个表中的数据进行了修改,这种修改涉及到表中的全部数据行。 同时,第二个事务也修改这个表中的数据,这种修改是向表中插入一行新数据。那么,以后就会发生操作第一个事务的用户发现表中还有没有修改的数据行,就好象 发生了幻觉一样。

C. mysql事物隔离级别

事务隔离级别脏读不可重复读幻读
读未提交(read-uncommitted)
读已提交(read-committed)
可重复读(repeatable-read)
串行化(serializable)

D. mysql默认隔离级别,可重复读(repeatable-read)

可重复读(repeatable-read),执行第一条语句的时候准备的快照,准备快照的方法则是记录当前事务的版本号,没有进行数据的复制在

-- 数据库设置为 可重复读 隔离级别

set session transaction isolation level read committed;

D.1. 出现幻读的情况

左,右两边都开启了事物

在执行到第3步后,第4步能够查到数据

第5步,查不到数据

如果不执行 第6步, 则第7步,会一直阻塞,

当右边执行完commit后(第6步)

第7步执行成功(出现幻读)

D.2. 验证快照的生成方式

同时也验证了幻读( 左边事物查到了右边事物的数据,不完全算幻读,不要对概念扣得这么真 )

左边事物开启后不执行任何语句(在执行第一条语句的时候,会生成该事物的快照)

右边事物进行修改操作后,提交

左边出现幻读,能够读到该条数据。

D.3 RR(可重复读)防止幻读

D.4 可重复读,读取其他事物提交的数据

E. 串行化(serializable)

事物A 未提交之前,事物B无法进行操作。

F. 读已提交(read-committed)

可重复读(repeatable-read) 与 读已提交(read-committed) 的区别,一个有快照(可重复读,在事务A中执行第一条SQL 的时候才会生成快照,如果开启事物A后不执行SQL ,等待事物B修改完数据,提交之后,再在事物A中查看,则能看到事物B修改的数据),一个没有快照(读已提交)

不可重复读:意思是,一个事物中多次查询的结果,不相同,由于 可重复读(repeatable-read) 生成一个快照,不会查询到另外一个事物修改的内容,所以实现了 可重复读,即多次查询都能查到相同的结果

F.1. 不可重复读

右边的事物对数据进行修改后,提交,左边的事物,能够立即看到修改的内容

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲,遇到了互联网时代才发现能补上自古以来的短板,有效的提升管理的效率和业务水平。传统的管理模式,时间越久管理的内容越多,也需要更多的人来对数据进行整理,并且数据的汇总查询方面效率也是极其的低下,并且数据安全方面永远不会保证安全性能。结合数据内容管理的种种缺点,在互联网时代都可以得到有效的补充。结合先进的互联网技术,开发符合需求的软件,让数据内容管理不管是从录入的及时性,查看的及时性还是汇总分析的及时性,都能让正确率达到最高,管理更加的科学和便捷。本次开发的医院后台管理系统实现了病房管理、病例管理、处方管理、字典管理、公告信息管理、患者管理、药品管理、医生管理、预约医生管理、住院管理、管理员管理等功能。系统用到了关系型数据库中王者MySql作为系统的数据库,有效的对数据进行安全的存储,有效的备份,对数据可靠性方面得到了保证。并且程序也具备程序需求的所有功能,使得操作性还是安全性都大大提高,让医院后台管理系统更能从理念走到现实,确确实实的让人们提升信息处理效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值