什么是事务?以及事务的隔离级别

1.事务

        简介:事务是用户定义的一个数据库操作系列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。

        事务的四个特性:原子性  一致性  隔离性  持久性

        事务通过begin开启,即为事务的起始点,包含提交事务:commit,回滚事务:rollback,等。

        开启事务后,begin下的操作先存在事务日志(内存)中,不直接写入数据库(写入硬盘)

(首先需将数据库的自动提交改为不自动提交用以下命令行)。

select @@autocommit; --查看是否自动提交
set autocommit = 0; --修改为不自动提交

2.事务的提交和回滚

        事务的提交(commit)和回滚(rollback)标志着事务的结束,提交是将内存的操作写入硬盘中,回滚为撤销begin下的操作,回到最开始的状态。

3.事务的隔离级别

  • 读未提交(read uncommitted)隔离级别最低

        修改该方法代码:

set session transaction isolation level read uncommitted;
  • 读提交 (read committed)隔离级别较低

        修改该方法代码:

set session transaction isolation level read committed;
  • 可重复读(repeatable read)隔离级别中等(MYSQL默认)

        修改该方法代码:

set session transaction isolation level repeatable read;
  • 串行化(serializable)隔离级别最高

        较安全,但效率低,事务A期间,表会被锁起,事务B不能操作。

        修改该方法代码:

set session transaction isolation level serializable;

事务隔离级别脏读不可重复读幻读
读未提交(read uncommitted)
读提交 (read committed)
可重复读(repeatable read)
串行化(serializable)

        脏读:事务A修改某个值(未提及或回滚),事务B读取到该值,后因某种原因事务A撤销对该值的修改,导致事务B读取到的值是无效的,一般脏读针对于update操作。

        不可重复读:事务A在没有提交事务(会改变事务B所要读取的值)期间,事务B所读取到的数据是不同的。

        幻读:开启事务A、事务B后,若事务A修改某个值并已经提交,事务B在事务期间只能读取到修改之前的值。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值