当前位置: 首页 > news >正文

【Mysql】之事务详解

一、定义

        事务就是一组数据库操作序列(包含一个或多个SQL操作命令),事务会把所有操作看作为一个不可分割的整体向数据库系统提交或撤消操作,事务的所有操作要么都执行,要么都不执行。

二、事务的 ACID 特性

2.1  原子性

        事务管理的基础。负责把事务中的所有操作看作为一个不可分割的工作单元,要么都执行,要么都不执行。

2.2  一致性

        事务管理的目的。负责保证事务开始前和事务结束后数据的完整和一致

2.3  隔离性

        事务管理的手段。负责使多个事务并发操作同一个数据表时,每个事务都有自己独立的数据空间,事务的执行不受其它事务干扰。可以通过设置隔离级别来解决不同的一致性问题。

2.4  持久性

        事务管理的结果。负责当事务被提交后,事务中的命令操作修改的结果会被持久化保存,且不会被回滚

三、隔离级别

未提交读read uncommitted允许 脏读、不可重复读、幻读
提交读read committed不允许 脏读,允许 不可重复读、幻读
可重复读repeatable read  不允许 脏读、不可重复读、幻读(对InnoDB存储引擎不允许)
串行读serializable都不允许,相当于锁表,每个事务完全隔离,但是会影响数据库的读写效率
set global transaction isolation level 隔离级别;       #设置全局级的隔离级别,可在所有会话中有效,当前会话需要重新登录后生效
set session transaction isolation level 隔离级别;      #设置会话级的隔离级别,仅在当前会话中立即生效
show global variables like '%isolation%';             #显示全局级隔离级别
show session variables like '%isolation%';            #显示会话级隔离级别

四、事务管理操作

begin;显示的开启一个事务
insert into ... 插入
delete from  ....删除
update X set更新
savepoint XX;在事务中创建回滚点
rollback to XX;在事务中回滚到指定的回滚点位置
commit; 或 rollback;提交或回滚事务 并结束事务
set session/global autocommit=1/0设置开启/关闭自动提交事务

五、mysql的架构

5.1  组件

         连接器、查询缓存(从8.0版本废弃)、解析器、优化器、执行器、存储引擎、文件系统

5.2  mysql查询数据的过程

1、客户端向mysql服务器发送查询请求,连接器负责处理连接,以及进行身份验证和权限控制

2、mysql先检查查询缓存(从8.0版本废弃)

3、使用解析器对SQL语句进行词法、语法解析,生成语法树交给优化器

4、优化器根据可用的索引、表的统计信息、查询条件等规则对语法树进行优化,生成最佳的执行计划交给执行器

5、执行器根据执行计划调用存储引擎来执行查询

6、将结果返回给客户端

相关文章:

  • PyInstaller 在导入 moviepy.video.fx.all 模块时发生了崩溃
  • deep-sync开源程序插件导出您的 DeepSeek 与 public 聊天
  • 解决 LRU 缓存中的“堆使用后释放”问题
  • 印度股票实时数据API接口选型指南:iTick.org如何成为开发者优选
  • 安装gvm后普通用户模式下无法使用cd切换目录
  • 微信小程序开发:开发实践
  • Table as Thought论文精读
  • Qt5 Mac系统检查休眠
  • AI:机器学习模型 - 分类
  • Open-Sora:开源AI视频生成的新星
  • 计算机硬件
  • 我叕更新了~
  • 透明的卡组收费模式IC++
  • STM32单片机入门学习——第6节: [3-2] LED闪烁LED流水灯蜂鸣器
  • go游戏后端开发20:房间消息推送处理
  • Java基础 4.3
  • Linux文件属性
  • hanzi-writer-miniprogram真机显示不出来Path2D问题已解决(真机能显示了!)
  • UE5Actor模块源码深度剖析:从核心架构到实践应用
  • webrtc 本地运行的详细操作步骤 1