MySql事务

概念

一个或一组sql语句组成一个执行单元,要么全部执行,要么全部不执行

经典案例

银行转账,一方余额减少,一方余额增加,这两个操作必须同时成功

存储引擎

概述

1.在mysql中的数据用各种不同的技术存储在文件(或内存)中。
2.通过show engines,来查看mysql支持的存储引擎
3.mysql中用的最多的有:innodb,myisam,memory,其中innodb支持事务,而myisam,memory等不支持事务、

ACID属性

  • 原子性
    原子性是一个不可分割的工作单位,事务中的操作要么都发生要么都不发生
  • 一致性
    事务必须使数据库从一个一致性状态变换到另一个一致性状态
  • 隔离性
    一个事务的执行不能被其他事务干扰
  • 持久性
    一个事务一旦被提交,这就是永久性的改变

事务分类

  • 隐式事务
    没有明显的开启和结束的标记,比如一条insert,delete

  • 显式事务
    事务具有明显的开始和结束,必须先设置自动提交功能为禁用

/*关闭自动提交*/
set autocommit = 0
/*开启事务*/
start TRANSACTION
/*
	编写sql语句(select insert update delete)
*/
/*结束事务*/
commit;# 提交
ROLLBACK;# 回滚

:alter等对表的操作不支持事务,事务只支持TCL语言

事务的隔离级别

查看隔离级别

在这里插入图片描述

Read Uncommitted

读未提交
在这里插入图片描述
在这里插入图片描述

当事务还没有提交时,却在另一个查询中就查到数据已经更改了发生了脏读

Read committed

读已提交
在这里插入图片描述
不存在脏读了,但存在不可重复读,同一个事务多次查询,得到的结果不一样就是不可重复读。
描述第一个线程(事务),更改之后还没有提交,第二个线程(事务)查得的数据是未修改之前的,当第一个线程提交之后,第二个线程查得的是修改之后的
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值