3 数据库事务
1. 转账操作转账是从一方扣钱另一方加钱采用数据库来模拟一下这个操作# 创建一个账户表createtableaccount(idbigintprimarykeyauto_incrementcomment账户,namevarchar(16)notnullcomment账户名称,moneybigintnotnullcomment账户余额)comment账户表;# 添加两个账户信息张三、李四一人1000大洋insertintoaccount(name,money)values(张三,1000),(李四,1000);# 模拟张三给李四转500大洋updateaccountsetmoneymoney-500whereid1;updateaccountsetmoneymoney500whereid2;转账分为两个操作需要先给一个用户扣钱再给一个用户加钱第一个扣钱的操作成功了但是因为一些其他的原因比如服务器断点或者是一些异常情况导致第二个加钱的SQL执行失败。整个转账的业务其实是失败的但是第一个的钱扣了没了。。。。。正常应当是这两个操作要么都执行成功要么都执行失败上述的转账问题就可以基于事务来解决事务可以看做是一个最小的执行单位一个事务可以由一条或者多条SQL语句组成。 一个事务操作所有的SQL语句要么都执行成功要么都执行失败。2. 事务操作首先MySQL就是开启事务的但是这个事务每执行一个DML语句都会自动的提交结束开启事务1.因为MySQL默认自动结束事务的咱们可以自己关闭这种自动结束的操作。2.也可以通过单独的指令来指定事务开始和结束的位置setAutoCommit0;--默认情况值是1代表每次自动结束事务设置为0代表需要咱们手动的结束事务。 begin;--开启手动结束事务操作需要在执行完SQL语句后自己去执行结束事务的指令 start transaction;--跟begin是一样的。。。。结束事务1.如果开启事务的所有SQL语句执行没有问题可以直接提交事务。2.如果开启事务后执行的SQL语句存在问题可以执行回滚事务操作。commit;--提交事务事务中的操作都会落到磁盘当众 rollback;--回滚事务事务中的操作全部都会恢复到事务开启之前的状态。将前面的转账操作基于事务控制解决前面的问题# 模拟张三给李四转500大洋setAutoCommit1;-- 关闭自动结束事务需要遇到commit或者rollback才会结束这个事务begin;-- 手动开启了一个事务需要遇到commit或者rollback才会结束这个事务。starttransaction;-- 也是手动开启一个事务。updateaccountsetmoneymoney-500whereid1;updateaccountsetmoneymoney500whereid2;commit;rollback;-- 事务结束有两种方式。commit提交。 rollback回滚。3. 事务的基本实现原理4. 事务的特性原子性Atomicity事务是一个最小的执行单位一次事务的操作要么都成功要么都失败。一致性Consistency表示一个事务内有一个操作失败时所有的更改过的数据都必须回滚到修改前的状态。隔离性Isolation事务查看数据操作时数据所处的状态要么是另一个并发事务修改之前的状态要么是另一个事务修改它之后的状态事务不会查看中间状态的数据。持久性Durablility事务正常提交后会将数据落到磁盘中影响是永久了。5. 事务并发问题脏读一个事务中读取到了另一个事务未提交的数据。这个问题必须要解决不可重复读一个事务中多次查询同一个数据结果不一致。原因是其他事务中对这个数据修改了并且提交事务了。幻读一个事务中多次查询同一个数据结果不一致。原因是其他事务中对某个数据进行了增删并且提交事务了。为了复现上述的问题优先将MySQL的事务隔离级别调低-- 为了查看到所有问题的效果这里优先将事务的隔离级别设置为最低等级。READ-UNCOMMITTED。setglobaltransaction_isolationREAD-UNCOMMITTED;-- 因为设置的是全局的事务隔离级别设置完毕后关闭连接重新打开才会生效。selecttransaction_isolation;复现脏读效果复现不可重复读效果复现幻读的效果6. 事务的隔离级别READ-UNCOMMITTED读未提交可以读取到未提交事务的数据。一个问题都不能解决READ-COMMITTED读已提交可以读取到已经提交事务的数据。只能解决脏读Oracle默认隔离级别是READ-COMMITTEDREPEATABLE-READ可重复读会让一次事务多次查询同一数据结果一致修改导致。可以解决脏读和不可重读MySQL默认隔离级别是可重复读REPEATABLE-READSERIALIZABLE串行化上锁所有问题都能解决。可以解决所有问题为了解决上面的各种问题这里可以设置事务的隔离级别然后查看效果查看事务的隔离级别的方式selecttransaction_isolation;设置事务的隔离级别可以设置全局的也可以针对当前连接设置。-- 全局的事务隔离级别设置。设置完需要关闭连接重新打开setglobaltransaction_isolationSERIALIZABLE;-- 当前会话的事务隔离级别设置。setsessiontransaction_isolationSERIALIZABLE;

相关新闻

群论骨架、酉变换基底与自指认知宇宙(世毫九理论体系架构总纲)

群论骨架、酉变换基底与自指认知宇宙(世毫九理论体系架构总纲)

群论骨架、酉变换基底与自指认知宇宙(世毫九理论体系架构总纲) 作者:方见华 单位:世毫九实验室(Shardy Lab) 摘要 系统阐述世毫九实验室原创理论体系的完整架构:以群论为对称结构骨架&#xff0…

