软考高级系统架构设计师备考(十八):数据库系统—事务管理与并发控制

软考高级系统架构设计师备考(十八):数据库系统---事务管理与并发控制

核心考点包括:

  • 事务管理与ACID特性

  • 事务隔离级别

  • 并发控制机制

  • 数据库安全性

  • 数据库备份策略

  • 数据库故障与恢复

本文将系统讲解这些知识点,并配合典型例题帮助理解。


一、事务管理

1 事务的定义

事务是数据库中一组逻辑操作的集合,这些操作要么全部成功,要么全部失败。


2 ACID特性

1)原子性(Atomicity)

事务不可分割,要么全部执行,要么全部回滚。


2)一致性(Consistency)

事务执行前后数据库必须满足约束条件。


3)隔离性(Isolation)

多个事务之间互不干扰。


4)持久性(Durability)

事务提交后结果永久保存。


例题

以下属于事务特性的是:

A. 可恢复性 B. 原子性 C. 并发性 D. 高可用

答案:B


二、事务状态

事务执行过程中的状态:

  1. 活动(Active)

  2. 部分提交(Partially Committed)

  3. 提交(Committed)

  4. 失败(Failed)

  5. 终止(Terminated)


状态转换

复制代码
开始 → 活动 → 提交 → 终止  
         ↓  
        失败 → 回滚 → 终止  

三、事务隔离级别

事务隔离级别用于控制并发事务之间的影响。


1 四种隔离级别

隔离级别 脏读 不可重复读 幻读
读未提交(Read Uncommitted) 可能 可能 可能
读已提交(Read Committed) 不允许 可能 可能
可重复读(Repeatable Read) 不允许 不允许 可能
串行化(Serializable) 不允许 不允许 不允许

2 三种并发问题

1)脏读

读取未提交数据


2)不可重复读

同一数据多次读取结果不同


3)幻读

查询结果条数变化


例题

在"读已提交"隔离级别下,可能发生:

A. 脏读 B. 不可重复读 C. 不会发生任何问题 D. 丢失更新

答案:B


四、并发控制

1 并发问题总结

问题 描述
丢失更新 更新被覆盖
脏读 读未提交数据
不可重复读 数据变化
幻读 记录数变化

2 封锁机制

锁的类型
  • 共享锁(S锁)------读锁

  • 排他锁(X锁)------写锁


锁兼容性
S锁 X锁
S锁
X锁

3 两段锁协议(2PL)

规则:

复制代码
加锁阶段:只能加锁  
解锁阶段:只能解锁  

作用:

保证调度的可串行性


例题

两段锁协议的主要作用是:

A. 提高并发性 B. 保证一致性 C. 保证可串行化 D. 防止死锁

答案:C


五、数据库安全性

1 安全目标

  • 保密性

  • 完整性

  • 可用性


2 安全控制方法

1)身份认证

用户登录验证


2)权限控制
复制代码
GRANT SELECT ON 表 TO 用户;
REVOKE SELECT ON 表 FROM 用户;

3)视图控制

限制用户访问部分数据


4)数据加密

防止数据泄露


例题

以下属于数据库安全机制的是:

A. 日志恢复 B. 权限控制 C. 索引优化 D. 查询优化

答案:B


六、数据库备份

1 备份的目的

保证数据安全,支持恢复。


2 常见备份方式

1)完全备份

备份全部数据


2)增量备份

备份变化部分


3)差量备份

备份自上次完全备份后的变化


对比

类型 恢复速度 存储成本
完全备份
增量备份
差量备份

例题

恢复最复杂的是:

A. 完全备份 B. 增量备份 C. 差量备份 D. 日志备份

答案:B


七、数据库故障

1 故障类型

1)事务故障

程序错误、用户中断


2)系统故障

断电、系统崩溃


3)介质故障

磁盘损坏


八、数据库恢复

1 日志机制

数据库通过日志记录操作:

复制代码
Write-Ahead Logging(先写日志)  

2 Undo / Redo

Undo

撤销未完成事务


Redo

重做已提交事务


恢复原则

复制代码
已提交 → Redo  
未提交 → Undo  

例题

系统崩溃后:

T1 已提交 T2 未提交

恢复策略是:

A. T1 Undo,T2 Redo B. T1 Redo,T2 Undo C. 全部Redo D. 全部Undo

答案:B


九、检查点

作用:

  • 减少恢复时间

  • 限制日志扫描范围


十、综合例题

例题

事务执行如下:

复制代码
T1: 写A(未提交)  
T2: 读取A  

问:

出现的问题是?


分析

T2读取了T1未提交数据


答案

复制代码
脏读  

十一、软考高频考点总结

事务管理:

  • ACID特性

  • 事务状态

事务隔离级别:

  • 四级隔离

  • 三大并发问题

并发控制:

  • 锁机制

  • 两段锁协议

安全性:

  • GRANT / REVOKE

  • 视图

备份:

  • 完全 / 增量 / 差量

恢复:

  • Undo / Redo

  • 检查点


十二、总结

数据库运行机制是软考高级系统架构设计师考试中的重点内容。

本文重点讲解了:

  • 事务管理与ACID

  • 事务隔离级别

  • 并发控制机制

  • 数据库安全性

  • 数据备份策略

  • 故障与恢复机制

相关推荐
数智化精益手记局2 小时前
8d报告案例分析:拆解8d报告案例分析的8个步骤,解决生产现场重复发生的质量难题
大数据·数据结构·数据库·人工智能·精益工程
qq_189807032 小时前
C#怎么操作数据库存储过程 C#如何调用SQL Server存储过程传参并获取返回结果【数据库】
jvm·数据库·python
m0_746752302 小时前
HTML5视频标签针对不同设备DPR的资源选择逻辑
jvm·数据库·python
2301_773553622 小时前
c++怎么在Linux下获取文件被最后一次访问的精确纳秒时间【进阶】
jvm·数据库·python
是宇写的啊2 小时前
MyBatis-3
数据库
gmaajt2 小时前
CSS如何给按钮添加按下缩小的动画_利用-active配合transform
jvm·数据库·python
m0_747854522 小时前
CSS如何让响应式图片在容器内居中_利用background-position
jvm·数据库·python
笨鸟先飞的橘猫2 小时前
Mysql——MVCC学习
数据库·学习·mysql
2401_871696522 小时前
CSS如何优化移动端CSS选择器性能_遵循BEM规范避免过长嵌套
jvm·数据库·python