- 博客(3)
- 收藏
- 关注
原创 MVCC应用及原理
解决的问题: 解决不可重复读和幻读问题的一种乐观实现方式(代替行锁) 读-写的无锁并发控制,降低系统开销 其他方案及比较:LBCC,mvcc可以避免不同事物之间的竞争 LBCC解决的是当前读情况下的幻读(记录锁,间隙锁,临建锁) MVCC解决的是快照读情况下的幻读 实现原理:依赖于三个隐藏字段、undo log和read view 隐藏字段 DB_TRX_ID:记录插入或更新的最后一个事务id DB_ROLL_PTR:指向该行对应的undolog的指针 DB_ROW_ID:主键id 可能出现的
2021-08-15 13:37:56
165
原创 synchronized应用及原理
解决的问题:多线程并发问题;保证了原子性、可见性、有序性 其他方案及比较:lock,区别如下: Lock比较灵活,但需手动释放和开启 Lock不是Java语言内置的,是一个类 并发量较小情况下,synchronized有优势,高并发情况下,性能下降严重,此时适合用Lock Lock的粒度更细 实现原理:JVM基于进入和退出Monitor对象来实现方法同步和代码块同步。 同步代码块:使用monitorenter和monitorexit指令实现,每个对象都有一个monitor与之关联(LockWo.
2021-08-14 14:08:48
101
原创 Volatile应用及原理
解决的问题:为了提高处理速度,处理器不直接和内存进行通信,而是将系统内存的数据复制到内部缓存后在操作,但操作完不知何时会写会主内存。会导致出现一个线程修改了变量值还未同步到主内存中,另一个线程继续用缓存数据进行操作,出现了共享变量的不一致。 Volatile变量的的每次读取都从共享内存中读取最新值,而且写入会马上刷新到主内存,保证了多处理器开发中共享变量的“可见性”(不保证原子性)。就是一个线程里修改一个共享变量时,另一个线程能马上读到这个修改的值。 其他方案及比较:synchronized和Lock。
2021-08-14 11:55:56
120
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人