事务特性(ACID)

1.1.1. 事务特性(ACID)

原子性:一个事务是一个整体,不可再分割,要么同时成功,要么同时失败, 回滚。(把一组操作放入事务中)。
一致性:事务的执行的前后,数据的完整性要得到保证(数据的总量是不变的)。
隔离性:多个事务之间,互相独立,互不影响。
(强调的是多个用户并发访问数据库时,某个用户事务不能被其他用户的事务所干扰,多个并发事务之间的数据要相
互隔离。解决多个用户对同一个数据进行操作,数据库会有 事务的 隔离级别来进行解决)
持久性:当事务一旦被提交,它对数据库中的数据更改是永久性的。(即使数据库发生故障也不应该对其有任何影响)

1.1.2.并发事务带来的问题(脏读,不可重复读,幻读)
什么是脏数据?

脏读: 查询语句查到了一个事务,未提交的数据。
释义:指当一个事务正在访问数据,并且对数据进行了修改,而当前修改还没有提交到数据库,此时另外一个事务也访问这个数据,并且使用了该	 
	数据。因为这个数据是还没有提交的数据, 那么另外一个事务读到的此数据,我们称之为脏数据,依据脏数据所做的操作可能是不正确的。
幻读: 一个事务在执行DML语句的同时,另一个事务也在执行DML语句,他们共同修改了同一表格中的数据。
释义:指当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行了修改,这种修改涉及到表中的全部数据行。同时,第二
	个事务也修改这个表中的数据,这种修改是向表中插入一行新数据。那么,以后就会发生操作第一个事务的用户发现表中还有没有修改的数
	据行,就好象发生了幻觉一样。
不可重复读: 一个事务中,两次连续读取的结果不一致。
释义:指在一个事务内,多次读取同一数据的结果不一致。在这个事务还没有结束时,另外一个事务也访问该同一数据。 那么,在第一个事务中
	的两次读数据之间,由于第二个事务的修改,那么第一个事务两次读到的数据可能是不一样的。这样就发生了在一个事务内两次读到的数据
	是不一样的,因此称为是不可重复读。

1.1.3.事务的隔离级别
SQL 标准定义了四个隔离级别:
READ-UNCOMMITTED(读取未提交): 最低的隔离级别,允许读取尚未提交的数据变更,可能会
导致脏读、幻读或不可重复读。
READ-COMMITTED(读取已提交): 允许读取并发事务已经提交的数据,可以阻止脏读,但是幻
读或不可重复读仍有可能发生。
REPEATABLE-READ(可重复读): 对同一字段的多次读取结果都是一致的,除非数据是被本身事务
自己所修改,可以阻止脏读和不可重复读,但幻读仍有可能发生。
SERIALIZABLE(可串行化): 最高的隔离级别,完全服从ACID的隔离级别。所有的事务依次逐个执
行,这样事务之间就完全不可能产生干扰,也就是说,该级别可以防止脏读、不可重复读以及幻
读。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山雨木公

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值