数据库事务隔离级别

数据库事务隔离级别的总结 数据库隔离级别,脏读,幻读,不可重复读,RR隔离级别下的幻读问题 阅读详情

    如果不对事务进行并发控制,我们看看数据库并发操作是会有那些异常情形
1、丢失更新(Lost update)
    两个事务都同时更新一行数据,但是第二个事务却中途失败退出,导致对数据的两个修改都失效了。
2、脏读(Dirty Reads)
    一个事务开始读取了某行数据,但是另外一个事务已经更新了此数据但没有能够及时提交。这是相当危险的,因为很可能所有的操作都被回滚。
3、非重复读(Non-repeatable Reads)
   一个事务对同一行数据重复读取两次,但是却得到了不同的结果。同一查询在同一事务中多次进行,由于其他提交事务所做的修改或删除,每次返回不同的结果集,此时发生非重复读。
4、二类丢失更新(Second lost updates problem)
    无法重复读取的特例。有两个并发事务同时读取同一行数据,然后其中一个对它进行修改提交,而另一个也进行了修改提交。这就会造成第一次写操作失效。
5、幻像读(Phantom Reads)
    事务在操作过程中进行两次查询,第二次查询的结果包含了第一次查 

四个隔离级别:

ReadCommitted:

假设A事务对正在读取数据Data放置了共享锁,那么Data不能被其它事务改写,所以当B事务对Data进行读取时总和A读取的Data数据是一致的,所以避免了脏读。由于在A没有提交之前可以对Data进行改写,那么B读取到的某个值可能会在其读取后被A更改从而导致了该值不能被重复取得;或者当B再次用相同的where字句时得到了和前一次不一样数据的结果集,也就是幻像数据。

ReadUncommitted:
假设A事务即不发布共享锁,也不接受独占锁,那么并发的B或者其它事务可以改写A事务读取的数据,那么并发的C事务读取到的数据的状态和A的或者B的数据都可能不一致,那么。脏读、不可重复读、幻象数据都可能存在。

RepeatableRead:
(注意MSDN原文中的第一句话:在查询中使用的所有数据上放置锁,所以不存在脏读的情况)。
假设A事务对读取的所有数据Data放置了锁,以阻止其它事务对Data的更改,在A没有提交之前,新的并发事务读取到的数据如果存在于Data中,那么该数据的状态和A事务中的数据是一致的,从而避免了不可重复的读取。但在A事务没有结束之前,B事务可以插入新记录到Data所在的表中,那么其它事务再次用相同的where字句查询时,得到的结果数可能上一次的不一致,也就是幻像数据。

Serializable:
 在数据表上放置了排他锁,以防止在事务完成之前由其他用户更新行或向数据集中插入行,这是最严格的锁。它防止了脏读、不可重复读取和幻象数据。

以下是对照表:

隔离级别脏读(Dirty Read)不可重复读(NonRepeatable Read)幻读(Phantom Read)
读未提交(Read uncommitted)可能可能可能
读已提交(Read committed)不可能可能可能
可重复读(Repeatable read)不可能不可能可能
可串行化(Serializable )不可能不可能不可能

Numpy快速入门(np)!看这一篇就够了 阅读详情

相关推荐

Windows 本地 PostgreSQL 忘记 postgres 密码后,如何重置密码并给 root 用户最高权限

<think>我们只需要根据内容生成摘要,不超过150字。摘要应该简明扼要概括主要问题和解决步骤。注意是中文摘要。</think>在Windows本地开发中,因root数据库账号无CREATEDB权限且忘记postgres超级管理员密码,通过临时修改pg_hba.conf为trust认证重置密码,并重启PostgreSQL服务进行登录,最后授予root用户SUPERUSER等权限,完成数据库创建。

MZH 38

数据库的四种事务隔离级别解析【原创解析】

之前在开发中遇到过类似的事务之前的场景,但是并没有做相关系统学习,今天将这四个事务隔离级别详细的分析一下,以便在后续开发过程中对事务的理解更透彻。 一、READ-UNCOMMITTED(读未提交) 1、概念 两个事务,其中一个事务对数据做的DML操作还未提交,另一个事务能够立即看到。 2、例 3、问题 这样会产生严重的脏读,因为修改的事务也许在提交前还会有其他的很多

