/*** 事务 ***/
# 如果一个包含多个步骤的业务操作,被事务管理,那么这些操作要么同时成功,要么同时失败。
# 默认情况下单条sql语句都是自动提交事务
# 操作:
# 1、开启事务:start transaction
# 2、回滚:rollback
# 3、提交:commit
# MySQL事务默认的提交方式是自动提交,即每条SQL语句都是一个事务
# 查看提交方式 select @@autocommit
SELECT @@autocommit;
# 事务四大特征
# 1、原子性:不可分割的最小单元,要么同时成功,要么同时失败
# 2、持久性:当事务提交或回滚后,数据库将会持久化地保存数据
# 3、隔离性:多个事务之间,相互独立。
# 4、一致性:事务操作的前后,数据总量不变
# 事务的隔离级别
# 概念:多个事务是隔离的,但多个事务操作的是同一批数据,则会出现问题,设置不同的隔离级别来解决这些问题;
# 问题:
# 1、脏读:一个事务读到了另一个事务还未提交的数据;
# 2、不可重复读(虚读):同一个事物,读取同一个数据,两次读取结果不一样;
# 3、幻读:一个事务操作了某个记录,另一个事务同样操作了这个记录,第一个事务查询不到自己的修改
# 隔离级别
# 1、read uncommitted:读未提交,存在问题123
# 2、read committed:读已提交,存在问题23
# 3、repeatable read:可重复读,存在问题3
# 4、serializable:串行化,没有问题,当有其他事务开启时,会阻塞等待其他事务提交后再执行
# 设置隔离级别越高,安全性越高,但性能越差,MySQL默认隔离级别是repeatable read,Oracle的默认级别是read commited
# 读取|修改隔离级别
# SELECT @@tx_isolation;
# SET GLOBAL TRANSACTION ISOLATION LEVEL READ xxx
-- 查看事务隔离级别
SELECT @@tx_isolation;
-- 修改事务隔离级别
SET GLOBAL TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
-- 查看自动事务提交状态
SELECT @@autocommit;
MySQ中事务的基本概念
Leave a reply