MySQL事务
Posted 技术很low的瓜贼
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL事务相关的知识,希望对你有一定的参考价值。
文章目录
mysql事务
一、事务的两种操作
1.手动提交事务
语句 | 功能 |
---|---|
start transaction; 或者 BEGIN; | 开启事务 |
commit; | 提交事务 |
rollback; | 回滚事务 |
- 手动提交事务流程
2.自动提交事务
- MySQL 默认每一条 DML(增删改)语句都是一个单独的事务,每条语句都会自动开启一个事务,语句执行完毕 自动提交事务,MySQL 默认开始自动提交事务
- MySQL默认是自动提交事务
SHOW VARIABLES LIKE ‘autocommit’; | 查看autocommit状态 |
SET @@autocommit=off; | 将默认的自动提交事务改为手动提交事务 |
二、事务四大特性
特性 | 含义 |
---|---|
原子性 | 每个事务都是一个整体,不可再拆分,事务中所有的 SQL 语句要么都执行成功, 要么都失败。 |
一致性 | 事务在执行前数据库的状态与执行后数据库的状态保持一致。 |
隔离性 | 事务与事务之间不应该相互影响,执行时保持隔离的状态. |
持久性 | 一旦事务执行成功,对数据库的修改是持久的。就算关机,数据也是要保存下来的. |
三、事务隔离级别
- 并发访问会导致的问题
问题 | 说明 |
---|---|
脏读 | 一个事务读取到了另一个事务中尚未提交的数据 |
不可重复读 | 一个事务中两次读取的数据内容不一致, 要求的是在一个事务中多次读取时数据是一致的. |
幻读 | 一个事务中,某一次的 select 操作得到的结果所表征的数据状态, 无法支撑后续的业务操作. 查询得到的数据状态不准确,导致幻读. |
- 四种隔离级别(隔离级别越高,效率越低)
- 查看隔离级别:
select @@tx_isolation;
- 设置事务隔离级别,需要退出 MySQL 再重新登录才能看到隔离级别的变化
set global transaction isolation level 级别名称;
read uncommitted 读未提交
read committed 读已提交
repeatable read 可重复读
serializable 串行化
以上是关于MySQL事务的主要内容,如果未能解决你的问题,请参考以下文章