资讯详情

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

📅 2026/11/3 1:33:10 | 华诺云谱 👁 阅读
【系统架构设计(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操作依据日志重新执行这些事务的操作确保数据完整和一致完成事务的持久化
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