事务的4个基本特征(ACID):
原子性(Atomicity):原子性是指一个事务中的操作,要么全部成功,要么全部失败,如果失败,就回滚到事务开始前的状态。
一致性(Consistency):一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。那转账举栗子,A账户和B账户之间相互转账,无论如何操作,A、B账户的总金额都必须是不变的。
隔离性(Isolation):隔离性是当多个用户 并发的 访问数据库时,如果操作同一张表,数据库则为每一个用户都开启一个事务,且事务之间互不干扰,也就是说事务之间的并发是隔离的。再举个栗子,现有两个并发的事务T1和T2,T1要么在T2开始前执行,要么在T2结束后执行,如果T1先执行,那T2就在T1结束后在执行。关于数据的隔离性级别,将在后文讲到。
持久性(Durability):持久性就是指如果事务一旦被提交,数据库中数据的改变就是永久性的,即使断电或者宕机的情况下,也不会丢失提交的事务操作。
隔离级别
1.未提交读(read uncommitted)
是最低的隔离级别。其含义是允许一个事务读取另一个事物没有提交的数据。未提交读是一种危险的隔离级别。实际开发场景当中应用不广。适合对数据一致性没有要求。追求高并发的场景。最大的坏处是出现脏读。
2.读写提交(read committed)
是指一个事物只能读取另一个事务已经提交的数据。不能读取未提交的数据。
3.可重复读。
可重复读的目标是为了克服读写提交当中出现的不可重复读的现象。因为在读写提交的时候可能出现一些值得变化影响当前事务的执行。
4.串行化(Serializable)
串行化是数据库最高的隔离级别。他会要求所有的SQL语句都会按照顺序执行。这样就可以克服。隔离级别出现的各种问题。所以他能够完全保证数据的一致性。
网友评论