当前位置: 首页 > article >正文

Oracle数据库事务学习

目录

一、什么是事务,事务的作用是什么

二、事务的四大特性(ACID)

1. 原子性(Atomicity)

2. 一致性(Consistency)

3. 隔离性(Isolation)

4. 持久性(Durability)

三、关于锁的概念——表锁、行锁、死锁、乐观/悲观锁、

1.行锁

2.表锁

3.死锁

4.乐观锁

5.悲观锁

四、查询和杀死进程


一、什么是事务,事务的作用是什么

事务(Transaction)是由一系列操作序列组成的一个逻辑单位,这些操作要么全部成功执行,要么全部不执行。

示例:假设有一个银行系统,用户A想要从自己的账户转账100元到用户B的账户。
需要满足以下条件:

  • 用户A的账户必须有足够的余额(至少100元)。
  • 用户B的账户必须存在。
  • 转账金额不能超过用户A的账户余额。
  • 转账成功后,用户A和用户B的账户余额应该更新。
-- 检查用户A的余额是否足够
SELECT balance FROM accounts WHERE user_id = 'A';-- 如果余额足够,执行转账操作
UPDATE accounts SET balance = balance 100 WHERE user_id = 'A';
UPDATE accounts SET balance = balance + 100 WHERE user_id = 'B';
COMMIT; -提交事务

事务确保了在转账过程中数据的一致性和完整性。
如果其中任何一个步骤失败,整个事务将被回滚,以确保数据不会处于不一致的状态。

二、事务的四大特性(ACID)

1. 原子性(Atomicity)

        原子性指的是事务中的所有操作要么全部完成,要么全部不完成,不会结束在中间某个点。
        例子:向银行账户转账是一个事务。如果转账过程中,账户A的扣款操作成功,但是账户B的存款操作失败,那么整个事务应该回滚到最开始的状态,就好像转账操作从未发生一样。

2. 一致性(Consistency)

        一致性确保事务在执行前后,数据库保持一致的状态。事务必须保证数据库从一个有效的状态转移到另一个有效的状态。
        例子:在图书馆管理系统中,借书是一个事务。
        如果一个用户尝试借阅一本已被借出的书,这个事务应该被拒绝,以保持数据库中关于书籍可借状态的一致性。

3. 隔离性(Isolation)

        隔离性指并发执行的事务之间不会互相影响。每个事务都应该是独立的,就像它是在系统上单独运行一样。
        例子:如果两个用户同时尝试购买最后一件商品,数据库需要保证这两个事务是隔离的,以防止库存数量出现不一致的情况。
        每个事务都应看到商品的原始数量,并在购买成功后更新库存。

4. 持久性(Durability)

        持久性意味着一旦事务被提交,它对数据库的改变就是永久性的,即使系统发生故障也不会丢失
        例子:在电子商务网站中,用户下单是一个事务。
        一旦用户提交订单并事务被成功提交,这个订单信息就会永久保存在数据库中,即使随后系统发生崩溃或重启。

        这四个特性共同确保了数据库事务的可靠性和数据的完整性。

三、关于锁的概念——表锁、行锁、死锁、乐观/悲观锁、

为了保证数据的一致性,就会把数据给锁起来。

1.行锁

        就是把那一行的数据给锁起来,在没有提交或者回滚事务之前,其它的会话(事务)都不能去修改这条数据。

  • 行锁允许多个事务同时访问同一张表中的不同行,从而增加数据库的并发性能。这对于OLTP系统尤为重要,其中许多独立事务需要访问和修改数据集的不同部分。
  • 当事务执行INSERT、UPDATE、DELETE操作时,Oracle自动为所涉及的行加上锁,保持到事务提交或回滚。此外,使用SELECT ... FOR UPDATE也会对选定行加上锁。
  • 行锁主要通过每行的锁定标志位实现,当一个事务需要修改某行数据时,它会改变该行上的锁定标志位,从而获得对该行的独占访问权。
  • 行锁主要用于单行或少量行的精确操作,确保操作的原子性和隔离性。与表锁相比,行锁提供了更高的并发性,但管理成本更高。

