MySQL事务

事务的定义

事务就是一组数据库操作序列(包含一个或者多个SQL操作命令),事务会把所有操作看作是一个不可分割的整体向数据库系统提交或撤销操作,所有操作要么都执行,要么都不执行。

ACID特性

原子性、一致性、隔离性、持久性

一、原子性:

事务管理的基础。把事务中的所有操作看作是一个补课分割的工作单元,要么都执行,要么都不执行。

二、一致性:

事务管理的目的。保证事务开始前和事务结束后数据的完整和一致。

三、隔离性:

事务管理的手段。使多个事务并发操作同一个表数据时,每个事务都有各自独立的数据空间,事务的执行不会受到其他事务的干扰。可通过设置隔离级别解决不同的一致性问题。

四、持久性:

事务管理的结果。当事务被提交以后,事务中的命令操作修改的结果会被持久保存,且不会被回滚

事务之间的相互影响分为几种,分别为

(1)脏读:一个事务读取了另一个事务未提交的数据,而这个数据是有可能回滚的。

(2)不可重复读:一个事务内两个相同的查询却返回了不同数据。这是由于查询时系统中其他事务修改的提交而引起的。

(3)幻读:一个事务对一个表中的数据进行了修改,这种修改涉及到表中的全部数据行。同时,另一个事务也修改这个表中的数据, 这种修改是向表中插入一行新数据。那么,操作前一个事务的用户会发现表中还有没有修改的数据行,就好象发生了幻觉一样。

(4)丢失更新:两个事务同时读取同一条记录,A先修改记录,B也修改记录(B不知道A修改过),B提交数据后B的修改结果覆盖了A的修改结果。

隔离级别:

未提交读(read uncommitted):允许脏读,不可重复读,幻读

提交读(read committed):不允许脏读,允许不可重复读,幻读

可重复读(repeatable read):不允许脏读,不可重复读,有条件的允许幻读(InnoDB存储引擎可以不允许)

串行读(serializable):都不允许,相当于表级锁定,但是会影响数据库的读写效率和性能

mysql默认的事务处理级别是 repeatable read ,而Oracle和SQL Server是 read committed

设置隔离级别

#全局级别的设置,可在所有会话有效,需要重新登录才可生效

set global transaction isolation level 隔离级别 ;

#会话级别的设置,只对当前的会话有效

set session transaction isolation level 隔离级别;

事务隔离级别的作用范围分为两种:

全局级:对所有会话有效

会话级:只对当前的会话有效

查看隔离级别(会话和全局)

查询全局事务隔离级别

show global variables like '%isolaion';

查询会话事务隔离级别

show session variables like '%isolation%';

事务管理操作

事务管理中,原子性是基础,隔离性是手段,一致性是目的,持久性是结果

开启一个事务

begin;

事务性操作

#针对数据库里进行增删改的操作算事务性操作,查不算

……     

insert into

uodate

XXX set

delete from

在事务中创建回滚点

savepoint XX(XX代表回滚点名称)

在事务中回滚操作到指定回滚点位置

rollback to XX

提交或回滚结束事务

commit;或 rollback;

自动提交事务

set [global/session] autocommit = 0/1;                      #0关闭自动提交,1开启自动提交

show [global/session] variables like 'autocommit';         #查看Mysql中的autocommit值

MySQL 事务是指一组数据库操作,这些操作要么全部执行,要么全部不执行,其目的是保证在并发环境下,数据的一致性和完整性。MySQL 事务具有 ACID 性质,即原子性、一致性、隔离性和持久性。 MySQL 中使用事务需要使用 BEGIN、COMMIT 和 ROLLBACK 语句,其中 BEGIN 表示开启一个事务,COMMIT 表示提交事务,ROLLBACK 表示回滚事务事务的基本语法如下: ``` BEGIN; -- 执行一组数据库操作 COMMIT; -- 提交事务 -- 或者 ROLLBACK; -- 回滚事务 ``` 在 MySQL 中,事务的隔离级别分为四个等级,分别是 Read Uncommitted、Read Committed、Repeatable Read 和 Serializable。隔离级别越高,数据的一致性和完整性越高,但同时也会影响数据库的性能。 MySQL 事务的 ACID 性质有以下含义: 1. 原子性(Atomicity):事务中的所有操作要么全部执行成功,要么全部失败回滚,不会只执行其中的一部分操作。 2. 一致性(Consistency):事务执行前后,数据库中的数据必须保持一致性状态,即满足数据库的约束条件和完整性规则。 3. 隔离性(Isolation):事务之间应该是相互隔离的,一个事务的执行不应该被其他事务干扰,保证事务之间的数据相互独立。 4. 持久性(Durability):事务提交后,对数据库的修改应该是永久性的,即使出现系统故障或电源故障,也不应该对数据产生影响。 总之,MySQL 事务是一组数据库操作,具有 ACID 性质,可以通过 BEGIN、COMMIT 和 ROLLBACK 语句来实现,隔离级别越高,数据的一致性和完整性越高,但同时也会影响数据库的性能。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值