数据库事务

事务:是数据库管理系统的执行单元,可以是一个数据库操作或者一组数据库操作序列。
事务的ACID属性,原子性(Atomicity),一致性(Consistency),隔离性(Isolation),持续性(Durability)。

原子性:事务中所有的数据库操作要么全部成功,要么全部失败。如现实生活中的转账操作。
一致性:保证数据库数据始终一致(事务操作前,事务操作后)。
隔离性:多个事务并发执行的结果应该和串行执行的效果是一致的。显然最简单的隔离就是将所有的事务都串行执行,先来的先执行,但是这样子效率会很低下。如果多个事务只是读取同一批数据,完全可以并发进行。为了控制并发执行的效果就有了不同的隔离级别。
持续性:事务对数据库的影响应该是持久的,即使数据库因故障收到破坏,也能进行恢复。

隔离级别(transaction isolation level),对事务并发控制的等级。分为串行化(Serializable),可重复读(Repeatable Read),读已提交(Read Committed),读未提交(Read Uncommitted)。

[color=darkred][b]测试读未提交[/b][/color]
[img]http://dl2.iteye.com/upload/attachment/0088/4396/cbabcd2e-3882-3e6f-a9c8-d7ec0aa355f9.jpg[/img]

[b]客户端1[/b]
[img]http://dl2.iteye.com/upload/attachment/0088/4410/cbe6420b-acd0-38c5-9041-7c6dc6778d4c.jpg[/img]

[b]客户端2[/b]
[img]http://dl2.iteye.com/upload/attachment/0088/4406/981c1176-9b42-336d-be18-611f190cf9c6.jpg[/img]

[b]在“读未提交”隔离级别下,也会存在幻读(Phantom Read),即客户端2第二次查询之前,客户端1插入了一条新的记录,客户端2第二次查询的时候就会将这条幻影数据显示出来。[/b]

[color=darkred][b]测试读已提交[/b][/color]
[b]客户端1[/b]
[img]http://dl2.iteye.com/upload/attachment/0088/4891/ad75d2e9-22b6-3e98-9090-056fa8e305dc.jpg[/img]

[b]客户端2[/b]
[img]http://dl2.iteye.com/upload/attachment/0088/4893/d87d3a7c-d5e0-36de-b920-78811b5454bb.jpg[/img]

[color=darkred][b]测试可重复读[/b][/color]
[b]客户端2[/b]
[img]http://dl2.iteye.com/upload/attachment/0088/4895/ac10dccb-e087-3ff0-b4c0-52f3a2855f4d.jpg[/img]

[color=darkred][b]测试串行化[/b][/color]
[b]客户端1[/b]
[img]http://dl2.iteye.com/upload/attachment/0088/4908/7fe8025f-159d-3ddc-b7f4-6cb986de0fec.jpg[/img]

[b]客户端2[/b]
[img]http://dl2.iteye.com/upload/attachment/0088/4910/b836ca56-691d-3797-b25a-1146f508799f.jpg[/img]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值