事务是数据库中一个单独的执行单元,当在数据库中更新数据成功时候,事务中更改的数据便会提交,不可改变。否则,事务就取消或者回滚,更改无效。
事务必须满足4个属性:原子性,一致性,隔离性,持久性。
原子性:事务是一个不可分割的整体,为了保证事务的总体目标,事务必须具有原子性,就是当数据更改时,要么全部执行,要么全不执行。
一致性:一个事务执行之前和执行之后,数据库数据必须保持一致性状态。数据库的一致性应该满足模式锁制定的约束,要么在完整执行该事务后数据库仍然处于一致性状态。为了维护所有数据的完整性,在关系型数据库中,所有规则必须应用到事务的更改上。为了维护所有数据的完整性,在关系型数据库中,所有规则必须应用到事务的修改上。数据库一致性状态由用户来负责,由并发控制机制实现,例如银行转账,转账前后两个账户金额之和应保持不变。由于并发操作带来的数据不一致性包括丢失数据修改,读脏数据。
隔离性:隔离性也成为独立性,当两个或多个事务并发执行时,为了保证数据的安全性,将一个事务的内部操作与事务的操作隔离起来,不被其他正在进行的事务看到,例如,对任何一对事务t1和t2,对t1来说,t2要么在t1开始之前已经结束,要么在t1完成之后再开始执行。数据库有四种类型的事务隔离级别:不提交的读,提交的读,可重复的读和串行化。因为隔离性是的每个事务的更新在它被提交之前,对其他事务是不可见的,所以,实现隔离性是解决临时更新与消除级联回滚问题的一种方式。
持久性:也被成为永久性,事务完成时之后,DBMS保证它对数据库中的数据的修改是永久性的,当系统或介质发生故障时,该修改也永久保持。持久性一般通过数据库备份与恢复来保证。
严格来说,数据库事务属性是由数据库管理系统来进行保证的,在整个应用程序运行的过程中,运用无需去考虑数据库的acid实现。
一般情况下,通过执行commit或rollback语句来终止事务,当执行commit语句时,自事务启动以来对数据库所做的一切更改就成为永久性的了,即被写入磁盘;而当执行RollBack语句时,自事务启动以来对数据库所做的一切更改都会被撤销,并且数据库中内容返回到事务开始之前所处的状态。无论在什么情况下,当事务完成时,都能保证回到一致状态。
425

被折叠的 条评论
为什么被折叠?



