事务 学习笔记

数据库的四种隔离级别及其区别 允许事务读取其他事务尚未提交的修改(“脏读”)。 阅读详情

讲解事务前我们先来看一张图:
在这里插入图片描述
这张图讲述了数据库的隔离级别和预防脏读、不可重复读,幻读的对应关系。
那么mysql 默认的数据库隔离级别是Repeatable Read ,这个级别下就不会出现脏读和不可重复读。
而Oracle和Sqlserver 的默认隔离级别是 Read committed 。这种级别不会出现脏读。
下面说下脏读、不可重复读、幻读出现的场景。
1、脏读:
前提数据库的隔离级别为read uncommitted 读未提交。
初始金额1000,事务A,更改了金额 500,但并没有提交到数据库。这时事务B过来查到了500。那么这就是脏读,读到了别人未提交事务的数据。
2、不可重复读
将数据库的隔离级别设置为Read Committed,在同一个事务中两次查询的结果不一致。
例如:A,B 各有500块。此时事务1,操作A向B 转500块,同时事务2查看B有500块,在事务1提交之后,事务2再一次查看,B价格变为1000.那么
这种情况就是不可重复读。
3、幻读:
前提将隔离级别提升到Repeatable Read ,可以避免脏读和不可重复读。
同样a提交事务,b去读数据,发现依旧是原来的钱,只能结束当前的事务,再开一个新事务才能读到变化的数据。

4、seriizable隔离级别不常用
如果我们设置了seriizable串行化,就相当于锁表,某一时间内只允许一个事务访问该表。

数据库的四大隔离级别 数据库四大隔离级别 阅读详情

相关推荐

【数据库的四种隔离级别】

【数据库的四种隔离级别】

学无止境 6590

数据库的4种隔离级别

在这个级别下,普通的查询同样是使用的“快照读”,但是,和“读提交”不同的是,当事务启动时,就不允许进行“修改操作(Update)”了,而“不可重复读”恰恰是因为两次读取之间进行了数据的修改,因此,“可重复读”能够有效的避免“不可重复读”,但却避免不了“幻读”,因为幻读是由于“插入或者删除操作(Insert or Delete)”而产生的。不可重复读:指在一个事务内,多次读同一数据。下,查询是不会加锁的,也由于查询的不加锁,所以这种隔离级别的一致性是最差的,可能会产生“脏读”、“不可重复读”、“幻读”。

C18298182575的博客 3747

手把手解决GD32H759I-EVAL以太网通信三大坑:IP冲突、端口绑定失败、LWIP内存泄漏

本文针对GD32H759I-EVAL开发板在以太网通信调试中常见的三大难题——IP地址冲突、端口绑定失败和LWIP内存泄漏,提供了详细的实战排障指南。文章深入分析了问题根源,并给出了具体的网络配置、端口管理策略和内存泄漏检测方法,帮助开发者快速定位并解决嵌入式网络通信中的棘手问题,确保系统稳定运行。

weixin_29196315的博客 141

数据库事务的 4 种隔离级别

数据库事务的隔离级别指的是多个事务并发执行时,数据库系统应该如何保证事务之间的隔离程度。不同的隔离级别具有不同的并发控制策略,从而影响了事务的隔离性、性能和并发度。常见的隔离级别有读未提交、读已提交、可重复读和串行化。

qq_45110186的博客 5404

cadence——MOS晶体管I-V特性曲线仿真

MOS晶体管I-V特性曲线仿真 目标:使用cadence绘制晶体管的I-V特性曲线(dc仿真) 流程: 新建原理图,将MOS管的栅极电压设为变量Vg,漏极电压设为变量Vd 打开ADEL,点击Variables——Copy From Cellview添加变量;并选择dc仿真,对Vd进行扫描 以Vg作为参变量进行仿真,点击Tools——Parametric Analysis进行设置 选择漏极电流作为输出,进行仿真即可得到I-V特性曲线 ...

skycmq的博客 1万+

STM32CUBEIDE调试中HardFault_Handler崩溃的故障分析器实战解析

本文详细解析STM32CUBEIDE调试中HardFault_Handler崩溃问题的实战处理方法。通过内置故障分析器自动诊断硬件异常原因,如内存越界、堆栈溢出等,提供图形化界面简化调试流程,并分享配置步骤、典型案例及高级调试技巧,帮助开发者快速定位和解决嵌入式系统崩溃问题。

night的博客 643

【值得阅读的Mysql事务学习笔记】

不要再说自己不会了 你值得阅读的Mysql事务学习笔记 - 知乎

u012632105的博客 91

本地AI助手部署指南:DeepSeek Harness与Ollama集成实践

