Mysql事务

举报
郝老三 发表于 2023/07/25 16:07:18 2023/07/25
763 0 0
【摘要】 @[toc](MySql 事务) 一:事务简介 1.1 什么是事务事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。在Mysql总,事务是自动进行提交的,每一条sql都是一个事务。当然我们也可以根据业务进行事务控制。例如:用户A向用户B进行转账2000。首先查询A是否有2000元,然后A账户减少...

@[toc](MySql 事务)

一:事务简介

1.1 什么是事务

  • 事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。
  • 在Mysql总,事务是自动进行提交的,每一条sql都是一个事务。当然我们也可以根据业务进行事务控制。

例如:
用户A向用户B进行转账2000。首先查询A是否有2000元,然后A账户减少2000元,B账户增加2000元。这是3次数据库操作。将这三次作为一个工作单位,如果某次操作失败,则回滚事务。

1.2 事务操作语句

  1. 查看事务提交方式
SELECT @@autocommit;
  1. 修改事务提交方式
SET @@autocommit=0;
  1. 手动开启事务
START TRANSACTIONBEGIN
  1. 提交事务
COMMIT
  1. 回滚事务
ROLLBACK

二:事务四大特性ACID

2.1 原子性(Atomicity)

事务是不可分割的最小操作单元,要么全部成功,要么全部失败。

2.2 一致性(Consistency)

事务完成时,必须使所有的数据都保持一致状态。

2.3 隔离性(Isolation)

数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行。

2.4 持久性(Durability)

事务一旦提交或回滚,它对数据库中的数据的改变就是永久的。

三:并发事务引起问题

并发事务问题指的是,不同的事务在操作同一个数据库表的时候,产生的问题。主要有以下三个方面:

问题 描述
脏读 一个事务读到另外一个事务还没有提交的数据。
不可重复读 一个事务先后读取同一条记录(两次读之间有其它事务修改了数据),但两次读取的数据不同,称之为不可重复读。
幻读 一个事务按照条件查询数据时,没有对应的数据行,但是在插入数据时,又发现这行数据已经存在(读和插入的过程中,其它的事务插入了对应的数据),好像出现了

四:隔离级别

隔离级别 脏读 不可重复读 幻读
Read uncommitted (读,未提交)
Read commiteed (读,提交) ×
Repeatable Read (可重复读) × ×
Serializable (可序列化 × × ×

查看事务隔离级别:

SELECT @@TRANSACTION ISOLATION

设置事务隔离级别:

SET [SESSION | GLOBAL ] TRANSACTION ISOLATION LEVEL { READ UNCOMMITTED I READ COMMITTED I REPEATABLE READ I SERIALIZABLE}

五:总结

  1. 本文介绍了MySQL中的事务及相关内容。事务是一组操作的集合,是数据库管理系统中不可分割的最小操作单元。事务的特性ACID包括原子性、一致性、隔离性和持久性。

  2. 事务的操作语句包括查看事务提交方式、修改事务提交方式、手动开启事务、提交事务和回滚事务。MySQL默认自动提交事务,但我们也可以手动控制事务的提交和回滚,保证数据的完整性和一致性。

  3. 并发事务引起的问题主要包括脏读、不可重复读和幻读。

  4. 为了解决并发事务引起的问题,MySQL提供了不同的隔离级别,包括Read uncommitted、Read committed、Repeatable Read和Serializable。每个隔离级别都有不同的特性,开发人员可以根据业务需求选择适当的隔离级别。

  5. 在开发过程中,合理运用事务和选择合适的隔离级别能够有效地解决并发问题,确保数据库操作的正确性。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。