数据库 难题集
- 关系代数中专门的关系运算包括**:选择、投影、连接和 除**
- 转储可分为静态转储和动态转储,转储方式可以有 海量转储和增量转储。
- SQL 标准使用了一系列概念来描述完整性,包括关系模型的实体完整性,参照完整性和用户定义完整性。
- 在 SQL 中,DDL 的中文含义是数据定义语言
- 使用宿主语言和DML编写应用程序的人员是应用程序员
- 数据库系统中死锁一般用超时法和等待图法方法来进行诊断。
- 并发操作带来的问题主要有不可重复读,丢失修改,读脏数据。
- 查询优化是指选择一个高效执行的查询处理策略。查询优化按照优化的层次一般可分为代数优化和物理优化
- 数据库系统的物理数据独立性是指内模式改变,外模式和应用程序不变
- 在数据库需求分析阶段,数据字典是对系统中数据的描述
- .X→Ai(i=1,2,…,k)成立,是X→A1A2…Ak成立的充要条件
- 关系代数表达式σ3<′4′(S)表示表示从S关系中挑选第3个分量值小于第4个分量的元组
- 数据库系统的运行的过程中,忽然间断电了,这种情况属于什么类型的数据库故障,写出这类故障的数据库恢复过程。
系统断电属于系统故障(1 分)
。系统重新启动后的恢复步骤是:
(1)正向扫描日志文件,找出在故障发生前已经提交的事务队列(REDO 队列)和未完成的事务队列(UNDO队列)。
(2)对撤销队列中的各个事务进行 UNDO 处理。进行 UNDO 处理的方法是,反向
扫描日志文件,对每个 UNDO 事务的更新操作执行逆操作,即将日志记录中“更新前的
值”写入数据库。
(3)对重做队列中的各个事务进行 REDO 处理。进行 REDO 处理的方法是:正向扫描日志文件,对每个 REDO 事务重新执行日志文件登记的操作。即将日志记录中“更新后的值”写入数据库。
-
正向扫描日志文件,找出故障发生前已提交的事务队列(REDO队列)和未完成的事务队列(UNDO队列)
-
对撤销队列中的各个事务进行UNDO处理
》进行UNDO处理的方法:反向扫描日志文件,对每一个UNDO事务的更新操作执行逆操作,即将日志记录中“更新前的值”写入数据库
-
对重做队列中的各个事务进行REDO处理
》进行REDO处理的方法是:正向扫描日志文件,对每个 REDO 事务重新执行日志文件登记的操作。即将日志记录中“更新后的值”写入数据库
-
事务是恢复和并发控制的基本单位。
事务的特性(ACID特性)
A:原子性(Atomicity)
事务是数据库的逻辑工作单位,事务中包括的诸操作要么全做,要么全不做。
B:一致性(Consistency)
**事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。**一致性与原子性是密切相关的。
C:隔离性(Isolation)
一个事务的执行不能被其他事务干扰。
D:持续性/永久性(Durability)
一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。
-
简述数据库系统中活锁和死锁的含义。避免活锁的简单方法是什么?
在数据库中,产生死锁的原因是两个或多个事务都已封锁了一些数据对象,然后又都请求已被其他事务封锁的数据加锁,从而出现死等待。
活锁产生的原因:当一系列封锁不能按照其先后顺序执行时,就可能导致一些事务无限期等待某个封锁,从而导致活锁。
避免活锁的简单方法是采用先来先服务的策略。当多个事务请求封锁同一数据对象时,封锁子系统按请求封锁的先后次序对事务排队,数据对象上的锁一旦释放就批准申请队列中第一个事务获得锁。