MySQL 事务

81 阅读1分钟

事务简介

事务用于保证数据的一致性,它由一组相关的dml语句组成,该组的dml语句要么全部成功,要么全部失败。
注: MySQL事务机制需要InnoDB的存储引擎

  • 事务和锁

当执行事务操作时(dml语句),mysql会在表上加锁,防止其它用户改表的数据。

mysql 数据库控制台事务的几个重要操作

-- 开起事务方式1
start transaction 
-- 开起事务方式2
set autocommit=off;
-- 设置保存点
savepoint 保存点名
-- 回退事务
rollback to 保存点名
-- 回退全部事务
roolback
-- 提交事务,所有的操作生效,不能回退
commit

事务隔离级别

介绍

  1. 多个连接开启各自的事务,操作数据库中的数据时,数据库系统负责隔离操作,以保证各个连接在获取数据时的准确性。
  2. 如果不考虑隔离性,有可能会出现:脏读、不可重复读、幻读

mysql 事务隔离级别

Mysql隔离级别脏读不可重复读幻读加锁读
读未提交(Read uncommitted)不加锁
读已提交(Read committed)×不加锁
可重复读(Repeatable read)×××不加锁
可串行(Serializable)×××加锁

说明: √ 可能出现,× 不会出现

mysql 事务隔离级别读取

-- 查看当前会话隔离级别
-- 读取事务隔离级别
-- mysql 5.7 及以前
select @@tx_isolation;
-- mysql 8
select @@transaction_isolation;

-- 查看系统当前隔离级别
-- mysql 5.7 及以前
select @@global.tx_isolation;
-- mysql 8
select @@global.transaction_isolation;

mysql 事务隔离级别设置

-- 设置当前会话隔离级别
set session transaction isolation level 隔离级别 
-- 设置系统隔离级别
set global transaction isolation level 隔离级别 

全局修改,修改my.ini配置文件

[mysqld]
transaction-isolation = 隔离级别