2.表锁

        把整张表给锁起来,在没有提交或者回滚事务之前,不能对这张表的结构做 DDL 操作。

  • 表锁是锁定整个表的一种方式,它可以防止其他事务在该表上进行任何数据的增删改操作。这种锁定方式在某些情况下非常有效,比如在大量数据迁移或批量更新时。
  • 当执行DDL语句(如ALTER TABLE)或者某些没有使用索引的DML语句(INSERT、UPDATE、DELETE)时,可能会触发表锁。特别是当SQL语句无法精准定位到行级别时,Oracle可能选择表级锁定以维护数据完整性。
  • 通过LOCK TABLE语句显式地锁定一张表,这通常用于特定的数据库维护操作,如数据迁移时的一致性保护。
  • 表级锁包括多种模式,如行共享(RS)、行独占(RX)、共享锁(S)、共享行排他(SRX)以及独占(X)等。这些锁模式决定了其他事务对这张表能进行哪些操作。

3.死锁

        两个事务之间都在等待着对方解锁,释放资源。

-死锁的处理:当两个或多个事务彼此等待对方释放锁时,会发生死锁。Oracle会自动检测并解决死锁,通常通过终止其中一个事务来解除死锁状态。
-事务设计:良好的事务设计应避免不必要的锁升级,优先使用行级锁,减少锁持有时间,合理设计事务大小和持续时间,以优化性能并减少锁相关的问题。

4.乐观锁

乐观锁和悲观锁,他们也是锁,区别就是在修改数据的时候是否马上把这一条数据给锁起来。

        事务1在对一条数据做修改的时候,数据库就很乐观地认为其它事务不会会对这条数据做修改,所以数据库就不会把那张表和那条数据给锁起来,其它事务是可以执行对这条数据执行 UPDATE,只有在 COMMIT 的时候才会去校验其它事务是否有对该条数据做修改。

        乐观锁通常通过在数据表中添加一个版本号或时间戳字段实现。事务开始时记录下当前的版本号,事务提交时检查版本号是否改变,如果改变则说明有其他事务更新了数据。

5.悲观锁

        事务1在对一条数据做修改的时候,数据库就很悲观地认为其它事务也会对这条数据做修改,所以数据库就会马上把那张表和那条数据给锁起来,不让其它事务修改它。

        悲观锁可以通过数据库的锁机制实现,例如行锁、表锁等。事务在读取数据时即加锁,其他事务必须等待锁释放后才能访问数据。

四、查询和杀死进程

---查进程 在 SYS 用户
select sess.sid,--会话idsess.serial#,lo.oracle_username,lo.os_user_name,ao.object_name,lo.locked_mode
from v$locked_object lo,dba_objects ao,v$session sess
where ao.object_id = lo.object_id and lo.session_id = sess.sid;--杀进程
-alter system kill session 'sid,serial#';alter system kill session '137,1946';

相关文章:

Oracle数据库事务学习

目录 一、什么是事务,事务的作用是什么 二、事务的四大特性(ACID) 1. 原子性(Atomicity) 2. 一致性(Consistency) 3. 隔离性(Isolation) 4. 持久性(Durability) 三、关于锁的概念——表锁、行锁、死锁、乐观/悲观锁、 1.行锁 2.表锁 3.死锁 4.乐观锁 5.…...

MySQL 全量 增量备份与恢复

目录 前言 一、MySQL 数据库备份概述 1. 数据备份的重要性 2. 数据库备份类型 2.1 从物理与逻辑的角度分类 2.2 从数据库的备份策略角度分类 3. 常见的备份方法 二、数据库完全备份操作 1. 物理冷备份与恢复 1.1 备份数据库 1.2 恢复数据库 2. mysqldump 备份与恢复…...

【仿生机器人系统设计】涉及到的伦理与安全问题

随着材料科学、人工智能与生物工程学的融合突破,仿生机器人正从科幻走向现实。它们被寄予厚望——在医疗康复、老年照护、极端环境作业甚至社交陪伴等领域释放巨大价值。然而,当机器无限趋近于“生命体”,其设计过程中潜伏的伦理与安全迷宫便…...

NodeJS全栈WEB3面试题——P5全栈集成与 DApp 构建

