首页/新闻资讯/正文详情

【系统架构设计(39)】数据库控制技术

发布时间:2026/11/3 1:33:14 来源:云帆数科 栏目:资讯中心
【系统架构设计(39)】数据库控制技术
文章目录一、并发控制1、事务ACID特性2、并发问题丢失更新不可重复读读脏数据3、封锁协议锁类型封锁协议一级封锁协议丢失更新加锁二级封锁协议三级封锁协议解决不可重复读问题死锁处理二、数据库安全性安全措施三、数据库备份与恢复1、冷热备份冷备份热备份2、备份类型完全备份差量备份增量备份日志文件作用3、备份故障与解决故障类型与处理机制对比表UNDO和REDO操作对比表一、并发控制1、事务ACID特性事务的ACID特性是数据库系统可靠性的根本保障这四个特性共同确保了数据操作的完整性和一致性。原子性要求事务中的所有操作要么全部成功执行要么全部失败回滚这就像银行转账操作要么转账成功要么保持原状绝不会出现钱被扣除但对方账户没有增加的情况。一致性确保事务执行前后数据库都处于一致状态即使发生故障也不会破坏数据的完整性约束。隔离性通过控制并发事务之间的相互影响防止一个事务的中间状态被其他事务看到从而避免数据不一致。持久性则保证事务提交后对数据库的修改永久保存即使系统崩溃也不会丢失已提交的数据。这四个特性相互配合构成了数据库事务处理的理论基础。2、并发问题并发执行事务时会产生三种典型的并发问题这些问题会严重影响数据的一致性和可靠性。丢失更新两个事务同时读取同一数据并修改后执行的事务更新会覆盖先执行事务的更新。例如在库存管理系统中两个销售员同时处理同一商品的销售都读取到库存为100件分别扣减5件和8件最终库存可能变成92件而不是87件导致库存数据不准确。不可重复读同一事务内多次读取同一数据时结果不一致。在财务报表生成过程中如果统计程序在计算过程中其他事务修改了相关数据就会导致报表数据前后不一致影响决策的准确性。读脏数据事务读取了其他未提交事务的中间结果。例如在银行系统中如果转账事务在扣款后、入账前发生回滚而其他事务在此期间读取了扣款后的余额就会得到错误的脏数据。3、封锁协议封锁协议通过锁机制控制并发访问是解决并发问题的核心手段不同的封锁协议针对不同的并发问题提供了相应的解决方案。锁类型S锁共享锁读锁多个事务可同时持有用于读取操作X锁排他锁写锁独占锁用于修改操作封锁协议一级封锁协议修改数据前加X锁直到事务结束才释放防止丢失更新二级封锁协议在一级基础上读取数据前加S锁读完后释放防止读脏数据三级封锁协议读取数据前加S锁直到事务结束才释放防止不可重复读两段锁协议事务分为加锁阶段和解锁阶段保证可串行化一级封锁协议丢失更新加锁一级封锁协议通过加写锁排他锁即X锁的方式解决丢失更新问题写锁的特性是同一时刻只能有一个事务持有。事务T1对数据A加写锁获取对数据A的独占修改权此时其他事务不能对A加写锁。T1读取A10进行AA-5的修改并写回然后释放对A的写锁。事务T2尝试对A加写锁时由于A已被T1加写锁所以进入等待状态。当T1释放写锁后T2获取写锁读取A5T1修改后的值进行AA-8的修改并写回最后释放写锁。通过这种加写锁机制避免了两个事务同时修改同一数据导致的丢失更新问题。T2在T1未释放写锁时只能等待保证了T1的修改操作不会被T2覆盖确保数据修改的顺序性和完整性。二级封锁协议一级封锁协议没有解决读脏数据的问题因为T2没有加写锁二级封锁协议在此基础上增加了读锁机制。一级封锁协议规定事务在修改数据前必须先对其加X锁直到事务结束才释放但此协议仅针对数据修改操作要求加锁对于单纯的读操作并没有要求加锁。当事务A对数据加X锁进行修改时事务B若只是读取数据按照协议不需要加锁就能读取。若事务A修改数据后未提交便回滚而事务B在此期间读取了事务A修改后的数据那么事务B就读到了脏数据。二级封锁协议在此基础上增加了事务在读取数据前先加S锁共享锁读完后释放的要求能防止读脏数据。因为当事务A对数据加X锁时事务B无法加S锁进行读取需等待事务A释放X锁从而避免了读脏数据问题。三级封锁协议解决不可重复读问题一级、二级封锁协议没能解决不可重复读问题三级封锁协议通过延长S锁的持有时间来解决这个问题。一级封锁协议只针对数据修改操作要求加锁对于单纯的读操作不需要加锁。在事务T1读取数据后事务T2可以在T1再次读取之前对数据进行修改并提交导致T1两次读取结果不一致出现不可重复读问题。二级封锁协议虽然加S锁可防止读脏数据但读完即释放S锁无法阻止其他事务在该事务两次读取间隙对数据进行修改。当事务T1第一次读取数据加S锁读完释放后事务T2可以加X锁修改数据T1再次读取时数据已变不能保证可重复读。三级封锁协议要求事务在读取数据前加S锁且直到事务结束才释放。这使得在事务执行期间数据一直被锁定其他事务不能修改保证多次读取结果一致。例如在统计报表数据读取过程中能保证多次读取数据相同避免其他事务中途修改数据影响统计结果。死锁处理预防有序封锁、一次封锁解除检测死锁后选择事务回滚二、数据库安全性数据库安全性是一个多层次的安全防护体系从用户身份验证到操作审计每个环节都至关重要。安全措施用户标识和鉴定验证用户身份防止非法访问存取控制根据用户角色授予不同权限控制数据访问密码保护加密存储和传输密码视图保护通过视图限制数据访问范围审计记录所有操作便于事后监督用户标识和鉴定是安全防护的第一道防线通过验证用户身份来决定是否允许其进入系统。现代数据库系统通常采用用户名-密码组合验证有些系统还引入了随机数检验、生物识别等更高级的验证方式大大提高了系统的安全性。存取控制机制根据用户的角色和身份授予不同的操作权限。这种基于角色的访问控制RBAC不仅能够精细控制用户对数据库的操作还能简化权限管理。例如财务人员只能访问财务相关的表而系统管理员则拥有更广泛的权限。三、数据库备份与恢复1、冷热备份冷备份和热备份各有优劣需要根据业务需求选择合适的备份方式。冷备份在数据库正常关闭、停止运行的状态下将数据库的相关文件全部复制备份。优点是备份速度快归档方便恢复相对容易缺点是只能恢复到备份完成的时间点备份过程中数据库不能进行其他操作影响业务连续性。热备份在数据库正常运行、持续提供服务的状态下对数据库中的数据文件进行备份。优点是备份时数据库仍可被正常使用不影响业务恢复速度快缺点是对备份操作的准确性要求极高维护难度大。2、备份类型完全备份、差量备份和增量备份各有特点合理的组合使用能够平衡备份效率和恢复复杂度。完全备份对数据库中的所有数据进行完整拷贝涵盖全部表、视图、存储过程等对象。优点是恢复时简单直接只需还原备份文件即可缺点是备份时间长、占用存储空间大。差量备份以最近一次完全备份为基准仅备份自那次全备后发生变化的数据。优点是备份数据量相对全备小备份时间短缺点是恢复时需要先恢复最近全备再加上最后一次差量备份过程相对复杂。增量备份备份自上一次备份之后变化的数据。优点是每次备份数据量小节省时间和空间缺点是恢复时较繁琐需按顺序依次恢复全备及后续所有增量备份。日志文件作用事务日志记录数据库的所有改变操作在恢复数据时可依据日志文件按操作顺序重演或回滚事务能将数据库恢复到特定时间点状态。3、备份故障与解决不同类型的故障需要不同的恢复策略UNDO和REDO操作是故障恢复的核心机制。故障类型与处理机制对比表故障类型故障原因处理方法与机制恢复目标事务本身的可预期故障由事务自身逻辑问题导致在程序中预先设置Rollback语句当检测到故障触发条件时事务自动回滚撤销已执行的操作回到事务开始前状态事务本身的不可预期故障因算术溢出、违反存储保护等意外情况引发由数据库管理系统的恢复子系统借助日志文件处理撤销事务对数据库的修改撤销已做修改保证数据一致性系统故障系统层面出现问题常采用检查点法数据库系统定期设置检查点记录数据库状态系统重启时自动依据检查点信息对未完成事务进行撤销UNDO对已提交但未完全写入磁盘的事务进行重做REDO恢复数据库到一致状态介质故障外存物理损坏利用日志文件重做业务先恢复备份数据再依据日志中记录的操作对已提交事务进行重做将数据库恢复到故障发生前的状态UNDO和REDO操作对比表操作类型适用场景操作原理与机制恢复效果撤销事务(UNDO)针对故障发生时未完成的事务将这类事务放入Undo操作依据日志反向执行操作撤销已做修改回到事务开始前状态重做事务(REDO)对于故障发生前已提交的事务通过Redo操作依据日志重新执行这些事务的操作确保数据完整和一致完成事务的持久化

