自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(2)
  • 收藏
  • 关注

原创 乐观锁:超卖和CAS的思考

对比直接使用悲观锁,比如,将“比较和交换”这一部分代码上锁,作为临界区,使多线程互斥访问(这段代码相当于具有了原子性)。其所能达到的效果,也是等同于CAS的。而CAS能够实现无锁编程,是依赖于原子性的。也就是说,基于CAS思想实现的乐观锁,和悲观锁很像,都是对临界区代码实现了原子性。底层的CAS函数,就是一条CPU指令,自然是原子性的使用互斥锁,只有一个线程可以访问临界区,其他线程阻塞在Redis中利用Lua脚本实现。

2023-05-02 00:26:11 359 1

原创 MVCC解决不可重复读和幻读的一些理解

但是,由于事务1的更新操作,将该条数据的隐藏列中的tex_id设置为了自己的事务id,因此,根据上面的匹配原则,也就可以查询到了。实际上就是把一个在ReadView生成时刻之后才提交的数据,给改成了当前事务自己修改过的数据,产生了幻读。根据上图的内容,实际上,select语句,读取到的数据都是在生成ReadView这一时刻,其他事务中(在之前)已经提交过的数据,以及自己事务修改的数据。因此,经过上面的匹配原则之后,就无法读出未提交的数据,因此就解决了脏读问题。事务2插入数据并提交;

2023-04-16 00:43:52 161 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除