数据库基础笔记(MySQL)6 —— 基础事务

本文详细介绍了数据库事务的概念,包括其四大性质——原子性、一致性、隔离性和持久性。重点阐述了事务的开启、提交、回滚及保存点操作,并探讨了不同隔离等级(读未提交、读已提交、可重复读、序列化)的特点和应用场景。同时,通过实例解析了事务隔离性对并发控制的影响,帮助理解事务在确保数据一致性方面的重要性。
摘要由CSDN通过智能技术生成

事务

只与 DML 语句有关 ( 关于数据的 增删改 )
一个事务由一条或多条 DML 语句组成,一个事务在提交事务后才会将数据彻底修改到数据库中,再提交前,我们可以用回滚回到指定位置,相当于可以撤回错误操作

在 MySQL 中默认的为 自动提交事务 ,即每执行一条 DML 语句,就提交一次 ( 即不能回滚 ),直接修改在数据库中

事务操作

  1. 开启事务 : start transaction 或 set autocommit=off( 等于 0 也行 )
  2. 提交事务 : commit
  3. 回滚事务 ( 回滚到开启事务点 ) : rollback
  4. 标记事务过程中的保存点 : savepoint 标记名
  5. 删除标记点 : release savepoint 标记名
  6. 回滚事务 ( 回滚到指定标记点 ) : rollback to 标记名
  7. 设置事务隔离等级 ( 当前会话 ) : set session transaction isolation level 等级名 ;
  8. 设置事务隔离等级 ( 全局级 ) : set global transaction isolation level 等级名 ;
  9. 查看事务隔离等级 ( 当前会话 ) : select @@session.tx_isolation ;
  10. 查看事务隔离等级 ( 全局级 ) : select @@global.tx_isolation ;

事务的四个性质

原子性 ( A )

原子性是指事务过程中的操作,对数据的修改要么全部执行成功,要么全部失败,即相当于事务是最小的工作单元,不可再分

一致性 ( C )

一致性是指执行事务前后的状态要一致,可以理解为数据一致性
( 听大佬这么说 一致性强调的最终状态,要么是初始状态(有可能事务回滚了),要么是最终状态( 事务成功执行后 )。原子性,隔离性,持久性这三个特性是为了约束事务最终实现数据的一致性,我感觉,原子性和一致性虽然很像,但是一个强调的是操作,一个强调的是状态,我们对出数据的操作(原子性),对事务之间的隔离(隔离性),对最终状态的保存(持久性),都是为了完成数据的全部正确修改(一致性) )

隔离性 ( I )

不同的事务之间,具有一定的隔离等级,控制事务之间相互影响的程度( 可以设置隔离等级 )

持久性 ( D )

事务最终结束时,事务对数据的操作即被持久化地保存到数据库中,持久化地保存在硬盘上

事务之间的隔离性 ( 从低到高 )

如何简单的并发 ( 直接多开几个 MySQL 窗口就行了 )

读未提交 : read uncommitted

会导致脏读现象 ( 即会读到另一个事务未提交的数据 )

读已提交 : read committed

解决了脏读现象 ( 即只能读到其他事务提交之后的数据 )
但是出现了不可重复读现象 ( 即读取过程中,可能多次读取的数据不相同了,别的事务改变了数据 )
( 是 Oracle 默认的隔离级别 )

可重复读 : repeatable read

解决了不可重复读现象 ( 在事务开启后,每一次读取的数据都是相同的 )
但是出现了幻读现象 ( 即读到的数据可能已经不存在,或已经被修改了 )
( 是 MySQL 默认的隔离级别 )

序列化 ( 串行化 ) : serializable

解决了幻读现象 ( 直接关闭了并发,只能一个事务一个事务进行 )

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值