相关推荐

【软件架构设计(40)】数据库规范化与性能优化
【软件架构设计(40)】数据库规范化与性能优化

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:33:14

深入理解JoyAI-Image-Edit-ComfyUI架构:Transformer3D与Qwen3VL的完美结合
深入理解JoyAI-Image-Edit-ComfyUI架构:Transformer3D与Qwen3VL的完美结合

深入理解JoyAI-Image-Edit-ComfyUI架构:Transformer3D与Qwen3VL的完美结合 JoyAI-Image-Edit-ComfyUI是京东开源的AI图像编辑解决方案,专为ComfyUI设计,通过Transformer3D与Qwen3VL的深度融合,实现高效精准的图像编辑能力。本文将… · 2026/11/3 1:33:14

(最新)基于Springboot防盗门进销存管理系统【附源码+文档】
(最新)基于Springboot防盗门进销存管理系统【附源码+文档】

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:33:14

从0开始学架构-结束语:坚持,成就你的技术梦想
从0开始学架构-结束语:坚持,成就你的技术梦想

“从0开始学架构”专栏历经4个月的时间,现在到了跟你说再见的时候了。一路走来,非常感谢你的坚持。看到专栏的内容能够帮助你理解架构设计这个看起来高大上的技术,我非常欣慰,也算完成了自己3年前的一个心愿:帮助更多同学更快更好地掌握架构设计的技术。 专栏的结束意味着… · 2026/11/3 2:48:27

