数据库的事务的四大特征 数据库的基本特点有哪些


数据库的事务的四大特征 数据库的基本特点有哪些
文章插图

数据库四大特性主要是指事务的四大特性ACID , 即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability) 。
首先了解下什么是事务:事务(Transaction)是并发控制的基本单位 。它是一个操作序列,这些操作要么都执行成功,要么都不成功(回滚),它是一个不可分割的工作单位 。例如 , 银行转帐操作:从A帐号扣款100元转账给B账户 , A账户减少100元 , B账户增加100元,这两个操作要么都执行成功,要么都不成功,数据回滚 , 从而防止数据错乱发生,如转账过程发生异常,B账户没收到钱,A账户的钱缺减少100元 。
1. 原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功 , 要么全部失败回滚 。事务在执行过程中发生错误,会被回滚到事务开始前的状态,就像这个事务从来没有执行过一样 。
2. 一致性(Consistency) 一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态 , 也就是说一个事务执行之前和执行之后都必须处于一致性状态 。如果事务成功地完成,那么系统中所有变化将正确地应用,系统处于有效状态 。如果在事务中出现错误 , 那么系统中的所有数据变化将自动地回滚,系统数据返回到原始状态 。
3. 隔离性(Isolation) 隔离性指的是在并发环境中,当不同的事务同时操纵相同的数据时,每个事务都有各自的完整数据空间 。由并发事务所做的修改必须与任何其他并发事务所做的修改隔离 。事务查看数据更新时,数据所处的状态要么是另一事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不能查看到中间状态的数据 。比如多个用户同时访问一张表,数据库每一个用户开启的事务,不能被其他事务所做的操作干扰,多个并发事务之间 , 应当相互隔离 。
例如同时有T1和T2两个并发事务执行,从T1角度来看,T2要么在T1执行之前就已经结束 , 要么在T1执行完成后才能开始 。将多个事务隔离开,每个事务都不能访问到其他事务操作过程中的状态 。
4. 持久性(Durability) 持久性是指事务的操作,一旦事务提交且事务成功结束,它对于数据库中数据的改变是永久性的保存下来 , 即使数据库发生故障也不能丢失已提交事务所完成的数据改变 。
在了解完数据库的四大特性之后,我们来了解几个关于读数据的概念:
1. 脏读 脏读是指一个事务读取了另一个未提交事务执行过程中的数据 。
也就是说 , 当一个事务正在对一条记录做修改时 , 在这个事务完成并提交之前,这条数据是处于待定状态的,可能提交也可能数据回滚,这时另一个事务来读取这条还没有提交的数据,并对该条数据做进一步的操作,就会产生未提交的数据依赖关系,这种现象被称为脏读 。
2. 不可重复读 不可重复读是指对于数据库中的某个数据,一个事务执行过程中多次查询返回不同查询结果,这就是在事务执行过程中 , 数据被其他事务提交修改了 。也就是说,这个事务在多次读取期间该数据被其它事务所修改 。
脏读和不可重复读的区别在于:脏读是一个事务读取了另一未完成的事务执行过程中的数据,而不可重复读是一个事务执行过程中 , 另一事务提交并修改了当前事务正在读取的数据 。
3. 幻读【数据库的事务的四大特征 数据库的基本特点有哪些】 幻读是事务非独立执行时发生的一种现象,例如事务T1批量对一个表中某一列的列值为A的数据修改为B的变更,就在这时,事务T2对这张表插入了一条列值为A的数据,并完成提交 。此时,如果事务T1查看刚刚完成操作的数据,发现还有一条列值为A的数据没有进行修改 , 而这条数据其实是T2刚刚提交插入的,这就是幻读 。
幻读和不可重复读都是读取了另一条已经提交的事务(这点和脏读是不同的),所不同的点是不可重复读查询的都是同一个数据项返回不同查询结果,而幻读针对的是一批数据整体更新 。

经验总结扩展阅读