自学内容网 自学内容网

MySQL-事务

事务

事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败

在mysql中,默认是自动提交事务的,也就是说,当执行一条DML语句,mysql会立刻隐式的提交事务。

事务的四大特性-ACID

  • 原子性:事务是不可分割的最小操作单元,要么全部成功,要么全部失败。
  • 一致性:事务完成时,必须使所有的数据都保持一致状态
  • 隔离性:数据库系统提供隔离机制,保证事务在不受外部的并发操作影响的独立环境下运行。
  • 持久性:事务一旦提交或回滚,它对数据库中的数据的改变就是永久的。

原子性案例:

例如:下面是一个转账操作,张三给李四转账1000元,那么张三就需要减去1000元,李四就需要增加1000元。下图是正确的情况。

那如果中间出现错误呢?如下图

图一:注意,mysql默认情况下是自动提交事务的。所以看下图得知,第一句sql被执行了,金额被减去了1000元,而李四就却因为图中的报错而没有执行成功,没有收到1000元。

图二:手动的执行提交或回滚

并发事务问题

脏读:

不可重复读:

幻读:

事务隔离级别

Read uncommitted :读未提交

Read committed:读已提交

Repeatable Read:可重复读【mysql的默认级别】

Serializable:串行化

查看事务的隔离级别

设置事务隔离级别

set [session | global] transaction isolation level {此处科协四个不同的级别}
session : 会话级别,设置的是当前客户端窗口有效,不影响全局,测试使用很方便。
global:针对于所有客户端的会话窗口有效,也就是全局设置。

案例:


原文地址:https://blog.csdn.net/qq_43683281/article/details/142149038

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!