news 2026/5/26 8:16:10

事务操作流程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
事务操作流程

1.开启事务:明确事物的起始点(begin或者start transaction)

2.执行操作:执行SQL语句

3.判断结果:若操作都执行成功,提交事务,修改生成

若任意操作失败,回滚事务,撤销所有已经执行的修改

事务的作用:

1.保证数据的一致性:避免因部分操作成功,部分操作失败导致的数据混乱(转账扣钱,但是收款方未收到钱)

2.支持并发控制操作:通过设置隔离性协调多个用户同时操作数据库

3.提供错误恢复机制:操作失败时可通过回滚操作恢复到初始状态,减少数据损坏风险

注意事项:

1.并非所有数据库存储引擎都支持事务(比如MYSQL中的MYLSAM不支持,innoDB支持)

2.事务开启后需要尽快提交或者回滚,避免长时间占用资源导致并发性能下降

3.隔离级别越高,数据一致性最好,但并发效率可能越低。

隔离性在数据库中定义了多个并发事务之间的交互规则,用于平衡数据一致性和并发性能,

4个等级,不同的级别针对并发问题(脏读,不可重复读,幻读)的解决程度不同,

4个等级从低到高:

1.读,未提交(read uncommitted)

定义:一个事物可以读取到另一个未提交的事务所所修改的数据

问题:存在“脏读”问题(提交到未提交的“临时数据”,若对方回滚,数据无效)

场景:几乎不使用该隔离性,只适用于对数据一致性要求非常低的场景

2.读已提交(read committed)

定义:一个事物可以读取到另一个已提交的事务所所修改的数据

问题:避免“脏读”问题,存在“不可重复读”问题(同义词数据内两次连续读到同一数据,结果不一致,因中间被其他事物修改并提交)

场景:大多数数据库的默认隔离级别

3.可重复读(repeatable read)

定义:同一事务内多次读取同一数据,结果始终一致(即使其他事物修改并提交,也看不到变化)

解决:避免“脏读”“不可重复读”,存在幻读(同意书屋内两次执行范围查询,结果行数不同,因中间被其他事物插入/删除数据)

场景:Mysql中innodb默认隔离级别

4.串行性(串行化 Seriallzable)

定义:所有事务串行执行(相当于单线程,一次只能执行一个事务)

解决:避免并发事务的所有问题

场景:并发性极差,只适用于对数据一致性要求非常高,且并发性极低的场景

Mysql中隔离级别分为全局级别(对所有新会话生效)和会话级别(仅对当前会话生效)

1.查看当前会话的隔离级别

SELECT @@transaction_isolation;(8.0版本)

select @@tx_isolation; (5.7及以下)

2.查看全局的隔离级别

SELECT @@global.transacction_isolation; (8.0版本)

select @@global_isolation; (5.7及以下)

3.修改当前会话隔离级别

set session transaction isolation level +隔离级别

4.修改全局隔离级别

set global transaction isolation level +隔离级别

隔离级别名称:

READ UNCOMMITTED (读未提交)

READ COMMITTED (读已提交)

REPEATBALE READ(重复读)
SERIALIZABLE串行性

视图:是一种虚拟的表,其定义由查询语句定义

视图本身不存储数据,而是动态引用(基表)的数据,可以把试图理解成一条预定义的select。用户通过视图来间接查询基表

核心特点:

1.虚拟性:视图没有实际的物理存储,数据都来源于定义的select所涉及的基表

2.动态性:基表数据发生变化时,视图中的数据时会变化的

3.安全性:可以通过视图暴露部分信息,隐藏基表的敏感信息

4.简化性:将复杂的查询逻辑封装成视图,无需重复编写sql,直接查视图即可

适用场景:

1.简化复杂查询:对于多表关联,子查询等复杂逻辑,可封装为视图

2.数据权限控制:只允许查看到基表中的部分信息,隐藏其他信息时可以封装为视图

3.同一数据访问接口,当基表的结构变更时(如字段名修改),可通过修改视图定义保持对外接口不变

定义视图的操作:

creat view 视图名 as select 语句

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/26 6:18:52

打开软件出现找不到vcruntime140.dll文件 无法运行的情况 下载修复解决

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…

作者头像 李华
网站建设 2026/5/26 6:18:39

本地部署DeepSeek

ollama终端的方式部署参考:ollama本地部署 智谱API Key获取 LM Studio 它是模型的托管平台,可以把模型加载后,作为服务器向外提供服务器,本身也具有简单的对话框可以聊天。 :https://lmstudio.ai/ 在左下角改为开发者…

作者头像 李华
网站建设 2026/5/26 5:18:59

JavaWeb企业级开发---JavaScript

记录在听黑马课的时候的笔记以及课堂上练习的代码,文章图源于我在听课的时候所截的屏,所以有些不清晰,请见谅。下面是课程链接,可点击自行跳转。 【黑马程序员JavaWeb开发教程,实现javaweb企业开发全流程(…

作者头像 李华
网站建设 2026/5/26 5:08:53

微信小程序_WXML

图片&#xff1a;等比例填充&#xff08;头像&#xff09;&#xff1a;mode“aspectFill”<image src"{{userInfo ? userInfo.avatarUrl :/images/1.png}}" mode"aspectFill"></image>

作者头像 李华
网站建设 2026/5/26 5:09:36

Springboot连锁家政保洁管理系统03zmn(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。

系统程序文件列表项目功能&#xff1a;分店管理员,用户,保洁员,通知信息,独立服务,团队服务,独立服务信息,团队服务信息,独立服务订单,团队服务订单,团队派单,完成订单,独立服务取消,团队服务取消开题报告内容基于SpringBoot的连锁家政保洁管理系统开题报告一、研究背景与意义研…

作者头像 李华
网站建设 2026/5/25 5:38:43

Redis原理篇-Dict的rehash

** 不管是扩容还是收缩&#xff0c;必定会创建新的哈希表&#xff0c;导致哈希表的size和sizemask变化&#xff0c;而key的查询与sizemask有关。因此必须对哈希表中的每一个key重新计算索引&#xff0c;插入新的哈希表&#xff0c;这个过程称为rehash。过程是这样的&#xff1a…

作者头像 李华