短视频直播源码,事务并发存在的问题

短视频直播源码,事务并发存在的问题
在短视频直播源码中,事务并发执行存在什么问题呢,换句话说就是,一个事务是怎么干扰到其他事务的呢?看例子吧~
假设现在有表:

CREATE TABLE `account` (
  `id` int(11) NOT NULL,
  `name` varchar(255) DEFAULT NULL,
  `balance` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `un_name_idx` (`name`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

表中有数据:

 

脏读(dirty read)

假设现在有两个事务A、B:

假设现在A的余额是100,事务A正在准备查询Jay的余额
这时候,事务B先扣减Jay的余额,扣了10
最后A 读到的是扣减后的余额

 

由上图可以发现,事务A、B交替执行,事务A被事务B干扰到了,因为事务A读取到事务B未提交的数据,这就是脏读。

不可重复读(unrepeatable read)

假设现在有两个事务A和B:

事务A先查询Jay的余额,查到结果是100
这时候事务B 对Jay的账户余额进行扣减,扣去10后,提交事务
事务A再去查询Jay的账户余额发现变成了90

 

事务A又被事务B干扰到了!在事务A范围内,两个相同的查询,读取同一条记录,却返回了不同的数据,这就是不可重复读。

幻读

假设现在有两个事务A、B:

事务A先查询id大于2的账户记录,得到记录id=2和id=3的两条记录
这时候,事务B开启,插入一条id=4的记录,并且提交了
事务A再去执行相同的查询,却得到了id=2,3,4的3条记录了。

 

事务A查询一个范围的结果集,另一个并发事务B往这个范围中插入/删除了数据,并静悄悄地提交,然后事务A再次查询相同的范围,两次读取得到的结果集不一样了,这就是幻读。

以上就是短视频直播源码,事务并发存在的问题, 更多内容欢迎关注之后的文章

posted @ 2025-07-12 09:55  云豹科技-苏凌霄  阅读(4)  评论(0)    收藏  举报