首页 > 编程知识 正文

mysql数据库事务隔离级别,数据库中的事务是什么意思

时间:2023-05-06 18:54:10 阅读:154978 作者:1860

前言

事务是数据库系统的重要概念,理解这个概念是正确开发与数据库交互的APP会话的前提。 但是很多同学对事务的认识比较片面和肤浅,只是把它等同于ACID,不知道数据库系统引入事务的真正动机。 ACID对事务意味着什么,最重要的:数据库系统如何保证事务的ACID特性?

1 .了解事务

1.1为什么需要数据库事务

转账在生活中很常见。 例如,从a账户转账到b账户100元。 从用户的角度来看,这是一个逻辑上的单一操作,在数据库系统中,至少分两个步骤完成:1,减少a账户金额100元

2.b账户金额增加100元。

在这个过程中可能会发生以下问题。 转账操作的第一步执行成功,A账户的钱减少了100元,但如果第二步执行失败或没有执行,系统就会崩溃,B账户没有相应增加100元。

2 .转账操作完成后立即发生系统崩溃,系统重新启动恢复时崩溃前的转账记录丢失。

3 .同时另一用户转账到B账户,同时操作B账户,导致B账户金额出现异常。

要解决这些问题,必须引入数据库事务的概念。

1.2什么是数据库事务

定义:数据库事务是构成单一逻辑工作单位的操作的集合

一个典型的数据库事务是BEGINTRANSACTION//事务开始SQL1

SQL2

提交或回退COMMIT/ROLLBACK//事务

关于事务的定义,必须说明以下内容: 1 .数据库事务可以包含一个或多个数据库操作,但这些操作构成整个逻辑。

2 .构成整个逻辑的这些数据库操作要么全部执行成功,要么全部不执行。

3 .构成事务的所有操作都不影响数据库,也就是说,无论事务是否成功,数据库始终保持一致。

4 .即使数据库发生故障且存在并发事务,以上内容也成立。

1.3事务如何解决问题

在上面的转移示例中,与转移相关的所有操作都可以包含在一个事务处理中

A账户减少100元

B账户增加100元

COMMIT1.如果数据库操作失败或系统崩溃,系统可以以事务为边界恢复,a帐户金额不会减少,b帐户不会增加。

2 .当多个用户同时操作数据库时,数据库以事务为单位进行同时控制,可以相互隔离多个用户向b账户的转账操作。

事务便于系统故障恢复和并发控制,确保数据库状态的一致性。

1.4事务的ACID特性和实现原理综述

原子:事务中的所有操作整体上都像原子一样不可分割,要么全部成功,要么全部失败。

一致性:事务的执行结果必须使数据库从一种一致性状态进入另一种一致性状态。 一致性状态是指:1 .系统状态满足数据完整性约束(主控码、参考完整性、check约束等)2.系统状态反应数据库应该描述的真实世界状态。 例如,转账前后两个账户的金额总和应该是一定的。

独立性(Isolation ) :同时执行的事务不会相互影响。 对数据库的影响与串行运行时相同。 例如,如果多个用户同时转账到一个账户,则最后一个账户的结果应该与他们按照优先顺序转账的结果相同。

持久性:事务提交后,数据库更新将是持久性的。 事务或系统故障不会导致数据丢失。

在事务的ACID特性中,C即一致性是事务的根本追求,数据一致性的破坏主要来自两个方面1 .事务的并发

2 .事务故障或系统故障

数据库系统通过并发控制技术和日志恢复技术避免了这种情况。

并发控制技术保证了事务的可分离性,同时执行的操作不会破坏数据库的一致性状态。

日志恢复技术保证事务的原子性,并确保事务或系统故障不会破坏一致性状态。 此外,通过确保对提交的数据库所做的更改不会因系统崩溃而丢失,可以保证事务的持久性。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。