数据库管理系统是数据库系统的核心 数据库系统是在文件系统的基础上发展而来的 数据库最大的特点是“数据的三级抽象和二级独立” 数据库是存储在计算机内有结构的数据集合 数据库应用系统包括数据库和数据库应用程序 关系数据库系统: 是支持关系模型的数据库系统 数据模型的三要素是: 数据结构、数据操作和数据完整性 关系模型的组成
1. 关系数据结构 2. 关系操作集合 3. 关系完整性约束 关系模型中常用的关系操作: 选择、投影、并、差、笛卡尔积是5种基本操作 关系操作的特点: 集合操作方式,即操作的对象和结果都是集合 关系代数 是一种抽象的查询语言 用对关系的运算来表达查询 关系代数运算的三个要素 运算对象:关系 运算结果:关系 运算符:四类关系代数运算符 关系运算的分类:分为传统的集合运算和专门的关系运算 SQL的功能特点 数据查询 数据定义(DDL) 数据操纵(DML) 数据控制(DCL) 约束条件类型 PRIMARY KEY(主键约束) UNIQUE(惟一约束) NOT NULL(非空约束) FOREIGN KEY(外键约束) CHECK(检查约束) 建立索引的目的:基本表上建立一个或多个索引,以提供多种存取路径,加快查找速度。 数据库异常问题 1. 冗余太大 2. 插入异常 3. 删除异常 4. 修改异常 数据依赖:是一个关系内部属性与属性之间的一种约束关系,是语义的体现。分为函数依赖和多值依赖。 泛关系模式:就是最初设计的关系模式,或者说是存在异常问题的关系模式。 数据库模式:根据范式理论,将不符合用户需求的泛关系模式分解成一系列的关系集合。 若R∈1NF,且R中的每一个非主属性都完全函数依赖于R的任一候选码,则R∈2NF。 如果关系模式R∈BCNF,必定有R∈3NF 如果R∈3NF,且R只有一个候选码,则R必属于BCNF。 任何的二元关系必定是BCNF 查询优化:从查询的多个执行策略中进行合理选择的过程。 查询优化的分类:代数优化和物理优化 数据保护也叫数据控制,主要包括: 数据库恢复 并发控制 数据的安全性 数据的完整性 事务(Transaction) 是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。 事务可以是一组SQL语句、一条SQL语句或整个程序,在通常情况下,一个应用程序里包含多个事务。 事务生成: 用户显式地定义事务 由DBMS按缺省自动划分事务 事务的特性 1.原子性(Atomicity) 一个事务中对数据库的操作,是一个不可分割的整体。 2.一致性(Consistency) 数据不会因事务的执行而遭受破坏。 3.隔离性(Isolation) 在多个事务并发执行时,系统应保证与这些事务先后单独执行时的结果一样。 4.持久性(Durability) 一个事务一旦完成全部操作,它对数据库的所有更新应永久地反映在数据库中。 事务是数据库恢复和并发控制的基本单位 数据库故障恢复的基本单位是事务,因此在数据恢复时主要使用事务撤销(UNDO)与事务重做(REDO)两个操作。 1. 事务级故障 事务内部执行所产生的逻辑错误与系统错误,它由诸如数据输入错误、数据溢出、资源不足以及死锁等引起,使得事务尚未运行到终点即告夭折 。 2. 系统级故障 指造成系统停止运转的任何事件,使得系统要重新启动,通常称为软故障。 3. 介质级故障 也称为硬故障(Hard Crash),如磁盘损坏、磁头碰撞、瞬时强磁场干扰等。这类故障将破坏数据库或部分数据库。 数据转储的概念 转储即DBA定期地将整个数据库复制到磁带或另一个磁盘上保存起来的过程。这些备用的数据文本称为后备副本(backup)或后援副本。 (1)静态转储:是在系统中无运行事务时进行的转储操作。静态转储得到的一定是一个数据一致性的副本。 (2)动态转储:是指转储期间允许对数据库进行存取或修改。即转储和用户事务可以并发执行。 3、海量转储和增量转储 (1)海量转储:每次转储全部数据库。 (2)增量转储:每次只转储上一次转储后更新过的数据 日志文件(log file)—用来记录事务对数据库的更新操作的文件。 日志文件的作用 进行事务故障、系统故障恢复,并协助后备副本进行介质故障恢复。 系统故障的恢复: 恢复操作: 要撤销故障发生时未完成的事务(撤销队列进行UNDO) 重做已完成的事务(重做队列进行REDO) 介质故障的恢复需要DBA介入。 动态维护日志文件的方法是周期性地执行: 建立检查点,保存数据库状态 具体步骤: ①将当前所有日志记录写入磁盘日志文件上; ②在日志文件中写入一个检查点记录; ③将当前所有数据记录写入磁盘的数据库中; ④把检查点记录在日志文件中的地址写入一个重新开始文件。 在数据库系统中,为了提高性能,多个事务并发执行是必要的。 提高CPU和硬盘的使用效率,从而增加事务的吞吐率。 减少事务的平均响应时间(即等待CPU的时间),短时间事务无需等待长时间事务。 并发操作—在多用户共享系统中,多个用户同时存取同一数据的情形称为并发操作。 并发操作可能带来的问题: (1)破坏数据库的一致性 (2)破坏事务的隔离性 并发控制的主要技术有封锁(Locking)、时间戳(Timestamp)和乐观控制法,商用的DBMS一般都采用封锁方法。 封锁:指事务T在对某个数据对象操作之前,对其加锁。在T未释放锁之前,其他的事务不能更新此数据对象。 封锁协议:对数据对象加锁时,约定的规则。 常用的封锁协议:三级封锁协议 活锁:使某个事务永远处于等待状态,而得不到执行的现象称为活锁。(实际上是有可能被激活的) 避免活锁的方法:先来先服务( FCFS) 死锁:若干个事务都处于等待状态,相互等待对方解除封锁, 而造成这些事务都无法运行,均处于对锁的循环等待。 调度:事务的执行次序。 调度方式: (1)串行调度:多个事务依次执行的调度。 (2)并行调度:利用分时的方法处理多个事务的调度。 串行调度是正确的; 可串行化调度 :如果一个并发调度执行的结果等价于某一个串行调度的结果,称这种调度策略为可串行化的调度。 一组事务并发调度的正确性准则:可串行化调度。 冲突操作是指不同的事务对同一个数据的读写操作和写写操作 一个调度是冲突可串行化,一定是可串行化的调度。 保证并发调度的可串行性的方法有三种 封锁方法:两段锁协议(目前DBMS普遍采用的) 时标方法 乐观方法 所谓两段锁协议(Two-Phase Locking,简称2PL)是指所有事务必须分两个阶段对数据项提出加锁和解锁申请 封锁粒度:封锁对象的大小。 封锁对象:属性、元组、关系、数据库 封锁粒度与系统的并发度和并发控制的开销密切相关: 封锁的粒度越大,并发度越小,系统开销越小; 封锁的粒度越小,并发度越高,系统开销越大。 多粒度封锁:一个系统中同时支持多种封锁粒度供不同的事务选择的封锁方法。 封锁粒度选择原则: (1)需处理大量元组的事务以关系为封锁粒度; (2)需处理多个关系的大量元组的事务以数据库为封锁粒度; (3)只处理少量元组的事务以元组为封锁粒度。 多粒度封锁方式:显式封锁和隐式封锁 显式封锁是应事务的要求直接加到数据对象上的封锁; 隐式封锁是该数据对象没有独立加锁,是由于其上级结点加锁而使该数据对象加上了锁 意向锁加锁原则:如果对一个结点加意向锁,则说明该结点的下层结点正在被加锁;对任一结点加锁时,必须先对它的上层结点加意向锁。 锁的强度是指它对其他锁的排斥程度 具有意向锁的多粒度封锁方法的调用步骤 任意事务T要对一个数据对象加锁,必须先对它的上层结点加意向锁 申请封锁时应该按自上而下的次序进行 释放封锁时则应该按自下而上的次序进行 恢复的实现技术 1.数据转储 2.日志文件----具有检查点的恢复技术 3.数据库镜像--远程备份 恢复策略 1.事务故障的恢复 2.系统故障的恢复 3.介质故障的恢复(计算机病毒) 并发控制 并发控制可能产生的数据不一致 封锁的类型(X锁和S锁)及三级封锁协议 并发调度的可串行性 两段锁协议(获得封锁及释放封锁) 封锁粒度 (多粒度封锁、意向锁) 在数据库设计中,表示用户业务流程的常用方法是DFD 授权定义经过编译后存储在数据字典中 事务工作完成的标志是事物的“提交标志”已经安全的存入相关的日志文件 数据库系统中的死锁属于事务故障 DBA的职责是什么?