数据库完整性

[b]更新丢失:[/b]当有两个写进程同时修改相同的数据时,往往会出现一个写进程做的修改覆盖了另一个写进程的修改。这种情况是完整性问题最常见的类型。互斥锁的设计就是防范这种问题的出现。
[b]脏读:[/b]一个事务修改的数据在提交前被另一个事务读取,就会发生脏读。由于事务提交的修改有可能会被回滚,因而其他事务读取的这个数据就可能不正确。为了避免读锁导致的竞争,许多数据库都允许脏读。
[b]不可重复读:[/b]由于其他事务的修改,可能出现不可重复的读。例如一个事务根据某个条件做查询。当这个事务得到返回结果集之后,但是在这个事务完成之前,另一个事务修改了数据,使得某些数据不再满足前一个事务的查询条件。如果这个时候前一个事务重复这一个查询操作,那么他将得到一个不同的结果集。因而针对最初的结果集所做的修改有可能就无效了。简言之,根据同样的条件在同一事务中查询两次有可能产生不同的结果。
[b]幻影读:[/b]这类型的问题也是由于其他事务对数据的修改而导致的。例如,一个事务根据某个条件做查询。在前一个事务得到返回结果集之后,但是在他完成之前,另一个事务在数据库中插入了一条数据,并且该条数据符合前一个事务的选择条件,如果事务中的第一条sql语句返回了最初满足选择条件的行,之后该事务对满足条件的这些行执行操作,这个操作所涉及到的行与之前查询到的行不同,这就因为包含了幻影行而导致的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值