AI Agent作为当前人工智能领域的热门技术,通过模拟人类决策过程,能够自主规划、调用工具并执行复杂任务。其核心原理在于将大语言模型的推理能力与外部工具API相结合,形成可闭环的工作流。这种技术架构的价值在于显著提升了AI系统的实用性和自动化水平,使其从单纯的对话工具转变为能够解决实际问题的智能助手。在应用场景上,AI Agent广泛应用于代码生成、数据分析、自动化办公等领域。本文聚焦于如何通过DeepSeek Harness平台与Ollama本地模型的集成,实现隐私安全、离线可用的AI助手部署方案,特别

dengjuanshou7445的博客 475

分布式事务框架seata学习笔记

分布式事务框架seata学习笔记 背景 分布式事务令小公司谈之色变,大公司也为空避之不及。阿里推出的seata分布式框架,志在提供一个高效的分布式事务处理框架。 核心要点 undo log 全局读未提交 ...

qq_25664143的博客 702

USB驱动(URB)

本文介绍了Linux内核中USB驱动开发的核心概念URB(USB Request Block)。URB是主机与USB设备间传输数据的抽象结构体,包含目标设备、端点信息、数据缓冲区等关键字段。文章详细解析了URB的生命周期(分配、填充、提交、回调、释放)、四种传输类型(控制、批量、中断、等时)及其应用场景,并提供了鼠标设备的中断传输示例代码。最后强调了URB使用注意事项,包括DMA缓冲区分配、错误处理和资源释放等。URB作为USB驱动与内核通信的桥梁,是构建稳定USB驱动程序的基础。

m0_49476241的博客 915

【PINN物理信息网络】基于PINN物理信息网络结合Wave 2D有限差分方法(python)

【PINN物理信息网络】基于PINN物理信息网络结合Wave 2D有限差分方法(python)

k8291121的博客 1818

认识事务 MySQL学习笔记

比如说银行转账,你给张三转账,你的钱转出去了,但是张三却没收到,这个步骤出错了,那就要把钱撤销到初始的状态。这样,当你的一系列事务前包含了这START TRANSACTION或者BEGIN,你还是需要用COMMIT指令才能执行这些事务。可是刷新后,emp的表里没有出现王强,所有我们需要手动提交事务。个人理解:事务,是一组操作,不可分割,要么成功,要么失败。个人理解:事务无论做没做成功,就算是回滚了,也总会造成影响,产生永久的改变。当然,你也可以默认自动提交事务,但是有的事务你又想手动提交,该怎么办?

Gloudcea_Kirara的博客 411

YOLOv8改进,YOLOv8添加可变性卷积DCNv2

DCNv2对原始的DCNv1进行了改进,可变形卷积网络的卓越性能源于其适应对象几何变化的能力。通过对其自适应行为的检查,虽然对其神经特征的空间支持比常规的ConvNets更接近于对象结构,但这种支持可能远远超出感兴趣区域,导致特征受到不相关图像内容的影响。为了解决这个问题,我们提出了一种可变形卷积网的重新表述,通过提高建模能力和更强的训练,提高了其专注于相关图像区域的能力。通过更全面地集成网络中的可变形卷积,并引入扩展变形建模范围的调制机制,增强了建模能力。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 3606

Spring Framework 学习笔记5:事务

这里提供一个示例项目,这个项目包含 Spring 框架、MyBatis 以及 JUnit。对应的表结构见。但实际上这里是有 bug 的,如果转出账户的余额小于要转出的金额,转出账户的金额就会变成负数。将测试用例中的转账金额改成一个很大的数字(比如10000)后再次测试,就能发现会抛出异常,转账不会进行。

梦幻天空 273

Win11极速安装Tensorflow-gpu+CUDA+cudnn(含视频)

Win11极速安装Tensorflow-gpu+CUDA+cudnn(含视频链接)

weixin_46713695的博客 1万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain&#39;s apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath(&#39;DeepLearnToolbox&#39;));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand(&#39;state&#39;,0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W&#39;); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand(&#39;state&#39;,0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = &#39;sigm&#39;;%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, &#39;Too big error&#39;);```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand(&#39;state&#39;,0)sae = saesetup([784 100]);sae.ae{1}.activation_function = &#39;sigm&#39;;sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)&#39;)% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;;nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, &#39;Too big error&#39;);```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x&#39;,28,28,60000))/255;test_x = double(reshape(test_x&#39;,28,28,10000))/255;train_y = double(train_y&#39;);test_y = double(test_y&#39;);%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you&#39;ll get around 1.2% errorrand(&#39;state&#39;,0)cnn.layers = { struct(&#39;type&#39;, &#39;i&#39;) %input layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 6, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %sub sampling layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 12, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, &#39;Too big error&#39;);```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, &#39;Too big error&#39;);%% ex2 neural net with L2 weight decayrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex3 neural net with dropoutrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex4 neural net with sigmoid activation functionrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex5 plotting functionalityrand(&#39;state&#39;,0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = &#39;softmax&#39;; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand(&#39;state&#39;,0)nn = nnsetup([784 20 10]); nn.output = &#39;softmax&#39;; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

