概述

数据库管理(Database Management)是指为保证数据库系统的正常运行和服务质量必须进行的系统管理工作。

数据库管理目标

1.保障数据库系统正常稳定运行
2.充分发挥数据库系统的软硬件处理能力
3.确保数据库系统安全和用户数据隐私性
4.有效管理数据库用户及其角色权限
5.解决数据库系统性能优化、系统故障与数据损坏等问题
6.最大程度地发挥数据库对其所属机构的作用

数据库管理内容

1.DBMS系统运行管理
2.数据库性能监控
3.数据库索引管理
4.数据库查询优化
5.数据库事务并发控制
6.数据库角色管理
7.数据库用户管理
8.数据库对象权限管理
9.数据安全管理
10.数据库备份和恢复

数据库DBMS功能结构

图片损坏

数据库DBMS系统结构

图片损坏

事务管理

在数据库应用系统中,完成一个业务处理通常需要多个操作步骤才能完成处理。在每个操作步骤中,都可能遭遇失败,若没有一个处理机制,就可能造成操作数据混乱,从而破坏数据一致性。

事务

在数据库中,事务(Transaction)是指由构成单个业务处理单元的一组数据库访问操作,要求它们要么都成功执行,要么都不执行。

事务状态

图片损坏

事务特性(ACID)

原子性(Atomicity):事务所有操作在数据库中要么全部执行,要么全部不执行。
一致性(Consistency):事务多次执行,其结果应一致。
隔离性(Isolation):事务与事务之间隔离,并发执行透明。
持续性(Durability ):事务完成后,数据改变必须是永久的。

事务并发执行

事务并发执行是指多个事务程序在数据库系统中同一时段运行。
事务并发执行原因:
1.改善系统的资源利用率
2.减少事务运行的平均等待时间

事务SQL程序

图片损坏

基本框架

图片损坏

默认事务处理方式

若用户没有显式地定义事务时,DBMS按默认事务方式处理,即每执行一个SQL语句将自动构成一个事务。若将多条SQL语句定义为一个事务时,才使用专门的事务SQL语句显式地定义事务。

并发控制

并发控制目的:
支持并发事务处理,使更多用户并行操作,提高系统的并发访问能力。
保证一个事务工作不会对另一个事务工作产生不合理的影响。
需解决的问题:
1.丢失更新数据
T1、T2两个事务并发执行,它们均对数据库共享数据A进行了非锁定资源的读写操作。
当事务T1和T2均读入该共享数据A并修改,T2提交的结果破坏了T1提交的结果,导致T1的修改被丢失。
2.不可重复读取
事务T1读取某一数据后,事务T2对其做了修改(插入,删除),当事务T1再次读该数据时,得到与前一次不同的值。
3.脏数据读取
脏数据读取是指一个事务读取了被取消持久化(被恢复)的共享数据。

事务调度

并发事务调度就是控制多个事务的数据操作语句按照恰当的顺序访问共享数据,使这些事务执行之后,避免造成数据的不一致性,即解决“丢失更新数据”、“不可重复读”、“脏数据读”等问题。

原理

在DBMS中,事务管理器将并发执行事务的SQL数据操作请求提交给并发控制调度器。由并发控制调度器将各个事务的SQL数据操作请求按照一定顺序进行调度执行,并完成对数据库缓冲区的读写操作。

策略

按一定顺序串行
在事务并发执行中,只有当事务中数据操作调度顺序的执行结果与事务串行执行结果一样时,该并发事务调度才能保证数据操作的正确性和一致性。符合这样效果的调度称为可串行化调度。

锁机制

为了解决多个事务并发对共享数据进行新增、更新、删除、查询带来的数据不一致性问题时,需要对共享数据进行加锁访问。
1.资源锁定访问
在DBMS中,通过加入锁表机制,来实现共享数据锁定访问,其加锁方式包含如下类型。
排它锁定(Lock-X)——锁定后,不允许其它事务对共享数据再加锁
共享锁定(Lock-S)——锁定后,只允许其它事务对共享数据添加读取锁
2.资源锁定粒度
数据库——粒度最大
表——粒度较大
页面——粒度中等
行——粒度小
3.资源锁定实施方式
隐式锁定-DBMS缺省执行
显式锁定-加锁命令显式执行