zhuxiaqing的专栏 4742

小卫星多普勒频偏MATLAB代码

多普勒频偏是由于发射机和接收机之间的相对运动而引起的频率变化。对于小卫星,由于其速度和高度的变化,多普勒频偏会变得更加明显。本文将探讨小卫星多普勒频偏的原理、影响因素以及补偿方法。多普勒频偏的原理当发射机和接收机之间存在相对运动时,接收到的信号频率会发生变化。这种频率变化称为多普勒频偏。其原理可以描述如下:设发射机和接收机之间的距离为 d,发射信号的频率为 f0,发射机和接收机的相对速度为 v。则接收到的信号频率 f 为:其中 c 为光速。

qq_59747472的博客 202

「DB」数据库事务隔离级别

*博客搬家:初版发布于 2017/04/10 00:37 原博客地址:https://my.oschina.net/sunqinwen/blog/875833 数据库事务隔离级别事务隔离级别之前,先来介绍一下数据库事务的几个特性: (1)原子性 最基本的特性,意思是在一个事务内里所有关于数据库的操作,要么全部成功,要么全部失败;成功时意味着本次操作所有数据库相关的写操...

weixin_30438813的博客 172

深入理解OLE DB事务管理与隔离级别

本文详细探讨了OLE DB在事务管理中的高级概念,包括对象属性的设置和检索,以及如何利用不同的事务接口进行事务控制。文章涵盖了从创建、提交到中止事务的完整流程,并对事务隔离级别和锁定机制进行了深入分析,旨在为读者提供全面的事务操作指导。

weixin_36019375的博客 338

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

数据库事务隔离级别有4种,由低到高分别为Read uncommitted(读未提交) 、Read committed (读已提交)、Repeatable read (重复读)、Serializable (序列化)。读现象是在多个事务并发执行时,在读取数据方面可能碰到的问题。包括脏读、不可重复读、幻读。脏读:读到了脏数据,即无效数据。不可重复读:是指在数据库访问中,一个事务内的两个相同查询却返回了不同数据。幻读:指同一个事务内多次查询返回的结果集不一样,比如增加了行记录。

bug世界 6万+

spring事务隔离级别数据库事务隔离级别的关系

一直没搞清楚spring事务数据库事务与锁之间的关系。 spring事务: spring事务本质上使用数据库事务,而数据库事务本质上使用数据库锁,所以spring事务本质上使用数据库锁,开启spring事务意味着使用数据库锁; 那么事务隔离级别与锁有什么关系呢?本人认为事务隔离级别是通过锁的机制实现的,事务隔离级别数据库开发商根据业务逻辑的实际需要定义的一组锁的使用策略。当我们将数...

追逐消失的记忆 1万+

Spring事务隔离级别数据库隔离级别不一致时,该以谁为准?

项目中,以 Spring 事务为准,因为他重写了数据库隔离级别,但没有直接修改数据库隔离级别

Java Punk 6035

数据库事务隔离级别

1.数据库事务的概念: •事务是指一组相互依赖的操作行为,如银行交易、股票交易或网上购物。事务的成功取决于这些相互依赖的操作行为是否都能执行成功,只要有一个操作行为失败,就意味着整个事务失败。例如,Tom到银行办理转账事务,把100元钱转到Jack的账号上,这个事务包含以下操作行为: –(1)从Tom的账户上减去100元。 –(2)往Jack的账户上增加100元。 •显

jialinqiang的专栏 1万+

数据库事务事务隔离级别

事务简单说将一串操作看成一个整体,只有当这串操作全部执行成功的时候才成功,只有有一个操作出错就失败,回滚到操作开始之前。这一串操作就是事务。比如张三给李四转账100块这件事有三个步骤,查询张三余额,张三自己账户先扣一百块,然后李四账户获得一百块。如果张三扣款成功,但李四获得一百块失败,那么不是转账失败,凭空损失了100块?或者张三扣款失败,但李四获得一百块成功,那张三不是凭空赚了100块?

bjjx123456的博客 1028

数据库事务(Database Transaction) --四个隔离级别

  是指作为单个逻辑工作单元执行的一系列数据操作,要么完全地执行,要么完全地不执行。事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。一个逻辑工作单元要成为事务,必须满足所谓的ACID(原子性、一致性、隔离性和持久性)属性。事务数据库运行中的一个逻辑工作单位,由...

