扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
一个事务是指:由一系列数据库操作组成的一个完整的逻辑过程。例如银行转帐,从原账户扣除金额,以及向目标账户添加金额,这两个数据库操作的总和,构成一个完整的逻辑过程,不可拆分。这个过程被称为一个事务,具有ACID特性。
目前创新互联已为上千家的企业提供了网站建设、域名、网页空间、网站托管、服务器托管、企业网站设计、上犹网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
1:原子性(Atomicity,或称不可分割性)
2:一致性(Consistency)
3:隔离性(Isolation,又称独立性)
4:持久性(Durability)
如果b用户将字段值更新为5,此时之前id值为3的状态会在undo表空间中增加一条记录,在commit前,a用户还是查询的undo表空间种的数据,当b用户commit后a用户查询到的结果就是更新后的值了(id=5),这个机制是oracle自身的机制,希望能够帮到你
是指作为单个逻辑工作单元执行的一系列操作。 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。一个逻辑工作单元要成为事务,必须满足所谓的ACID(原子性、一致性、隔离性和持久性)属性。
您好,其实数据库的事务处理机制其原理都是一样的,都是保证数据的一致性,要么更新所有相关联的数据,要么就不做更新。举个简单的例子:顾客去超市刷卡购物,这一过程起码涉及到2个数据库的更新,一是:顾客购物成功后更新银行的数据库,相应的扣除对应账户的余额,二是更新超市的商品库存的数据库,相应的把购走的商品的库存数量减少。
上面是正常的购物流程,假如出现了意外情况,比如:用户在购物时银行账户的余额不足,这时交易是不能成功的,如果没有给数据库加上事务处理机制,就会导致银行账户的余额确实不减,但是超市的数据库依旧会把库存商品减掉,这样就导致了数据的不同步,发生了混乱。所以必须使用事务处理机制,要么银行账户扣除余额,超市库存减少,要么就都不减,而避免了一个减少,一个不减的错误发生。希望对您有所帮助。
oracle使用语句savepoint sp_begintran开启显式事务,锁本身和事务是没有关系的,只要是数据库的操作都会产生锁。处于事务中的SQL语句只有这个事务提交(commit)之后,事务中的SQL语句影响的表记录上的锁才会释放。锁常见有共享锁(select语句产生)和排它锁(DML语句产生),如果一个表上加载有共享锁,还可以叠加共享锁,但不能叠加排它锁。如果一个表上加载有排他锁,就什么锁都不能加了,也就是说如果DML语句占用过多的时间,这些数据库效率就不高,就需要优化,当然select语句性能低了也不行。
每个存储过程可以不用显式事务,它本身就为你开启了一个隐式事务,如果需要开启显示事务,就通过savepoint sp_begintran开启,无论是不是显式还是隐式事务,你都得通过commit work提交事务,通过exception捕捉SQL语句异常,在异常发生时需要回滚事务(rollback work)。
事务是为了实现数据的一致性和并发处理,你对数据进行定义和修改时就会产生事务。
例如你执行update语句,这时事务就开始了,执行commit会提交事务,而rollback会回滚(撤销)事务。如果你什么也不做,那么正常退出程序时会自动提交,而程序异常中止则会回滚事务。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流