介绍 要聊事务,不可避免的要提到数据库事务的四大特性:ACID atomic consistence isolation durability 先放一个表格,看看4个隔离级别会出现的各种问题,网上的解释一大堆。看完后还是一脸懵逼,感觉懂了,又好像没懂。因为没有具体的演示例子,索性自己尝试复现这几个问 ...
分类:
其他好文 时间:
2020-05-12 11:46:10
阅读次数:
75
由于并发,如果不加以控制,就会出现以下问题:丢失修改,不可重复读,幻读(读脏数据)。 解决方法: 1)一级封锁协议 做法:修改对象之前必须加X锁,直到事务结束才能释放。 好处:可防止丢失修改。 2)二级封锁协议 做法:在一级锁的基础上,读取数据之前必须先对其加 S 锁,读完后即可释放 S 锁。 事务 ...
分类:
其他好文 时间:
2020-05-03 10:22:33
阅读次数:
77
1、事务 (1)概念 一组业务操作,要求要么全不成功,要么全部不成功 (2)特性(ACID) 原子性、一致性、隔离性、持久性 (3)隔离问题 脏读 不可重复读 幻读 (4)隔离级别 read uncommitted:读未提交,存在三个问题 read committed:读已提交,解决了脏读,存在两个 ...
分类:
编程语言 时间:
2020-04-17 20:10:29
阅读次数:
66
一、四种事务隔离级别 1.1 read uncommitted 读未提交 即:事务A可以读取到事务B已修改但未提交的数据。 除非是文章阅读量,每次+1这种无关痛痒的场景,一般业务系统没有人会使用该事务隔离级别,标准实在太宽松了。 1.2 read committed 读已提交(简称RC) 即:事务A ...
分类:
数据库 时间:
2020-04-06 20:28:55
阅读次数:
121
锁 行锁 record lock 间隙锁 gap lock 区间锁 next key lock 作用 防止幻读 什么时候会取得gap lock或者next key lock 隔离级别有关,只在REPEATABLE READ或以上的隔离级别下的特定操作才会取得gap lock或nextkey lock ...
分类:
数据库 时间:
2020-04-04 22:20:47
阅读次数:
178
一、事务的并发问题 1、脏读:事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据 2、不可重复读:事务 A 多次读取同一数据,事务 B 在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果 不一致。 3、幻读:系统管理员A将数据库中所有学生的成绩从 ...
分类:
数据库 时间:
2020-03-31 12:12:55
阅读次数:
101
库存的变化是原子性的,如果在更新的库存的时候没有考虑好如何更新库存,那么会导致库存的 重复修改、脏读、幻读、不可重复读等操作。 但如果加锁的粒度过于大的话,就会导致大量的更新库存的请求失败。无法支持高并发的。 那么该怎么样写合适代码来更新库存呢? 其实核心思想是: 1. 加事务 2. 查询更新 先看 ...
分类:
其他好文 时间:
2020-03-31 01:34:26
阅读次数:
239
!!!我的数据库演示版本为5.5,以后会追加最新数据库的演示版本 间隙锁(GAP Lock)时InnoDB在可重复读下的隔离级别下为了解决幻读问题引入的锁机制。幻读存在的问题是因为在新增或者更新时如果进行查询,会出现不一致的现象,这时单纯的使用行锁无法满足我们的需求,我们需要对一定范围的数据加锁,防 ...
分类:
其他好文 时间:
2020-03-28 19:54:04
阅读次数:
553
事务是有隔离级别 read uncommited (读未提交):不做任何隔离,具有脏读,不可重读对,幻读的问题 read committed (读提交):可以防止脏读,不能防止不可重复读和幻读的问题 repeated read(可重复读):可以防止脏读,不可重复读,不能放在幻读(mysql的默认隔离 ...
分类:
其他好文 时间:
2020-03-23 20:54:34
阅读次数:
90
1. 脏读 :脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。 2. 不可重复读 :是指在一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该同一数据。那么,在第一个事务中的两 次读数据 ...
分类:
其他好文 时间:
2020-03-18 18:22:16
阅读次数:
48