数据库事务--数据库事务基本概念

news2024/10/6 10:33:53

2、认识事务

2.1、为什么需要事务

在这里插入图片描述

在这里插入图片描述

如何解决呢 使用事务

2.2、什么是事务

事务的概念:
数据库事务是访问并可能更新数据库中各种数据项的一个程序执行单元
事务的组成:
一个数据库事务通常包含对数据库进行读或写的的一个操作序列

在这里插入图片描述

事务的相关特性:

  1. 数据库事务可以包含一个或多个数据库操作,但这些操作构成一个逻辑上的
    整体。

  2. 构成逻辑整体的这些数据库操作,要么全部执行成功,要么全部执行不成功。

  3. 构成事务的所有操作,要么全都对数据库产生影响,要么全都不产生影响,

    即不管事务是否执行成功,数据库总能保持一致性状态。

  4. 以上即使在数据库出现故障以及并发
    事务存在的情况下依然成立。

2.3、解决方法

在这里插入图片描述

2.4、事务特性

在这里插入图片描述

3、事务异常

在这里插入图片描述

3.1、脏读

读未提交

在这里插入图片描述

3.2、不可重复读

读已提交

在这里插入图片描述

3.3、幻读

在这里插入图片描述

统计性事务就是查询 多条数据 汇总出一个结果,不可能重复读只有一条

4、事务隔离级别

4.1、什么叫隔离级别:

事务并发操作同一批数据的时候所导致的问题可以通过设置隔离级别来解决。

4.2、隔离级别的分类(从低到高):

➢读未提交(READ UNCOMMITTED)
➢读已提交(READ COMMITTED)–Oracle默认级别
➢可重复读(REPEATABLE READ)–MySQL默认级别
➢串行化(SERIALIZABLE)

隔离级别从小到大安全性越来越高,但是效率越来越低

在这里插入图片描述

5、事务并发异常-丢失更新

5.1、丢失更新 概念

如果多个线程操作,基于同一个查询结构对表中的记录进行修改,

那么后修改的记录将会覆盖前面修改的记录,前面的修改就丢失掉了,这就叫做更新丢失。

5.2、第一类丢失更新: 回滚丢失

所有隔离级别都不允许第一 类丢失更新发生,不考虑之中

5.3、第二类丢失更新 :覆盖丢失

在这里插入图片描述

所有隔离级别都不允许第一 类丢失更新发生

5.4、如何解决第二类 丢失更新

5.4.1、悲观锁机制

假定这样的问题是高概率的,最好一开始就锁住,免得更新老是出错。
➢添加共享锁方式: select * from account lock in share mode ;
➢添加排它锁方式: select * from account for update;

5.4.2、乐观锁机制

假定这样的问题是小概率的,最后一步做更新的时候再锁住,免得锁住时间太长影响其他人做有关操作。
➢在表中增加一-个类型是timestamp字段,并将其设置只要该表进行插入或修改操作时都会更新该字段
为最新时间;
➢在修改数据时通过检查timestamp是否改变判断出当前更新基于的查询是否已经是过时的版本;

5.4.3、乐观锁机制演示

在这里插入图片描述

5.4.4、乐观锁与悲观锁如何选择

在用户并发数比较少且冲突比较严重的应用系统中选择悲观锁b方法,

其他情况首先乐观锁版本列法

这里是引用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/816489.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

EPICS通道访问介绍以及练习

提纲 1) 通道访问概念 2)通道访问API 3) 简单的CA客户端 4)使用回调的简单CA客户端 EPICS概要 搜索和连接过程 搜索请求 1)搜索请求由一系列UDP包组成 只发送给EPICS_CA_ADDR_LIST从短时间间隔开始,每…

vue部署在iis的字体获取报错,请求404 - 找不到文件或目录

配置MIME即可 在添加MIME类型中,增加以下信息: 文件扩展名:.woff MIME类型:application/x-font-woff

DHorse v1.3.0 发布,基于k8s的发布平台

综述 DHorse是一个简单易用、以应用为中心的云原生DevOps系统,具有持续集成、持续部署、微服务治理等功能,无需安装依赖Docker、Maven、Node等环境即可发布Java、Vue、React应用,主要特点:部署简单、操作简洁、功能快速。 新增特…

《ChatGPT原理最佳解释,从根上理解ChatGPT》

【热点】 2022年11月30日,OpenAI发布ChatGPT(全名:Chat Generative Pre-trained Transformer), 即聊天机器人程序 ,开启AIGC的研究热潮。 ChatGPT是人工智能技术驱动的自然语言处理工具,它能够…

深入理解 SQL:从基本查询到高级聚合

目录 背景理论知识示例1211. 查询结果的质量和占比(Round group by)1204. 最后一个能进入巴士的人 (Having limit order by)1193. 每月交易 I(if group by)1179. 重新格式化部门表1174. 即时食物配送 II&am…

