Mysql中的事务是什么?事务都有哪些隔离级别?

1.事务:

事务用于保证数据的一致性,它由一组相关的dml语句组成,该组成的dml语句要么全部成功,要么全部失败.如:银行,微信转账就要用事务来处理,用以保证数据的一致性.

 1.1 事务和锁

当执行事务操作时,(dml语句),mySQL会在表上加锁,防止其他用户改表的数据,这对用户来讲是非常重要的

mysql数据控制台事务的几个重要操作(基本操作)

1.set autocommit --改变自动提交模式,等于0时关闭自动提交模式,等于1开启自动提交模式,默认为1,使用事务时为0.

2. start transaction -- 开始一个事务,标记事务的起始点

3.commit --提交一个事务给数据库

4.rollback --将事务回滚,数据回到本次事务的初始状态

set autocommit = 0; -- 关闭mysql自动提交
-- 开始事务
start transaction
-- 设置保存点
savepoint a
-- 执行dml 操作
insert into t27 values (100,'tom')
select * from t27;

-- 设置保持点
savepoint b

-- 再次添加
insert into t27 values (100,'xb')
-- 回退到b
rollback to b

-- 继续回退 a
ROLLBACK TO a
-- 如果这样, 表示直接回退到事务开始的状态
set autocommit = 1; -- 开启mysql自动提交

1.2 回退事务

先介绍一下保存点。保存点是事务中的点,用于取消部分事务,当结束事物时(commit),会自动的删除该事物所定义的所有保存点,当执行回退事务时,通过指定保存点可以回退到指定的点

1.3 提交事务

使用commit语句可以提交事物,当执行了commit语句之后会确认事物的变化结束事物删除保存点,释放锁,数据生效,当使用commit语句结束事物后,其他会话将可以查看到事物变化后的新数据,所有数据就正式生效

1.4 事务细节讨论

1.如果不开始事务,默认情况下dml操作是自动提交的,不能回滚

2.如果开始一个事务,你没有创建保存点,你可以执行rollback。默认就是回退到你事物开始的状态.

3.你可以在这个事物中还没有提交时,创建多个保存点

4.你可以在事务没有提交前选择回退到哪个保存点

5.MySQL的事物机制需要InnoDB的存储引擎才可以使用

-- 1. 如果不开始事务,默认情况下,dml 操作是自动提交的,不能回滚
INSERT INTO t27 VALUES(300, 'milan'); -- 自动提交 commit
SELECT * FROM t27
-- 2. 如果开始一个事务,你没有创建保存点. 你可以执行 rollback,
-- 默认就是回退到你事务开始的状态
START TRANSACTION
INSERT INTO t27 VALUES(400, 'king');
INSERT INTO t27 VALUES(500, 'scott');
ROLLBACK -- 表示直接回退到事务开始的的状态
COMMIT;
 -- 3. 你也可以在这个事务中(还没有提交时), 创建多个保存点.比如: savepoint aaa; -- 执行 dml , savepoint bbb
-- 4. 你可以在事务没有提交前,选择回退到哪个保存点
-- 5. InnoDB 存储引擎支持事务 , MyISAM 不支持
-- 6. 开始一个事务 start transaction, set autocommit=off;

mysql中的锁:

基于锁的属性分类:共享锁(读锁,s锁)排他锁(写锁,读锁)

基于锁的粒度分类:表锁,行锁(记录锁,间隙锁,临键锁)

基于锁的状态分类:意向共享锁,意向排它锁

2.隔离级别:

事务并发执行的时候,如果不进行事务隔离,那么就会产生脏读,脏写,重复读,幻读的问题

2.1查看事务隔离级别
脏读:当一个事物读取另一个事物尚未提交的改变(update,insert,delete)时产生脏读

不可重复读:同一查询在同一事物中多次进行。由于其他提交事务。所做的修改或删除,每次返回不同的结果集,此时发生不可重复读

幻读:同一查询在同一事物中多次进行,由于其他提交事务。所做的插入操作,每次返回不同的结果集此时发生幻读

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值