控制协议

为了实现并发事务对共享数据访问的串行化调度执行,还必须约束它们对共享数据的操作访问必须是以互斥方式进行。这就需要用到基于数据库锁机制的并发控制协议。

锁操作的相容性

图片损坏

加锁协议

一级加锁协议:任何事务在修改共享数据对象之前,必须对该数据执行排它锁定指令,直到该事务处理完成,才进行解锁指令执行。可避免出现更新丢失问题
二级加锁协议:在一级加锁协议基础上,针对并发事务的共享数据读操作,必须对该数据执行共享锁定指令,读完数据后即刻释放共享锁定。该加锁协议不但可以防止“丢失更新”的数据不一致性问题,还可防止出现脏读数据问题
三级加锁协议:在一级加锁协议基础上,针对并发事务对共享数据进行读操作,必须对该数据执行共享锁定指令,直到该事务处理结束才释放共享锁定。该加锁协议不但可以防止“丢失更新”、“脏读”的数据不一致性问题,还可防止出现“不可重复读取”的数据一致性问题。
图片损坏

二阶段锁定协议

一个给定的并发事务调度,当且仅当它是可串行化时,才能保证正确调度。
保证可串行化的一个协议是:二阶段锁定协议
二阶段锁定协议规定每个事务必须分两个阶段提出加锁和解锁申请:
增长阶段,事务只能获得锁,但不能释放锁。
缩减阶段,事务只能释放锁,但不能获得新锁。

死锁

在基于锁机制的并发事务执行中,如果这些事务同时锁定两个以及以上资源时,可能会出现彼此都不能继续执行的状态,即事务死锁状态

死锁出现的必要条件

互斥条件
请求和保持条件
不剥夺条件
环路等待条件

防范死锁的策略

允许用户一次发出当前所需全部资源的锁定,使用完成后,再释放给其它用户访问。
规定所有应用程序锁定资源的顺序必须完全相同。

解决死锁的方法

当发生死锁时,回滚其中的一个事务,并取消它对数据库所做的改动

安全管理

存取安全模型

身份验证:从应用系统层面确认登录用户是否是合法使用者
权限控制:从DBMS系统层面通过存取权限机制控制用户对数据的访问
系统防护:从操作系统层面提供的安全机制防范非法系统访问
加密存储:从数据存储层面通过加密算法对数据库中数据进行加密存储

用户、角色、权限管理

用户管理

用户要访问数据库,必须先在DBMS中创建其账号,并成为数据库的用户。此后,用户每次访问数据库,都需要在DBMS进行身份验证,只有合法用户才能进入系统,访问操作数据库对象。
在数据库安全管理中,DBMS需要对每个用户进行管理,如用户创建、用户修改、用户删除管理等。
图片损坏
图片损坏
图片损坏

权限管理

数据库权限管理是指DBA管理员或数据库对象拥有者对其所拥有对象进行权限控制设置。
权限管理基本操作:授予权限、收回权限、拒绝权限
权限类别:数据库系统权限、数据库对象访问操作权限、数据库对象定义操作权限
图片损坏

角色管理

在DBMS中,为了方便对众多用户及其权限进行管理,通常将一组具有相同权限的用户定义为角色(Role)。
角色管理内容:创建角色、修改角色、删除角色
图片损坏

数据库备份与恢复

数据库备份——是指将数据库当前数据和状态进行副本复制,以便当数据库受到破坏或丢失数据时可以进行修复。
数据库恢复——是指数据库中数据丢失或被破坏时,从备份副本将数据库从错误状态恢复到某一正确状态。
备份内容——包括数据文件、日志文件等。
备份角色——可以是服务器管理员(sysadmin)、数据库所有者(db_owner)、数据库备份员(db_backupoperator)角色之一。

备份方法

图片损坏 1.通过备份文件进行恢复 2.利用事务日志按前滚或回滚方式进行数据库恢复