MySQL学习---事务

事务的四个特性(ACID)

  • 原子性(atomicity)

操作同一对象的事务,要么同时成功,要么同时失败

  • 一致性(consistency)

事务的最终结果是保持一致

  • 隔离性(isolation)

多个事务之间互不干扰

  • 持久性(durability)

事务一旦提交到数据库中,那么它在数据库中的对应数据状态的变更,就已经永久保存到数据库中,不可逆转

脏读 不可重复读 幻读

脏读:一个事务读取到了来自另外一个事务未提交的数据

不可重复读:指在一个事务内读取到了别的事务插入的数据,导致前后读取不一致。

幻读:指在一个事务内读取到了别的事务插入的数据,导致前后读取不一致。

参考博文:https://blog.csdn.net/dengjili/article/details/82468576

操作事务

--mysql 默认是事务自动提交的

set autocommit = 0 --关闭事务自动提交
set autocommit = 1 --开启事务自动提交

start transaction --开启一个事务

commit  --事务提交,提交之后,事务就会持久化到数据库中

rollback  --事务回滚

savepoint 保存点名 --设置一个事务保存点
rollback to savepoint 保存点名 --回滚到事务点
release savepoint 保存点名 --撤销保存点

模拟事务

-- 模拟转账事务
-- 关闭自动提交
SET autocommit = 0;
-- 开启事务
START TRANSACTION;  -- [可选]

UPDATE shop SET money = money-50 WHERE `name` = 'A';
UPDATE shop SET money = money+50  WHERE `name`  = 'B';

-- 提交事务
COMMIT

-- 事务回滚
ROLLBACK
-- 事务完成 开启自动提交
SET autocommit = 1;

事务的隔离级别:

-- 查询当前隔离界别
select @@tx_isoation;

oracle:两种隔离级别: read commited serializable,默认的事务隔离级别为read commited

mysql:四种隔离级别 :

  • read unncommited(读未提交数据):脏读,不可重复度和幻读都会出现

  • read commited(读已提交数据):可以避免脏读 ,

  • repeatable read(可重复读):可以避免脏读与不可重复读,

  • serializable(串行化):所有并发问题都可以解决,但是性能十分低下

mysql的默认隔离级别是为repeatable read.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值