weixin_28760063的博客 864

中小企业出海上云:一次服务器选型踩坑记录

这次踩坑的本质,是用单机思维运营海外业务:区域凭地理直觉,弹性当临时动作,规格只看计算资源,安全与售后留到出事后才想。迁移执行:数据迁移走全量导出、增量同步、短停切换三步,先全量逻辑导出导入并核对行数与关键字段,再追增量,两边延迟归零后选低谷窗口把源库置为只读,完成末次增量并切换写流量。两条链路都不稳定,说明问题不在个别运营商,而在区域选址本身。2026 年上半年开始做周期性促销,并接入当地支付网关的订单回传后,流量结构与调用链都变了,单机方案开始连续出问题,于是有了这次从排查、重新选型到迁移落地的记录。

2601_94912732的博客 339

Java开源在线考试系统怎么选?从技术选型到落地部署的完整指南

Java开源在线考试系统怎么选?本文从技术选型、核心功能、部署运维、二次开发等维度,梳理了Java开源在线考试系统的选型要点。

麦塔在线考试培训系统 350

商超智能运营如何落地?从系统架构到实战避坑的完整技术路径

3. **多端交互展示层**:需覆盖顾客使用的**小程序、APP及H5公众号**,以及员工使用的管理后台。答:在应用层引入**适配器模式**。在项目启动时,应强制要求供应商或自研团队产出**部署文档**(含环境变量清单)和**二次开发文档**(含核心流程时序图),确保后续维护不受限于个人。- **多租户插件**:MyBatis Plus的`TenantLineInnerInterceptor`可实现SQL层面的自动拼接`store_id`条件,防止开发者因SQL编写疏漏导致的数据越权。

weixin_56812938的博客 533

基于Python的爱奇艺视频数据可视化分析系统

长视频平台剧集、评分、热度与评论数据体量大、维度多,手工汇总难以快速把握类型结构、口碑分布与主演导演影响力。系统采用 B/S 架构,后端入口为app.py,运行端口8060;数据库使用 MySQL(库名iqiyi),经 PyMySQL 访问。前台基于 Bootstrap 5、本地中的 ECharts 5 与 echarts-wordcloud,配合主题。业务表包括usersdramascommentsfavorites。数据可通过导入,或经/ 相关脚本补充样本。分析层在。

qq_35928134的博客 243

Oracle迁移到PostgreSQL数据库-FGOracle2PG工具

FGOracle2PG 是一款高性能、高可靠的 Oracle 数据库到 PostgreSQL 数据库迁移工具。它由风哥基于多年数据库运维与迁移实战经验开发。工具采用纯 Python 实现,支持命令行(CLI)与可视化 Web 控制台两种操作方式,能够覆盖从开发测试到生产环境的全场景数据库迁移需求。

风哥oracle/mysql/pg技术教程 191

电商推返模式的技术架构与系统落地实践

成功的电商推返模式系统,本质是。

weixin_42804741的博客 191

Django的手机数据分析与可视化

Django的手机数据分析与可视化系统 摘 要 本系统基于Django框架、HTML和MySQL数据库技术,构建了一个全面的手机数据分析与可视化平台。大屏内容丰富,包括品牌市场份额分布、手机价格区间分布、各维度评分分布、热门机型Top10、内存容量分布以及品牌评分与价格分析等多个模块。通过这些模块,用户可以直观地了解手机市场的整体趋势、各品牌的市场表现、手机价格分布情况、用户评分分布以及热门机型的详细信息。系统采用了先进的可视化技术,将复杂的数据以图表的形式呈现,使得数据更加易于理解和分析。 在管理功能方

weixin_41915110的博客 791

MySQL 數據庫導入

2. 查詢sql語句模式。

MyFreeIT 17

湖南省湘西土家族苗族自治州DEM数字高程数据30m(含本市级范围shp文件).zip

湖南省湘西土家族苗族自治州DEM数字高程数据30m(含本市级范围shp文件),30米高精度地形数据,dem数据的范围是市范围框,因此市周边的数据也包含了部分在内,提供给大家学习练习用。

上一篇: java中split() replace() replaceAll()三个函数分析
下一篇: 数据库范式
FG2006
博客等级 码龄19年 395粉丝 66原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值