MySQL学习笔记3【事务】

感觉这一节内容对于我来说还是很有用的,解决了我关于很多开发过程中会遇到的问题(譬如在一个函数中多次对数据库进行写入,中途发生失败导致数据的不一致性)

Rinai的博客 595

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

spring hibernate 事务管理学习笔记(一)

spring hibernate 事务管理学习笔记(一)

congine_mcfeng的专栏 122

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

MySQL Transaction(事务)学习笔记

一、资源入口 这次很快就找到了入口 在MySQL官方文档界面查找(MySQL Server—>MySQL Reference Manual—>选定自己的版本,当然也可以下载的 ) 不过说真的还是下载下来HTML比较方便点,打开Index.html就是目录了,我在其中搜索字段‘transaction’然后可以快速定位自己关心的内容。 我已经得到的信息glossary.html 词汇表 二、词汇表中关

我的学生时代 1万+

学习笔记(9)事务

学习笔记(9)事务 隐式传参 怎么获取代理对象呢,AopContext.currentProxy()使用ThreadLocal保存了代理对象,因此((Service) AopContext.currentProxy()).B()就能解决。 public void saveProduct(PmsProductParam productParam) { ProductServiceImpl proxy = (ProductServiceImpl) AopContext.currentProxy();

weixin_46104393的博客 171

spring hibernate 事务管理学习笔记(二)

spring hibernate 事务管理学习笔记(二)

congine_mcfeng的专栏 148

《SQL必知必会》学习笔记九——事务处理

事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable);事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样;在事务开始之前和事务结束以后,数据库的完整性没有被破坏。:原子性(Atomicity,或称不可分割性)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。

2301_76789382的博客 589

Spring5学习笔记—Spring事务处理

事务是逻辑上的一组操作,要么都执行,要么都不执行。相信大家应该都能背上面这句话了,下面我结合我们日常的真实开发来谈一谈。我们系统的每个业务方法可能包括了多个原子性的数据库操作,比如下面的save()方法中就有两个原子性的数据库操作。这些原子性的数据库操作是有依赖的,它们要么都执行,要不就都不执行。事务能否生效数据库引擎是否支持事务是关键。比如常用的 MySQL 数据库默认使用支持事务的innodb引擎。但是,如果把数据库引擎变为myisam,那么程序也就不再支持事务了。

分享思想,留下痕迹。 445

Mysql学习笔记之事务

事务是数据库确保数据一致性的重要机制,具有原子性、一致性、隔离性和持久性四大特性。MySQL默认自动提交事务,也可手动控制事务提交或回滚。并发事务会产生脏读、不可重复读和幻读问题,数据库提供四种隔离级别(Read uncommitted、Read committed、Repeatable Read、Serializable)来解决这些问题。隔离级别越高数据越安全但性能越低,需根据实际需求合理设置隔离级别。可通过SQL语句查看和修改当前事务隔离级别。

weixin_43435307的博客 1053

MyBatis-学习笔记07【07.Mybatis的连接池及事务】

MyBatis-学习笔记07【07.Mybatis的连接池及事务】

upward 791

事务学习笔记

概述 一件事情有n个组成单元,这n个组成单元要不同时成功,要不就同时失败,就是将n个组成单元放入一个事务中。 所谓事务就是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。 例如在数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序。 事务和程序是两个概念。一般来讲,一个程序包含多个事务。 mysql的事务 默认的事务:一条sql语句就是一个事务 默...

dustdawn的博客 255

[MySQL学习笔记] 事务

本文介绍了数据库事务的核心概念与特性。事务是具有ACID特性的操作序列,包括原子性、一致性、隔离性和持久性。文章详细分析了事务并发可能产生的脏读、不可重复读和幻读问题,并对比了四种隔离等级(读未提交、读提交、可重复读和串行化)的特点及其对并发问题的解决能力,隔离性越强则并发性越低。最后介绍了两种事务控制方式:通过设置自动提交参数或使用显式的事务控制语句(BEGIN/COMMIT/ROLLBACK)来管理事务。

qq_58547683的博客 602
上一篇: Hashmap原理
下一篇: 设计模式六 静态代理模式
top_software
博客等级 码龄14年 0粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值