事务隔离级别
来源:互联网 发布:json 特殊字符 编辑:程序博客网 时间:2024/06/05 14:42
对于同时运行的多个事务, 当这些事务访问数据库中相同的数据时, 如果没有采取必要的隔离机制, 就会导致各种并发问题:
1).脏读: 对于两个事物 T1, T2, T1 读取了已经被 T2 更新但还没有被提交的字段. 之后, 若 T2 回滚, T1读取的内容就是临时且无效的。也就是读取了其他事务还没有提交的数据
2).不可重复读: 对于两个事物 T1, T2, T1 读取了一个字段, 然后 T2 更新了该字段. 之后, T1再次读取同一个字段, 值就不同了。当前事务已经读取的数据记录,被其他事务修改或删除。
3).幻读: 对于两个事物 T1, T2, T1 从一个表中读取了一个字段, 然后 T2 在该表中插入了一些新的行. 之后, 如果 T1 再次读取同一个表, 就会多出几行。其他事务插入了新的数据,当前事务以相同的查询条件,在那个事务插入数据之前和之后查询数据,得到的数据记录的条数不一样
数据库事务的隔离性: 数据库系统必须具有隔离并发运行各个事务的能力, 使它们不会相互影响, 避免各种并发问题.
一个事务与其他事务隔离的程度称为隔离级别. 数据库规定了多种事务隔离级别, 不同隔离级别对应不同的干扰程度, 隔离级别越高, 数据一致性就越好, 但并发性越弱
隔离级别(isolation level),是指事务与事务之间的隔离程度。
显然,事务隔离程度越高,并发性越差、性能越低;事务隔离程度越低,并发性越强、性能越高。
Oracle明确支持ANSI/ISO SQL92中定义的serializable和read committed两种事务隔离级别。同时,Oracle还提供了自己独有的事务隔离级别:read only。
所以,可以说Oracle共支持3种事务隔离级别:
1.serializable
2.read committed
3.read only
Oracle默认的隔离级别是read committed。
查看数据库隔离级别的方法:
1.SELECT * FROM dual FOR UPDATE;
2.SELECT s.sid, s.serial#,
CASE BITAND(t.flag, POWER(2, 28))
WHEN 0 THEN 'READ COMMITTED'
ELSE 'SERIALIZABLE'
END AS isolation_level
FROM v$transaction t
JOIN v$session s ON t.addr = s.taddr AND s.sid = sys_context('USERENV', 'SID');
修改数据库隔离级别的方法:
设置隔离级别使用 SET TRANSACTION ISOLATION LEVEL [READ UNCOMMITTED|READ COMMITTED|REPEATABLE READ|SERIALIZABLE]
Mysql 支持 4 中事务隔离级别. Mysql 默认的事务隔离级别为: REPEATABLE READ
设置隔离级别
1).在 MySql 中设置隔离级别
每启动一个 mysql 程序, 就会获得一个单独的数据库连接. 每个数据库连接都有一个全局变量 @@tx_isolation, 表示当前的事务隔离级别. MySQL 默认的隔离级别为 Repeatable Read
查看当前的隔离级别: SELECT @@tx_isolation;
设置当前 mySQL 连接的隔离级别:
set transaction isolation level read committed;
设置数据库系统的全局的隔离级别:
set global transaction isolation level read committed;
- 事务级别 锁 隔离级别
- 事务隔离级别
- SQL事务隔离级别
- 关于事务隔离级别
- 关于事务隔离级别
- 事务隔离级别
- 事务隔离级别
- 数据库事务隔离级别
- SQL事务隔离级别
- JDBC事务隔离级别
- SQL事务隔离级别
- 事务隔离级别演示
- 事务隔离级别
- 数据库事务隔离级别
- 事务隔离级别
- 事务隔离级别2
- 事务隔离级别
- 事务隔离级别-转
- 人工神经网络
- poj 1151(线段树+扫描线)
- 如何做到js绑定事件的同时不执行事件
- 应用服务器性能优化总结
- GC
- 事务隔离级别
- can't open /dev/tty2: No such file or directory问题解决 亲自实验
- Unity3D调用摄像头显示当前拍摄画面
- CSS3过渡
- 脉冲耦合神经网络
- HDU 1579 Function Run Fun(记忆化搜索)
- 存储过程概念
- 【脚本化文档】——文档和元素的几何形状和滚动
- 大型网站的 HTTPS 实践(1):HTTPS 协议和原理