数据库第五章--数据库管理
数据库第五章--数据库管理
- 数据库管理概述
- 事务管理
- Why Need it?
- 每个业务处理通常需要多个操作步骤,当步骤出现失败就会造成数据混乱
- 事务概念
- 事务:由构成单个业务处理单元的一组数据库访问操作,要求它们要么都成功执行,要么都不执行
- 事务状态
- 事务初始状态
- 事务失败状态
- 事务正常状态
- 事务提交状态
- 事务回滚状态
- 事务特性(划重点)ACID
- 原子性Atomicity:事务的所有操作要么全部执行,要么全部不执行
- 一致性Consistency:事务多次执行,结果一致
- 隔离性Isolation:事务与事务之间隔离,并发执行透明
- 持续性Durability:事务完成后,数据改变是永久的
- 事务并发执行:多个事务程序在数据库系统中同一时段运行
- 事务SQL语句
- 事务开始语句:BEGIN、START TRANSACTION
- 事务回滚语句:ROLLBACK
- 事务提交语句:COMMIT
- 事务保存点语句:SAVEPOINT
- DBMS默认事务方式:每执行一个SQL语句将自动构成一个事务
- Why Need it?
- 并发控制
- 事务调度
- 并发控制需解决的问题
- 丢失更新数据
- 脏数据读取:一个事务读取了被取消持久化的共享数据
- 不可重复读取:一个事务对一个共享数据重复多次读取,但前后读取的数据不一致
- 并发事务调度原理与策略
- 事务调度原理:在DBMS中,事务管理器将并发执行事务的SQL数据操作请求提交给并发控制调度器。由并发控制调度器将各个事务的SQL数据操作请求按照一定顺序进行调度执行,并完成对数据库缓冲区的读写操作
- 事务调度策略:使并发事务调度实现的处理结果与串行化调度处理结果一致
- 并发控制需解决的问题
- 数据库锁机制
- 资源锁定方式
- 排它锁:写锁
- 共享锁:读锁
- 资源锁定粒度
- 行→页面→表→数据库(粒度逐渐增大)
- 资源锁定方式
- 基于锁机制的并发控制协议
- 锁操作的相容性
- 有了排它锁,就不能加其它锁
- 有了共享锁,还只能加共享锁
- 加锁协议
- 一级加锁协议:任何事务在修改共享数据对象之前,必须对该数据执行排它锁定指令,直到该事务处理完成,才进行解锁指令执行(解决丢失更新数据)
- 二级加锁协议:在一级加锁协议基础上,针对并发事务的共享数据读操作,必须对该数据执行共享锁定指令,读完数据后即刻释放共享锁定(解决丢失更新数据、脏数据读取)
- 三级加锁协议:在一级加锁协议基础上,针对并发事务对共享数据进行读操作,必须对该数据执行共享锁定指令,直到该事务处理结束才释放共享锁定。(解决丢失更新数据、脏数据读取、不可重复读取)
- 锁操作的相容性
- 两阶段锁定协议
- 一个给定的并发事务调度,当且仅当它是可串行化时,才能保证正确调度
- 保证可串行化的一个协议是:二阶段锁定协议
- 增长阶段,事务只能获得锁,但不能释放锁
- 缩减阶段,事务只能释放锁,但不能获得新锁
- 死锁问题解决
- 事务死锁:在基于锁机制的并发事务执行中,如果这些事务同时锁定两个以及以上资源时,可能会出现彼此都不能继续执行的状态
- 解决死锁的办法:当发生死锁时,回滚其中的一个事务,并取消它对数据库所做的改动
- 事务调度
- 安全模型
- 存取安全模型
- 数据库系统安全模型
- 身份验证:从应用系统层面确认登录用户是否是合法使用者
- 权限控制:从DBMS系统层面通过存取权限机制控制用户对数据的访问
- 系统防护:从操作系统层面提供的安全机制防范非法系统访问
- 加密存储:从数据存储层面通过加密算法对数据库中数据进行加密存储
- 数据库系统安全模型
- 用户、角色、权限管理
- 用户管理
- CREATE USER <用户账号名> [ [WITH] option […]];
- 权限管理
- GRANT <权限名> ON <对象名> TO {数据库用户名|用户角色名};
- 角色管理
- CREATE ROLE <角色名> [ [ WITH ] option [ ... ] ];
- 用户管理
- 存取安全模型
- 数据库备份与恢复
- 数据库备份:是指将数据库当前数据和状态进行副本复制,以便当数据库受到破坏或丢失数据时可以进行修复
- 数据库恢复:是指数据库中数据丢失或被破坏时,从备份副本将数据库从错误状态恢复到某一正确状态
- 备份方法
- 完全数据库备份:备份数据库所有内容
- 差异数据库备份:只备份上次备份后变化的内容
- 事务日志备份:备份上一次日志备份以来的事务日志数据
- 文件备份:直接复制数据库文件备份
- 备份方式
- 冷备份:数据库实例处于关闭状态
- 热备份:数据库实例处于运行状态