关于DC电源模块输入电压范围的问题

BOSHIDA 关于DC电源模块输入电压范围的问题 DC电源模块是一种将交流电转换为直流电的设备,它非常常见且广泛应用于电子设备、通讯设备、工业自动化等领域。而其输入电压范围也是我们在使用和选购DC电源模块时需要特别关注的一个参数。 首先,我们需要了解…

java的空引用null和空字符串““

java中如果字符串变量指向null,表示空引用,此时对字符串求长度会抛出异常。 而""表示一个空字符串,对字符串求长度是可以的,求出来的字符串长度为0。 举例: package com.thb;public class Test6 {public s…

数字电路(一)

1、例题 1、进行DA数模转换器选型时,一般要选择主要参数有( A)、转换精度和转换速度。 A、分辨率 B、输出电流 C、输出电阻 D、模拟开关 2、下图所示电路的逻辑功能为( B) A、与门 B、或门 C、与非门 D、或非门 分析该…

导出文件下载进度条简单实现

前言 今天要跟大家分享的是一个导出数据进度条的简单实现,适用场景用在数据量大、组织数据耗时的情况下的简单实现。 一、设计思路 1、导出数据生成文件上传到OSS, 2、导出数据状态存redis缓存, 3、前端发导出请求后,返回的文件k…

Hudi Flink SQL源码调试学习(1)

前言 本着学习hudi-flink源码的目的,利用之前总结的文章Hudi Flink SQL代码示例及本地调试中的代码进行调试,记录调试学习过程中主要的步骤及对应源码片段。 版本 Flink 1.15.4Hudi 0.13.0 目标 在文章Hudi Flink SQL代码示例及本地调试中提到:我们…

分布式事务之本地事务

🚀 分布式事务 🚀 🌲 AI工具、AI绘图、AI专栏 🍀 🌲 如果你想学到最前沿、最火爆的技术,赶快加入吧✨ 🌲 作者简介:硕风和炜,CSDN-Java领域优质创作者🏆&…

大数据课程E1——Flume的概述

文章作者邮箱:yugongshiyesina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 了解Ganglia的概念; ⚪ 了解Ganglia的拓扑结构和执行流程; ⚪ 掌握Ganglia的安装操作; 一、简介 1. 概述 1. Flume原本是由Cloude…

国内外遥感数据处理软件对比

1.国内遥感数据处理软件概况 1.1北京航天宏图信息技术股份有限公司 1.1.1公司简介 航天宏图信息技术股份有限公司成立于2008年,是国内遥感和北斗导航卫星应用服务商,致力于卫星应用软件国产化、行业应用产业化、应用服务商业化,研发并掌握了具有完全自主知识产权的PIE(Pix…

C# 2的幂

231 2的幂 给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。 如果存在一个整数 x 使得 n 2x ,则认为 n 是 2 的幂次方。 示例 1: 输入:n 1 输出&a…

【RabbitMQ】之消息的可靠性方案

目录 一、数据丢失场景二、数据可靠性方案 1、生产者丢失消息解决方案2、MQ 队列丢失消息解决方案3、消费者丢失消息解决方案 一、数据丢失场景 MQ 消息数据完整的链路为:从 Producer 发送消息到 RabbitMQ 服务器中,再由 Broker 服务的 Exchange 根据…

平面设计软件都有哪些?推荐这7款

优秀的平面广告设计可以给产品带来良好的效益,正确传播品牌的价值和色调,而功能强大、使用方便的平面广告设计软件是创造优秀平面广告设计的关键。本文推荐7款备受好评的平面广告设计软件,易于使用! 1.即时设计 即时设计是国内一…

HCIP OSPF+BGP综合实验

题目 1、该拓扑为公司网络,其中包括公司总部、公司分部以及公司骨干网,不包含运营商公网部分。 2、设备名称均使用拓扑上名称改名,并且区分大小写。 3、整张拓扑均使用私网地址进行配置。 4、整张网络中,运行OSPF协议或者BGP协议…

jmeter压力测试指标解释

目录 RT(response time) Throughput 吞吐量 并发用户数 QPS (query per seconds) TPS (transition per seconds) PV和UV 聚合报告: RT(response time) 什么是RT? RT就是指系统在接收到请求和做出相应这段时间跨度 但是值得一提的是RT的值越高,并不真的就能…

性能测试必备监控技能linux篇

前言 如果性能测试的目标服务器是linux系统,在如何使用linux自带的命令来实现性能测试过程的监控分析呢? 对于日常性能测试来讲,在linux下或是类Unix系统,我们必须掌握以下常用的指标查看命令。 ps pstree top free vmstat …

Springboot配置文件数据项加密

1 添加依赖 <!-- jasypt-spring-boot-starter --> <dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>3.0.2</version> </dependency> 2 加密数…