2026/7/9 1:04:41阅读更多 →
5分钟学会LosslessCut:零质量损失的视频音频剪辑神器

5分钟学会LosslessCut:零质量损失的视频音频剪辑神器

5分钟学会LosslessCut:零质量损失的视频音频剪辑神器 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut 你是否曾为视频剪辑时画质损失而烦恼?或者…

2026/7/9 1:04:41阅读更多 →
【GEO知识库44】定义优先首句结构

【GEO知识库44】定义优先首句结构

你有没有发现一个怪现象:花了半天写的干货文章,发到网上之后,在豆包、元宝里搜相关问题时,AI的回答根本不引用你?不是你内容写得不好,是你开头的姿势不对。就像相亲第一句话决定印象分一样,AI爬…

2026/7/9 1:04:41阅读更多 →
直流负载管理与STM32F303RC优化方案

直流负载管理与STM32F303RC优化方案

1. 直流负载管理的挑战与优化方向在工业控制和电力电子领域,直流负载管理一直是个既基础又关键的技术痛点。我最近在一个自动化产线改造项目中,就深刻体会到了传统方案的局限性——当产线上同时有12台直流电机需要协调控制时,普通的继电器方案…

2026/7/9 3:14:48阅读更多 →
Rainmeter音频可视化终极指南:打造随音乐舞动的桌面频谱

Rainmeter音频可视化终极指南:打造随音乐舞动的桌面频谱

Rainmeter音频可视化终极指南:打造随音乐舞动的桌面频谱 【免费下载链接】rainmeter Desktop customization tool for Windows 项目地址: https://gitcode.com/gh_mirrors/ra/rainmeter 想让你的Windows桌面随着音乐节奏动态变化吗?Rainmeter音频…

2026/7/9 3:14:48阅读更多 →
GeoTools 实战(四):空间查询与 CQL 过滤全解析(查询篇)

GeoTools 实战(四):空间查询与 CQL 过滤全解析(查询篇)

目录一、前言:为什么需要空间查询?二、核心概念速览2.1 CQL vs ECQL2.2 FilterFactory22.3 查询是懒加载的三、Maven 依赖四、完整可运行代码4.1 完整代码五、代码逐段讲解5.1 属性查询(ECQL.toFilter)5.2 BBOX 查询(地…

2026/7/9 3:14:48阅读更多 →
终极鼠标性能检测指南:5分钟量化你的设备真实表现

终极鼠标性能检测指南:5分钟量化你的设备真实表现

终极鼠标性能检测指南:5分钟量化你的设备真实表现 【免费下载链接】MouseTester 项目地址: https://gitcode.com/gh_mirrors/mo/MouseTester 你是否在游戏中总感觉瞄准不够精准?或在设计工作中发现光标移动不够流畅?这些看似主观的感…

2026/7/9 3:14:48阅读更多 →
锂离子电池组电压平衡系统设计与优化实践

锂离子电池组电压平衡系统设计与优化实践

1. 项目背景与核心需求锂离子电池因其高能量密度和长循环寿命,已成为便携式设备和储能系统的首选电源方案。但在串联应用中,单体电池间的电压差异会导致容量损失甚至安全隐患。我曾在一个电动工具项目中遇到过这样的问题:两块串联的18650电池…

2026/7/9 3:14:48阅读更多 →
openEuler/python-multi_key_dict核心功能解析:从基础操作到高级迭代技巧

openEuler/python-multi_key_dict核心功能解析:从基础操作到高级迭代技巧

openEuler/python-multi_key_dict核心功能解析:从基础操作到高级迭代技巧 【免费下载链接】python-multi_key_dict Multi key dictionary implementation 项目地址: https://gitcode.com/openeuler/python-multi_key_dict 前往项目官网免费下载:h…

2026/7/9 3:09:48阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/8 5:12:14阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/8 7:00:12阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/9 2:47:07阅读更多 →
Three.js 着色器光效教程

Three.js 着色器光效教程

着色器光效 Shader Light ▶ 在线运行案例 案例合集: 三维可视化功能案例(threehub.cn)开源仓库github地址: https://github.com/z2586300277/three-cesium-examples400个案例代码: 网盘链接 你将学到什么 ShaderMaterial 自…

2026/7/9 0:04:37阅读更多 →
如何5分钟掌握CS2智能库存管理:开源工具CASEMOVE终极指南

如何5分钟掌握CS2智能库存管理:开源工具CASEMOVE终极指南

如何5分钟掌握CS2智能库存管理:开源工具CASEMOVE终极指南 【免费下载链接】casemove A dedicated desktop app that enables you to move items in and out of storage units in CS2. 项目地址: https://gitcode.com/gh_mirrors/ca/casemove 还在为CS2存储单…

2026/7/9 0:04:37阅读更多 →
GBase 8a vs MySQL 8.0:ALTER TABLE语法与限制的5点关键差异对比

GBase 8a vs MySQL 8.0:ALTER TABLE语法与限制的5点关键差异对比

GBase 8a与MySQL 8.0:ALTER TABLE语法差异深度解析与实战指南1. 两种数据库的ALTER TABLE能力全景对比在数据库架构设计和运维过程中,表结构变更(DDL操作)是不可避免的需求。GBase 8a作为国产分析型数据库代表,与开源M…

2026/7/9 0:04:37阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/8 6:59:54阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/8 13:42:39阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/8 13:42:39阅读更多 →