MySQL事务

一、什么是事务,事务的特性是什么?

事务的概念

Transaction,一个最小的不可再分的工作单元;通常一个事务对应一个完整的业务(例如银行账户转账业务,该业务就是一个最小的工作单元)。一个完整的业务需要批量的DML(insert、update、delete)语句共同联合完成。事务只和DML语句有关,或者说DML语句才有事务。这个和业务逻辑有关,业务逻辑不同,DML语句的个数不同。

数据库事务( transaction)是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。事务由事务开始与事务结束之间执行的全部数据库操作组成。

DML语句必须同时成功或者同时失败。最小单元不可再分,当第一条DML语句执行成功后,并不能将底层数据库中的第一个账户的数据修改,只是将操作记录了一下;这个记录是在内存中完成的;当第二条DML语句执行成功后,和底层数据库文件中的数据完成同步。若第二条DML语句执行失败,则清空所有的历史操作记录,要完成以上的功能必须借助事务。

事务:一组逻辑操作单元,使数据从一种状态变换到另一种状态。

事务处理(事务操作):保证所有事务都作为一个工作单元来执行,即使出现了故障,都不能改变这种执行方式。当在一个事务中执行多个操作时,要么所有的事务都被提交(commit),那么这些修改就永久地保存下来;

要么数据库管理系统将放弃所作的所有修改,整个事务回滚(rollback)到最初状态。

 为确保数据库中数据的一致性,数据的操纵应当是离散的成组的逻辑单元:当它全部完成时,数据的一致性可以保持,而当这个单元中的一部分操作失败,整个事务应全部视为错误,所有从起始点以后的操作应全部回退到开始状态。

事务的特性

事务是由一组SQL语句 组成的逻辑处理单元,它的ACID特性如下: 

原子性(Atomicity):原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。 

一致性(Consistency):事务必须使数据库从一个一致性状态变换到另外一个一致性状态。

隔离性(Isolation):事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离。

持久性(Durability):持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响。

二、数据库共定义了几种隔离级别?分别是什么?可避免什么?

为了处理这些问题,SQL标准定义了以下几种事务隔离级别

脏读不可重复读 幻读 
Read uncommitted√ √ √ 
Read committedx√ √ 
Repeatable readxx√ 
Serializablexxx

数据库共定义了四种隔离级别:

- Serializable:可避免脏读、不可重复读、虚读情况的发生。(串行化)

- Repeatable read:可避免脏读、不可重复读情况的发生。(可重复读)

- Read committed:可避免脏读情况发生(读已提交)。

- Read uncommitted:最低级别,以上情况均无法保证。(读未提交)

三、数据库三范式是什么?

数据库三范式是关系型数据库设计的基础理论,指的是第一范式(1NF)、第二范式(2NF)和第三范式(3NF)。

第一范式(1NF)是指属性不可再分,即每个属性都是不可分割的原子项。这意味着在数据库表中,每个字段都是最小的数据单元,不可再次分割。

第二范式(2NF)是在第一范式的基础上建立的,它要求非主属性必须完全依赖于主属性。也就是说,非主键列必须完全依赖于主键,而不是部分依赖。

第三范式(3NF)是在满足第二范式的基础上建立的,它要求非主属性之间不存在依赖关系。也就是说,非主键列必须直接依赖于主键,不能间接依赖主键。

数据库三范式的目标是减少数据冗余、提高数据结构的清晰度和简洁性,从而确保数据库的稳定性和可维护性。在设计数据库时,应当尽可能地遵循三范式的原则,这样可以提高数据库的效率和可靠性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值