数据库的事物学习

数据库事务是一组操作,这些操作将数据库从一种一致的状态转换为另一种一致的状态。事务是数据库管理中重要的概念,它可以确保在并发访问时数据的一致性可靠性,同时也可以确保数据库的完整性可恢复性

一,定义

事务是指一组操作,这些操作被视为一个单元,要么全部执行成功,要么全部失败。一个事务通常包含四个基本操作:开始(begin)、提交(commit)、回滚(rollback)和保存点(savepoint)。开始操作表示事务的开始,而提交操作表示事务的成功完成。回滚操作则表示事务的撤销,而保存点则用于标记事务中的某个点,以便在需要时回滚到该点。

二,性质

事务具有四个基本的ACID属性,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。这些属性确保了事务的可靠性和可恢复性,从而保证了数据库的一致性和可靠性。

原子性:事务是一个原子性的操作,要么全部执行成功,要么全部失败。如果在执行过程中出现错误或异常,那么整个事务将被回滚,以保证数据的一致性。

一致性:事务执行后,数据库必须保持一致性状态。这意味着,如果事务在执行过程中修改了数据,那么最终结果必须符合数据库的完整性约束,否则整个事务将被回滚。

隔离性:事务的执行应该与其他事务的执行相互隔离。这意味着,每个事务应该看到一个独立的视图,而不是其他事务修改后的实际数据。这可以通过使用锁定和并发控制来实现。

持久性:事务执行成功后,其结果必须永久保存在数据库中。即使在数据库发生故障或崩溃的情况下,事务的结果也应该能够恢复。

三,四种隔离级别

1,READ UNCOMMITTED(读未提交数据):允许事务读取未被其他事务提交的变更数据,会出现脏读、不可重复读和幻读问题。

2,READ COMMITTED(读已提交数据):只允许事务读取已经被其他事务提交的变更数据,可避免脏读,仍会出现不可重复读和幻读问题。

3,REPEATABLE READ(可重复读):确保事务可以多次从一个字段中读取相同的值,在此事务持续期间,禁止其他事务对此字段的更新,可以避免脏读和不可重复读,仍会出现幻读问题。

4,SERIALIZABLE(序列化):确保事务可以从一个表中读取相同的行,在这个事务持续期间,禁止其他事务对该表执行插入、更新和删除操作,可避免所有并发问题,但性能非常低。

四,七种传播行为 

1,PROPAGATION_REQUIRED:如果当前没有事务,就创建一个新事务,如果当前存在事务,就加入该事务,该设置是最常用的设置

2,PROPAGATION_SUPPORTS:支持当前事务,如果当前存在事务,就加入该事务,如果当前不存在事务,就以非事务执行。

3,PROPAGATION_MANDATORY:支持当前事务,如果当前存在事务,就加入该事务,如果当前不存在事务,就抛出异常。

4,PROPAGATION_REQUIRES_NEW:创建新事务,无论当前存不存在事务,都创建新事务。

5,PROPAGATION_NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。

6,PROPAGATION_NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。

7,PROPAGATION_NESTED:如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与PROPAGATION_REQUIRED类似的操作。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值