oracle数据库事务的四大特性与隔离级别与游标
数据库事务的四大特性:
这里提到了 ACID 四个特性,分别是:
A(Atomicity):
原子性,确保事务中的所有操作要么全部执行成功,要么全部不执行,不存在部分执行的情况。
C(Consistency):
一致性,指在事务执行前后,数据库的数据完整性约束没有被破坏,保持系统处于一致的状态。
I(Isolation):
隔离性,指数据库中的多个事务并发执行时,每个事务的操作应该与其他事务的操作相互隔离,互不干扰,事务的执行不应该受到其他事务的影响。
D(Durability):
持久性,指一旦事务被提交,其对数据库的修改应该永久保存在数据库中,即使系统崩溃或重新启动,也不应该丢失。
这些特性是数据库事务处理的基本原则,确保了数据库在并发操作和系统故障的情况下仍能保持数据的完整性和一致性。
事务的隔离级别:
事务的隔离级别是数据库管理系统中用来控制事务并发执行时相互之间的影响程度的一种机制。数据库系统通常支持多种隔离级别,不同的隔离级别会对事务的并发执行产生不同的影响。常见的隔离级别包括:
1. 读未提交(Read Uncommitted):
允许一个事务读取另一个事务尚未提交的数据。这种隔离级别最低,可能导致脏读、不可重复读和幻读问题。
2. 读提交(Read Committed):
允许一个事务只能读取另一个事务已经提交的数据。这种隔离级别可以避免脏读,但仍可能产生不可重复读和幻读问题。
3. 可重复读(Repeatable Read):
确保在同一个事务中多次读取同一数据时,得到的结果是一致的。其他事务对数据的修改不会影响当前事务中已经读取的数据。这种隔离级别可以避免脏读和不可重复读,但仍可能产生幻读问题。
4. 串行化(Serializable):
最高的隔离级别,通过对事务进行串行化执行来确保事务之间完全隔离。这种隔离级别可以避免脏读、不可重复读和幻读,但会影响系统的并发性能。
不同的隔离级别在提供数据一致性的同时,也会带来不同程度的性能开销和并发性能。选择合适的隔离级别需要根据具体业务场景和系统需求来进行权衡。
游标:
定义:
游标(Cursor)是数据库管理系统中用于遍历查询结果集的一种数据结构。当执行一个查询语句时,数据库系统会返回一个结果集,结果集中包含了满足查询条件的所有数据行。游标可以将程序对查询结果集的操作限定在一个当前位置,通过移动游标可以逐行遍历结果集,以便对每一行数据进行处理。
在使用游标时,通常会经历以下几个步骤:
1. 执行查询语句:首先执行一个 SELECT 查询语句,获取满足条件的数据行组成的结果集。
2. 声明游标:在程序中声明一个游标,并将查询结果集与该游标关联起来。
3. 打开游标:打开游标,将游标定位到结果集的第一行数据。
4. 遍历结果集:通过移动游标,逐行遍历结果集,对每一行数据进行处理。
5. 关闭游标:当遍历完成后,关闭游标释放资源。
使用游标可以灵活地处理查询结果集,逐行对数据进行操作。然而,需要注意的是,在一些情况下,使用游标可能会影响系统的性能,因为它需要在数据库服务器上维护额外的状态信息。因此,在编写使用游标的代码时,应该考虑到性能方面的因素,并尽量避免不必要的游标操作。
示例
当需要一个示例 SQL 查询语句来说明游标的用法时,可以考虑一个简单的示例,例如使用游标遍历员工表(Employees table)中的数据,并打印出每个员工的姓名和工资。
假设员工表结构如下:
CREATE TABLE Employees (EmployeeID INT PRIMARY KEY,FirstName VARCHAR(50),LastName VARCHAR(50),Salary DECIMAL(10, 2)
);
以下是使用游标遍历员工表并打印出每个员工的姓名和工资的示例 SQL 查询语句:
-- 声明变量用于存储员工姓名和工资
DECLARE @FirstName VARCHAR(50);
DECLARE @LastName VARCHAR(50);
DECLARE @Salary DECIMAL(10, 2);-- 声明游标
DECLARE employee_cursor CURSOR FOR
SELECT FirstName, LastName, Salary
FROM Employees;-- 打开游标
OPEN employee_cursor;-- 读取第一行数据
FETCH NEXT FROM employee_cursor INTO @FirstName, @LastName, @Salary;-- 循环遍历结果集并处理每一行数据
WHILE @@FETCH_STATUS = 0
BEGIN-- 输出员工姓名和工资信息PRINT 'Employee: ' + @FirstName + ' ' + @LastName + ', Salary: ' + CAST(@Salary AS VARCHAR(20));-- 读取下一行数据FETCH NEXT FROM employee_cursor INTO @FirstName, @LastName, @Salary;
END-- 关闭游标
CLOSE employee_cursor;
DEALLOCATE employee_cursor;
以下是使用游标遍历员工表并打印出每个员工的姓名和工资的结果:
Employee: John Smith, Salary: 50000.00
Employee: Jane Doe, Salary: 60000.00
Employee: Michael Johnson, Salary: 55000.00
Employee: Emily Wang, Salary: 58000.00
相关文章:
oracle数据库事务的四大特性与隔离级别与游标
数据库事务的四大特性: 这里提到了 ACID 四个特性,分别是: A(Atomicity): 原子性,确保事务中的所有操作要么全部执行成功,要么全部不执行,不存在部分执行的情况。 C(…...
Day25--learning English
一、积累 1.crab 2.scrape 3.crude 4.infect 5.blinds 6.plunk 7.fart 8.expel 9.stamp 10.tongs 11.utensil 12.sticky 13.yolk 14.snap 15.fuzz 16.chuck 17.hamper 18.panel 19.prod 20.eyebrow 二、练习 1.牛津原译 scrape /skreɪp/ REMOVE 除去 1.to remove sth from…...
职业技能鉴定服务中心前端静态页面(官网+证书查询)
有个朋友想做职业技能培训,会发证书,证书可以在自己网站可查。想做一个这样的网站,而且要特别土,一眼看上去像xxx官方网站,像jsp .net技术开发的网站。用htmlcssjquery还原了这样子一个前端页面,这里分享给…...
第六十六天 API安全-接口安全阿里云KEY%postmanDVWSXEE鉴权泄露
第66天 API安全-接口安全&阿里云KEY%postman&DVWS&XEE&鉴权&泄露 知识点 1.HTTP类接口-测评 2.RPC类接口-测评 3.Web Service类-测评 参考链接:https://www.jianshu.com/p/e48db27d7c70 内容点: SOAP(Simple Object Access Prot…...
在Vue3 + Vite项目中使用less
在Vue3 Vite项目中使用less,需要安装less和less-loader两个依赖。 首先,在项目根目录下执行以下命令安装less和less-loader: npm install less less-loader --save-dev安装完成后,在vite.config.js配置文件中添加以下代码&…...
this的指向问题总结
this一般会出现在函数里面,但是一般情况下只有在函数被调用执行时,才能确定this指向哪个对象。一般情况下this是指调用函数的对象。 1.在全局作用域下或者普通函数中this的指向一般都是window对象 window.fn(),普通函…...
jQuery的应用(二)
对上一节内容的补充。 jQuery选择器 jQuery选择器类似于CSS选择器,用来选取网页中的元素 jQuery选择器功能强大,种类也很多,分类如下 通过CSS选择器选取元素: 基本选择器层次选择器属性选择器通过过滤选择器选择元素: 基本过滤选择器可见性过滤选择器表单对象过滤选择器…...
芋道源码(yudao)跳转新页面的几种方式
芋道源码(yudao)跳转新页面的几种方式 导入useRouter const { push, replace, resolve } useRouter() 当前页面跳转 const goToPage (url: string) > {url push(/hot163) }当前页面跳转 const goToPage (url: string) > {url resolve(/h…...
Open AI — Sora 如何发挥其魔力 — 近距离观察该技术
OpenAI 的大模型 Sora 可以制作一整分钟的高质量视频。他们的工作成果表明,使视频生成模型更大是为现实世界创建多功能模拟器的好方法。Sora 是一种灵活的可视化数据模型。它可以创建不同长度、形状和大小的视频和图片,甚至可以创建长达一分钟的高清视频。我阅读了 OpenAI 的…...
密码解密 - 华为OD统一考试(C卷)
OD统一考试(C卷) 分值: 100分 题解: Java / Python / C 题目描述 给定一段 “密文”字符串 s ,其中字符都是经过 “密码本” 映射的,现需要将“密文”解密并且输出。 映射的规则: ( a−i ) 分…...
【深度学习】Pytorch教程(八):PyTorch数据结构:2、张量的数学运算(6):高维张量:乘法、卷积(conv2d~四维张量;conv3d~五维张量)
文章目录 一、前言二、实验环境三、PyTorch数据结构1、Tensor(张量)1. 维度(Dimensions)2. 数据类型(Data Types)3. GPU加速(GPU Acceleration) 2、张量的数学运算1. 向量运算2. 矩阵…...
Autosar-Mcal配置详解-GPT
3.3.1添加GPT模块 方法与添加Dio相似,可参加Dio模块添加方法。 3.3.2 创建、配置GPT通道 1)根据需求创建GPT通道(即创建几个定时器) 本例中创建了3个定时器通道:1ms,100us,OsTimer。 2)配置GPT通道 配置T…...
前端面试问题(jwt/布局/vue数组下标/扁平化/菜单树形/url api/新版本)
前端面试问题(jwt/布局/vue数组下标/扁平化/菜单树形/url api/新版本) 1. jwt鉴权逻辑 前端 JWT 鉴权逻辑通常涉及在发起请求时携带 JWT,并在接收到响应后处理可能的授权问题。 1. 用户登录: 用户提供凭证: 用户在登录界面输入用户名和密码…...
Learn HTML in 1 hour
website address https://www.youtube.com/watch?vHD13eq_Pmp8 excerpt All right, what’s going on? everybody. It’s your Bro, hope you’re doing well, and in this video I’m going to help you started with html; so sit back, relax and enjoy the show. If y…...
HashMap的put方法执行过程
根据Key通过哈希算法与与运算得出数组下标如果数组下标位置元素为空,则将key和value封装为Entry对象(JDK1.7中是Entry对象,JDK1.8中 是Node对象)并放⼊该位置如果数组下标位置元素不为空,则要分情况讨论 a. 如果是JDK1…...
一、直方图相关学习
目录 1、灰度直方图1.1 基本概念和作用1.2 代码示例 2、BGR直方图2.1 基本概念和作用2.2 代码示例 3、灰度直方图均衡1. 基本概念和作用2. 代码示例 4、直方图变换(查找)4.1 基本概念和作用4.2 代码示例 5、直方图匹配5.1 基本概念和作用5.2 代码示例 6、…...
Linux 权限详解
目录 一、权限的概念 二、权限管理 三、文件访问权限的相关设置方法 3.1chmod 3.2chmod ax /home/abc.txt 一、权限的概念 Linux 下有两种用户:超级用户( root )、普通用户。 超级用户:可以再linux系统下做任何事情ÿ…...
零基础学习8051单片机(十五)
本次先看书学习,并完成了课后习题,题目出自《单片机原理与接口技术》第五版—李清朝 答: (1)当 CPU正在处理某件事情的时候,外部发生的某一件事件请求 CPU 迅速去处理,于是,CPU暂时中止当前的工…...
项目的一些难点
1.不用redis?分布式锁,如何防止用户重复点击? 1.乐观锁 乐观锁是一种在数据库层面上避免并发冲突的机制。它通常通过在数据库记录中添加一个版本号(或时间戳)来实现。每次更新记录时,都会检查版本号是否与数据库中的…...
Kubernetes 卷存储 NFS | nfs搭建配置 原理介绍 nfs作为存储卷使用
1、NFS介绍 NFS(Network File System)是一种分布式文件系统协议,允许客户端远程访问服务器上的文件,实现数据共享。它整合多个存储设备为统一文件系统,方便数据存储和管理,支持负载均衡和故障转移…...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...
FastAPI 教程:从入门到实践
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...
相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...
CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...
css3笔记 (1) 自用
outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size:0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格ÿ…...
大数据学习(132)-HIve数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言Ǵ…...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...
[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】,分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...
Razor编程中@Html的方法使用大全
文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...
