事务隔离
程序员文章站
2022-07-11 17:37:11
...
引自 *——http://zh.wikipedia.org/wiki/%E4%BA%8B%E5%8B%99%E9%9A%94%E9%9B%A2
事务隔离(isolation)定义了数据库系统中一个操作产生的影响什么时候以哪种方式可以对其他并发操作可见。隔离是事务ACID (原子性、一致性性、隔离性、持久性)四大属性中的一个重要属性。
并发可能造成的现象
1. 脏读:一个事务读到了其他事务未提交的更新
2. 不可重复读:一个事务两次读到同一条记录,但两次的结果不一样
3. 幻影读:一个事务两次查询,结果记录行数不一样
不同隔离级别对读的影响
未授权读 | 可能发生 | 可能发生 | 可能发生 |
授权读 | - | 可能发生 | 可能发生 |
可重复读 | - | - | 可能发生 |
可序列化 | - | - | - |
不同隔离级别对锁的影响
在基于锁的并发控制中,隔离级别决定了锁的持有时间。"C"-表示锁会持续到事务提交。 "S" –表示锁持续到当前语句执行完毕。如果锁在语句执行完毕就释放则另外一个事务就可以在这个事务提交前修改锁定的数据,从而造成混乱
未授权读 | S | S | S |
授权读 | C | S | S |
可重复读 | C | C | S |
可序列化 | C | C | C |