跳到正文
Arlen

Spring 事务 —— 隔离机制

2016-05-27

引语:都知道数据库有锁机制,比如MySql的Innodb,提供读锁(S锁)和写锁(X锁),用户可通过SQL显示加锁执行,但直接使用锁在程序中使用是很麻烦的,所以数据库提供了自动锁机制。只要用户指定会话的事务隔离级别,数据库就会分析事务中的SQL,然后自动为事务操作加上适合的锁。

Spring隔离机制

隔离级别 脏读 不可重复读 幻象读 第一类丢失更新 第二类丢失更新
READ_UNCOMMITTED 允许 允许 允许 不允许 允许
READ_COMMITTED 不允许 允许 允许 不允许 允许
REPEATABLE_READ 不允许 不允许 允许 不允许 不允许
SERIALIZABLE 不允许 不允许 不允许 不允许 不允许
DEFAULT 数据库默认        
-- 查询数据库默认隔离级别
SELECT @@global.tx_isolation

: Spring提供了很多便利的东西,不熟悉,不了解每个配置的作用,不可乱用,不然随时可能入坑!

注意,隔离级别是建立在并发的概念上的,也就是说在编程过程中,只有在考虑到并发的情况下才去做特殊的隔离机制设置!隔离机制跟并发的性能此起彼涨,业务上需要数据完整性的需要高隔离级别,业务上需要高性能的则需要适当降低隔离级别。但在一般的编程中,数据库的默认隔离机制就够用了!

分享到: 更多