摘要: MVCC指的是多版本并发控制,每次修改数据时,都会生成一个新的版本,而不是直接在原有数据上进行修改。 并且每个事务只能看到在它开始之前已经提交的数据版本。 这样读操作就不会阻塞写操作,写操作也不会阻塞读操作,从而避免加锁带来的性能损耗。 底层实现依赖于Undo Log 和Read View。 每次修 阅读全文
posted @ 2025-05-10 22:02 kuki' 阅读(13) 评论(0) 推荐(0)
摘要: 1. 串行化 串行化是最高的隔离级别,通过强制事务串行执行来解决“幻读”问题。 但会导致大量的锁竞争问题,实际应用中很少用。 什么是幻读 幻读是指在同一个事务中,多次执行相同的范围查询,结果却不同。 这种现象通常发生在其他事务在两次查询之间 插入或删除了符合当前查询条件的数据。 在可重复读隔离级别下 阅读全文
posted @ 2025-05-10 18:31 kuki' 阅读(76) 评论(0) 推荐(0)
摘要: 可重复读能确保同一事务内多次读取相同数据的结果一致,即使其他事务已提交修改结果。 但没避免 幻读 幻读是指在同一个事务中,多次执行相同的范围查询,结果却不同。 这种现象通常发生在其他事务在两次查询之间插入或删除了符合当前查询条件的数据。 阅读全文
posted @ 2025-05-10 16:26 kuki' 阅读(30) 评论(0) 推荐(0)
摘要: 可重复读是MySQL默认的隔离级别,避免了“脏读”和“不可重复读”,通过MVCC和临键锁也能在一定程度上避免幻读。 阅读全文
posted @ 2025-05-10 15:47 kuki' 阅读(10) 评论(0) 推荐(0)
摘要: 四种隔离级别: 读未提交,读已提交,可重复读,串行化。 读未提交: 事务可以读取其他未提交事务修改的数据。 也就是,如果未提交的事务一旦回滚,读取到的数据就会变成了“脏数据”,通常不会使用。 读已提交: 避免了脏读,但可能会出现不可重复度。 同一事务内多次读取同一数据结果会不同,因为其他事务提交的修 阅读全文
posted @ 2025-05-10 15:36 kuki' 阅读(23) 评论(0) 推荐(0)
摘要: 事务是一条或多条SQL语句组成的执行单元。四个特性分别是A原子性、C一致性、I隔离性和D持久性。 A原子性主要通过Undo Log来实现,持久性通过Redo Log来实现,隔离性由MVCC和锁机制来实现,一致性有其他三特性保证。 原子性 事务中的所有操作要么全部完成,要么全部不完成, 一致性 事务从 阅读全文
posted @ 2025-05-10 15:19 kuki' 阅读(13) 评论(0) 推荐(0)
摘要: Spring的声明式事务管理是通过AOP(面向切面编程)和代理机制实现的。 第一步,在Bean初始化阶段创建代理对象 Spring容器在初始化单例Bean的时候,会遍历所有BeanPostProcessor实现类(BeanPostProcessor 是 Spring 提供的一个扩展接口,允许在 Be 阅读全文
posted @ 2025-05-10 14:41 kuki' 阅读(67) 评论(0) 推荐(0)
摘要: Spring中,事务有2类 声明式事务管理和编程式事务管理 编程式事务管理 编程式事务,使用TransactionTemplate和PlatformTransactionManager实现,需要显示地执行事务。(允许在代码中直接控制事务的边界,通过编程方式明确指定事务的开始、提交和回滚。 publi 阅读全文
posted @ 2025-05-10 12:24 kuki' 阅读(42) 评论(0) 推荐(0)