知识卡片
事务隔离级别的现实取舍
内容
最严格的事务隔离级别(可序列化)在理论上能杜绝所有并发异常,但代价是让并发事务近似于 排队执行,在真实的多用户系统(比如网站)里几乎不现实,因为对数据库的访问从来不会真正 按顺序依次发生,用了它反而容易撞上事务死锁。实践中更常用的是折中的隔离级别(如可重复 读、读已提交),把”完全杜绝异常”换成”接受某些边界情况下的异常读现象”,然后自己在应用 层补上死锁检测和失败重试的逻辑,并给事务设置一个有限的超时时间兜底。发散:这是一个反 复出现的工程模式——当”理论最优”的方案代价过高时,退而求其次选一个”够用”的基线,再用 应用层的补偿逻辑(重试、超时、探测)去弥补基线放弃掉的保证,而不是死磕在理论最优解上。
参考来源
《精通Hibernate》附录D《事务隔离》