MySQL中的事务

本文详细介绍了MySQL中的事务,包括事务的四大特性(原子性、一致性、隔离性和持久性),事务控制(开启、回滚、提交、保留点)以及事务的隔离级别。还探讨了隐式提交、自动提交的设置与验证,以及事务并发可能引发的问题,如脏读、不可重复读和幻读。
摘要由CSDN通过智能技术生成

1、什么是事务?

事务是一组不可分割的SQL语句集合,可以撤销。银行转账是最经典的例子,需要用事务保证。不同银行间转账则需要用到分布式事务。

2、事务的四大特性(ACID)

原子性(Atomicity):构成事务的所有操作必须是一个逻辑单元,可以撤销,要么全部完成,要么全部失败。

一致性(Consistency):一个事务执行前后必须处于一致性状态。如转账前A、B账户总余额为1000元,转账后应该也为1000元。

隔离性(Isolation):并发事务之间不能相互干扰。

持久性(Durability):一旦一个事务提交,对于数据库中数据的改变是永久的。

3、事务机制的几个术语

事务(transaction):指一组不可分割的SQL语句。

回退(rollback):值撤销指定SQL语句的过程。

提交(commit):指将要存储的SQL语句结果写入到数据库表中。

保留点(savepoint):指事务处理中设置的临时占位符。你可以对其发布回退,与回退真个事务不同。

4、控制事务处理

A。开启事务   start transcation;     begin;

B。回滚事务

MySQL事务隔离是数据库事务处理的一个关键概念,它用于控制并发访问数据库的一致性。事务隔离级别定义了不同用户在同一间对数据的操作如何互相影响。MySQL提供了几种不同的事务隔离级别: 1. **读未提交(READ UNCOMMITTED)**:这是最低的隔离级别事务可以读取其他事务提交的数据,可能导致脏读(读取到的是未提交更新的数据)和幻读(查询结果因其他事务的插入或删除而改变)。 2. **读已提交(READ COMMITTED)**:在此级别事务只能看到已经提交的变更。这防止了脏读,但仍然可能面临不可重复读(由于其他事务的更新,相同的查询返回不同的结果)。 3. **可重复读(REPEATABLE READ)**:在此模式下,事务在其整个生命周期内不会看到其他事务对其已锁定行的更改,这保证了事务的隔离性和一致性,但是可能出现幻读(如果另一个事务在该事务范围内插入了新行)。 4. **串行化(SERIALIZABLE)**:这是最高的隔离级别,保证了每个事务好像在单独使用数据库一样执行,完全避免了并发冲突,但性能开销最大。 选择哪个隔离级别取决于应用的具体需求。例如,如果对数据一致性要求很高,会选择可重复读或串行化,但如果希望提高并发性能,可能会接受较低级别的隔离,但可能需要更复杂的并发控制策略。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

二百四十九先森

你的打赏是我努力的最大动力~

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

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

打赏作者

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

抵扣说明:

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

余额充值