数据库系统-数据库控制
并发控制
事务的ACID特性:
- 原子性(Atomicity):事务包含的所有操作要么全部成功(commit提交),要么全部失败(rollback回滚)
- 一致性(Consistency):事务必须使数据库从一个一致性状态变换到另一个一致性状态。eg:转账时,一定是一方扣款,一方入账同时发生,不可只让一方扣款或只让一方入账
- 隔离性(Isolation):一个事务的执行不能被其他事务干扰。
- 持久性(Durability):一个事务一旦提交了,那么对数据库中的数据的改变就是永久性的。
并发产生的问题:
- 丢失更新:两个并发事务对同一属性值进行修改,其中某个修改可能会被覆盖
- 不可重复读的问题:某个事务要对同一组数据进行两次操作,两次操作中间被另一事务修改了这一组数据,导致两次操作的数据产生偏差。
- “脏”数据的读出:一个事务中修改了某一数据后发现异常进行回滚,在修改数据之后,回滚之前这个数据被另一事务读取,则另一事务读取的就是脏数据
解决方案:
封锁协议:
- S封锁:读锁/共享锁,添加了S锁的数据,别的事务仍可以读取并添加S锁
- X封锁 :写锁/独占锁,添加了X锁的数据,其他所有锁都无法添加
- 一级封锁协议:事务在修改数据之前必须先对其加X锁,直到事务结束才能释放。可防止丢失修改
- 二级封锁协议:一级封锁协议上加事务在读取数据之前先对其加S锁,读完后释放。可防止丢失修改,还可防止读“脏”数据
- 三级封锁协议:一级封锁协议上加事务在读取数据之前先对其加S锁,直到事务结束再释放。可防止丢失修改、防止读“脏数据”与数据不可重复读。
- 两段锁协议:将加锁的操作尽量都安排在解锁操作之前
数据库安全
用户标识与鉴定:最外层的安全保护措施,可用使用账户、口令及随机数检验等方式
存取控制:对用户进行授权,包括操作类型(如增删改查)和数据对象(数据范围)的权限
密码存储与传输:对远程终端信息用密码传输
视图保护:对视图进行授权
审计:使用一个专用文件或数据库,自动将用户对数据库的所有操作记录下来
数据库备份与恢复技术
数据备份
冷备份:静态备份 ,是将数据库正常关闭,在停止状态下,将数据库文件全部备份下来
热备份:动态备份,是利用备份软件,在数据库正常运行的状态下,将数据库中的数据文件备份出来。
完全备份:备份所有数据
差量备份:仅备份上一次完全备份后变化的数据
增量备份:备份上一次任意备份之后变化的数据
日志文件:事务日志是针对数据库改变所做的记录,它可用记录针对数据库的任何操作,并将记录结果保存在独立的文件中
数据库故障与恢复
事务本身的可预期故障:本身逻辑,在程序中预先设置Rollback语句
事务本身的不可预期的故障:算术溢出、违反存储保护,由DBMS的恢复子系统通过日志、撤销事务对数据库的修改,回退到事务初始状态
系统故障:系统停止运转,通常使用检查点法(系统重启时自动完成)
介质故障:外村被破坏,一般使用日志重做业务
撤销事务(UNDO):故障发生时未完成的事务,放入Undo撤销
重做事务(REDO):故障发生前已提交的事务,放入Redo队列
数据库性能优化
集中式数据库优化:
- 硬件系统:CPU,内存,I/O(硬盘。队列),网络
- 系统软件:参数,如进程优先级,CPU使用权,内存使用
- 数据库设计:表与视图(表的规划(可能会反规范化),建立物理视图)、索引(常查询-建索引,常修改-避免索引)、SQL语句优化
- 应用软件:数据库连接池
分布式数据库优化:
- 通信代价:全局查询树的变化,多副本策略,查询树的分解,半连接与直接连接