MySQL 中事务以及事务隔离级别的详解
Posted 路宇
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL 中事务以及事务隔离级别的详解相关的知识,希望对你有一定的参考价值。
博主前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住也分享一下给大家,
👉点击跳转到网站
一、MySQL 中事务的理解
二、演示事务的基本使用
DROP TABLE t27;
-- 1.创建一张测试表
CREATE TABLE t27(
id INT,
`name` VARCHAR(32)
);
-- 2.开启事务
START TRANSACTION
-- 3.设置保存点
SAVEPOINT a
-- 执行DML操作
INSERT INTO t27 VALUES(100,'tom');
SELECT * FROM t27;
SAVEPOINT b
-- 执行DML操作
INSERT INTO t27 VALUES(200,'jack');
-- 回退到b
ROLLBACK TO b
-- 继续回退 a
ROLLBACK TO a
-- 如果这样,表示直接回退到事务开始的状态
ROLLBACK
三、回退事务和提交事务的介绍
四、MySQL事务细节讨论
对应的SQL语句如下
-- 讨论 事务细节
INSERT INTO t27 values(300,'milan'); -- 自动提交 commit
SELECT * FROM t27;
-- 如果开始一个事务,你没有创建保存点,你可以执行rollback
-- 默认就是回退到你事务开始的状态
START TRANSACTION
INSERT INTO t27 VALUES(400,'King');
INSERT INTO t27 VALUES(500,'scott');
ROLLBACK -- 直接回退到事务开始的状态
COMMIT
-- INNODB 存储引擎支持事务,MyISAM不支持
-- 开启事务 START TRANSACTION 也可以这样写SET autocommit=off
SET autocommit=off
INSERT INTO t27 VALUES(400,'King');
INSERT INTO t27 VALUES(500,'scott');
SELECT * FROM t27;
ROLLBACK
五、MySQL中的事务隔离级别
1、事务隔离级别的介绍
2、脏读,不可重复度,幻读的理解
3、事务的4隔离级别如下
4、查看与设置隔离级别
对应的SQL代码如下
-- 演示mysql事务的隔离级别
-- 1.开了两个mysql的控制台
-- 2.查看当前mysql的隔离级别
SELECT @@transaction_isolation;
-- +-------------------------+
-- | @@transaction_isolation |
-- +-------------------------+
-- | REPEATABLE-READ |
-- +-------------------------+
-- 3.把其中一个控制台的隔离级别设置 READ-UNCOMMITTED
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
CREATE TABLE `account`(
id INT,
name VARCHAR(32),
money INT
);
-- 查看当前会话隔离级别
SELECT @@transaction_isolation;
-- 查看系统当前隔离级别
SELECT @@global.transaction_isolation;
-- 设置当前会话隔离级别
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
-- 设置系统当前隔离级别
SET GLOBAL TRANSACTION ISOLATION LEVEL [你设置的级别];
六、事务ACID的特性
以上是关于MySQL 中事务以及事务隔离级别的详解的主要内容,如果未能解决你的问题,请参考以下文章