语音识别别被准确率骗了,4 个维度才是选型核心
语音识别别被准确率骗了,4 个维度才是选型核心

一场两小时的跨国视频会结束,录音丢进转写工具,人名、型号错了一片,校对又花掉一晚上。很多团队把这归咎于"软件不行",其实更常见的原因是:挑语音识别工具时,只问了一句"准不准"&#… · 2026/11/3 2:48:27

8000Hz 全协议采样与 6-DoF IMU:BOTA MimX Gen A 六维力传感器为 Physical AI 提供实时触觉数据流
8000Hz 全协议采样与 6-DoF IMU:BOTA MimX Gen A 六维力传感器为 Physical AI 提供实时触觉数据流

瑞士 Bota Systems AG(BOTA)2026 年 10 月发布 MimX Gen A(5821mm、约 85g)与 PhisX Gen A(7021mm、约 140g):全协议 8000Hz 采样、内置 6-DoF IMU、低漂移低噪声,面向 Physical AI … · 2026/11/3 2:48:27

GPT 改完配置别直接覆盖:用 git diff 审查两份文件
GPT 改完配置别直接覆盖:用 git diff 审查两份文件

GPT 改完配置别直接覆盖:用 git diff 审查两份文件 拿到一份“已经优化”的配置,最容易漏掉的不是文件能否打开,而是它顺便改了什么。比如需求只要求把超时从5秒调到10秒,新文件却同时把TLS证书校验关掉。即使JSON合法&#xff0c… · 2026/11/3 2:48:27

越聊越不耐烦,AI回答了你也听不懂:你有把这些信息给到AI吗?
越聊越不耐烦,AI回答了你也听不懂:你有把这些信息给到AI吗?

用AI久了,我发现AI其实是一个稳定的巴别塔切割机。 巴别塔这个词来自圣经故事。人类最早据说只说一种语言,齐心协力要造一座塔直通天上。上帝觉得不行,就让他们突然说不同的语言,互相听不懂,造塔的事也就黄了。“巴别”… · 2026/11/3 2:48:27

仓库越大越乱?一家郑州五金批发商的“仓库翻身仗“
仓库越大越乱?一家郑州五金批发商的“仓库翻身仗“

一、凌晨一点,老板还在仓库里找一颗螺丝郑州某五金行业的老板,曾经有个外号叫"仓库里的夜猫子"。仓库两千平,货架一排接一排,五金工具、机电配件、紧固件加起来三万多个品项。客户一个电话要某个型号的轴承,… · 2026/11/3 2:47:27

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 4:42:45

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 5:17:18

STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战
STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题
ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践
基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 4:42:45

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 5:17:18

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码