5.1 如何实现一个完整的 Web3 登录流程(前端 后端)? ✅ 核心机制:钱包签名 后端验签 Web3 登录是基于“消息签名”来验证用户链上身份,而非传统用户名/密码。 💻 前端(使用 MetaMask&#…...

鸿蒙进阶——Mindspore Lite AI框架源码解读之模型加载详解(一)

文章大纲 引言一、模型加载概述二、核心数据结构三、模型加载核心流程 引言 Mindspore 是一款华为开发开源的AI推理框架,而Mindspore Lite则是华为为了适配在移动终端设备上运行专门定制的版本,使得我们可以在OpenHarmony快速实现模型加载和推理等功能&…...

【数据结构】图论核心算法解析:深度优先搜索(DFS)的纵深遍历与生成树实战指南​

深度优先搜索 导读:从广度到深度,探索图的遍历奥秘一、深度优先搜索二、算法思路三、算法逻辑四、算法评价五、深度优先生成树六、有向图与无向图结语:深潜与回溯,揭开图论世界的另一面 导读:从广度到深度,…...

Mysql数据库 索引,事务

Mysql数据库 索引,事务 一.索引 简介 索引是数据库中用于提高查询效率的一种数据结构,它通过预先排序和存储特定列的值,帮助数据库快速定位符合条件的数据行,避免全表扫描。以下是关于索引的核心简介: 1. 核心作用…...

RESTful APInahamcon Fuzzies-write-up

RESTful API 路径详解 RESTful API(Representational State Transfer)是一种 基于 HTTP 协议的 API 设计风格,它通过 URL 路径 和 HTTP 方法(GET、POST、PUT、DELETE 等)来定义资源的访问方式。它的核心思想是 将数据…...

安装DockerDocker-Compose

Docker 1、换掉关键文件 vim /etc/yum.repos.d/CentOS-Base.repo ▽ [base] nameCentOS-$releasever - Base - Mirrors Aliyun baseurlhttp://mirrors.aliyun.com/centos/$releasever/os/$basearch/ gpgcheck1 enabled1 gpgkeyhttp://mirrors.aliyun.com/centos/RPM-GPG-KEY-C…...

2025年机械化设计制造与计算机工程国际会议(MDMCE 2025)

2025年机械化设计制造与计算机工程国际会议(MDMCE 2025) 2025 International Conference on Mechanized Design, Manufacturing, and Computer Engineering 一、大会信息 会议简称:MDMCE 2025 大会地点:中国贵阳 审稿通知&#…...

Java生态中的NLP框架

Java生态系统中提供了多个强大的自然语言处理(NLP)框架,以下是主要的NLP框架及其详细说明: 1、Apache OpenNLP ​简介​:Apache OpenNLP是Apache软件基金会的开源项目,提供了一系列常用的NLP工具。 ​主要功能​: …...

NVM,Node.Js 管理工具

node_mirror: https://npmmirror.com/mirrors/node/ npm_mirror: https://npmmirror.com/mirrors/npm/ 一、什么是 NVM? NVM 是一个命令行工具,允许你在同一台机器上安装、切换和管理多个 Node.js 版本,解决项目间版本冲突问题。 二、安装 …...

Jmeter逻辑控制器、定时器

目录 一、Jmeter逻辑控制器 ①IF(如果)控制器 作用: 位置: 参数介绍: 步骤: ②循环控制器 作用: 位置: 步骤: 线程组属性VS循环控制器 ③ForEach控制器 作用: 位置&am…...

每日八股文6.2

每日八股-6.2 Go1.GMP调度原理(这部分多去看看golang三关加深理解)2.GC(同样多去看看golang三关加深理解)3.闭包4.go语言函数是一等公民是什么意思5.sync.Mutex和sync.RWMutex6.sync.WaitGroup7.sync.Cond8.sync.Pool9.panic和rec…...

R3GAN利用配置好的Pytorch训练自己的数据集

简介 简介:这篇论文挑战了"GANs难以训练"的广泛观点,通过提出一个更稳定的损失函数和现代化的网络架构,构建了一个简洁而高效的GAN基线模型R3GAN。作者证明了通过合适的理论基础和架构设计,GANs可以稳定训练并达到优异性能。 论文题目:The GAN is dead; long l…...

吴恩达机器学习笔记(1)—引言

目录 一、欢迎 二、机器学习是什么 三、监督学习 四、无监督学习 一、欢迎 机器学习是当前信息技术领域中最令人兴奋的方向之一。在这门课程中,你不仅会学习机器学习的前沿知识,还将亲手实现相关算法,从而深入理解其内部机理。 事实上&…...

信贷风控规则策略累计增益lift测算

在大数据风控业务实践过程中,目前业内主要还是采用规则叠加的办法做策略,但是会遇到一些问题: 1.我们有10条规则,我上了前7条后,后面3条的绝对风险增益是多少? 2.我的规则之间应该做排序吗,最重…...

【笔记】Windows 部署 Suna 开源项目完整流程记录

#工作记录 因篇幅有限,所有涉及处理步骤的详细处理办法请参考文末资料。 Microsoft Windows [Version 10.0.27868.1000] (c) Microsoft Corporation. All rights reserved.(suna-py3.12) F:\PythonProjects\suna>python setup.py --admin███████╗██╗…...

【Elasticsearch】Elasticsearch 核心技术(一):索引

Elasticsearch 核心技术(一):索引 1.索引的定义2.索引的命名规范3.索引的增、删、改、查3.1 创建索引3.1.1 创建空索引 3.2 删除索引3.3 文档操作3.3.1 添加/更新文档(指定ID)3.3.2 添加文档(自动生成ID&am…...

AudioTrack的理解

采样率说的是一秒钟采样多少点 波形频率说的是一个采样周期内有多少个波形 pcm编码说的是 16 还是8 直接决定write的时候使用short还是byte ‌一、初始化配置 ‌参数设定‌ 需定义音频格式、采样率及缓冲区大小,确保符合硬件支持范围 // 音频参数配置 int sample…...

HTTP请求与HTTP响应介绍及其字段

HTTP请求 请求行:请求行主要包含请求方法、请求URI(统一资源标识符)和HTTP协议版本。例如: GET /index.html HTTP/1.1 请求头(Headers):包含客户端的元数据,为服务器提供了额外信息…...

Fullstack 面试复习笔记:操作系统 / 网络 / HTTP / 设计模式梳理

Fullstack 面试复习笔记:操作系统 / 网络 / HTTP / 设计模式梳理 面试周期就是要根据JD调整准备内容(挠头),最近会混合复习针对全栈这块的内容,目前是根据受伤的JD,优先选择一些基础的操作系统、Java、Nod…...

中科院报道铁电液晶:从实验室突破到多场景应用展望

2020年的时候,相信很多关注科技前沿的朋友都注意到,中国科学院一篇报道聚焦一项有望改写显示产业格局的新技术 —— 铁电液晶(FeLC)。这项被业内称为 "下一代显示核心材料" 的研究,究竟取得了哪些实质性进展…...

智慧政务标准规范介绍:构建高效、协同的政务信息体系

在当今信息化快速发展的时代,智慧政务作为政府数字化转型的重要方向,正逐步改变着政府管理和服务的方式。为了确保智慧政务系统的建设能够有序、高效地进行,国家制定了一系列标准规范,其中GB∕T 21062系列标准《政务信息资源交换体…...

6个月Python学习计划 Day 12 - 字符串处理 文件路径操作

第一周 Day 1 - Python 基础入门 & 开发环境搭建 Day 2 - 条件判断、用户输入、格式化输出 Day 3 - 循环语句 range 函数 Day 4 - 列表 & 元组基础 Day 5 - 字典(dict)与集合(set) Day 6 - 综合实战:学生信息…...

CSS篇-3

1. CSS 中哪些样式可以继承?哪些不可以继承? 可继承的样式: 与字体相关的样式,如:font-size、font-family、color 列表样式:list-style(如 UL、OL 的 list-style-type) 不可继承的样式: 与布局和尺寸相关的样式,如:border、padding、margin、width、height 总结: …...

Unity使用Lua框架和C#框架开发游戏的区别

在Unity中使用Lua框架和C#框架开发游戏有显著的区别,主要体现在性能、开发效率、热更新能力、维护成本等方面。 1. 语言类型与设计目标 维度LuaC#类型动态类型、解释型脚本语言静态类型、编译型面向对象语言设计初衷轻量级嵌入、配置和扩展宿主程序通用开发&#…...

Go开发简历优化指南

一、简历格式与排版 (一)简洁至上 去除多余装饰:在 Go 后台开发简历中,应摒弃那些花哨却无实际作用的元素,比如复杂的封面、页眉、页脚等。设想招聘人员每日要处理大量简历,若你的简历有繁杂的封面设计&a…...

手机照片太多了存哪里?

手机相册里塞满了旅行照片、生活碎片,每次清理都舍不得删?NAS——一款超实用的存储方案,让你的回忆安全又有序~ 1️⃣自动备份解放双手 手机 / 电脑 / 相机照片全自动同步到 NAS,再也不用手动传文件 2️⃣远程访问像…...

【论文笔记】SecAlign: Defending Against Prompt Injection with Preference Optimization

论文信息 论文标题:SecAlign: Defending Against Prompt Injection with Preference Optimization - CCS 25 论文作者: Sizhe Chen - UC Berkeley ;Meta, FAIR 论文链接:https://arxiv.org/abs/2410.05451 代码链接:h…...