五、事务管理
一、并发控制技术
并发性控制:保证多个用户能共享数据库,并维护数据一致性
① 排它锁(eXclusive lock,简记为X锁),写锁,若事务T对数据A加上排它锁,则其他事务不能再对A加上任何类型的封锁。获准排它锁的事务既能读数据,又能修改数据
② 共享锁(Share lock,简记为S锁),读锁,若事务T对数据A家伙是那个共享锁,则其它事务只能对A再加上共享锁,不能加排它锁。获准共享锁的事务只能读取数据,不能修改数据
死锁是两个或两个以上事务之间的循环等待。例如:如果事务A锁住了记录1并等待记录2,而事务B锁住了记录2并等待记录1,这样两个线程就发生了死锁现象
活锁指进程没有被阻塞,由于某些原因,导致一直重复尝试-失败-尝试-失败的过程。例如:事务T1封锁了数据R,事务T2又请求封锁R,于是T2等待。T3也请求封锁R,当T1释放了R上的封锁后,系统首先批准了T3的请求,T2仍然等待。然后T4又请求封锁R,当T3释放了R上的封锁之后,系统又批准了T4的请求......T2可能永远等待。
活锁有一定几率解开,而死锁是无法解开的
死锁是两个或两个以上事务之间的循环等待。
设计避免死锁的原则:
① 按照同一顺序访问资源(如第一事务提交或回滚后第二事务进行)
② 避免事务交互性
③ 采用小事务模式,缩短长度和占用时间
④ 尽量使用记录级别的锁,行锁,少用表级别的锁
⑤ 使用绑定链接,同一用户打开的两个或多个连接可以相互合作
避免活锁的简单方法是采用先来先服务的策略
二、备份和恢复数据库技术
数据备份与恢复:系统失效后的数据恢复,配合定时备份数据库,不丢失数据
数据库备份与恢复策略:
① 双机热备(基于Active/Standby方式的服务器热备)
② 数据转储(也称为数据备份)
③ 数据加密存储(针对高敏感数据)
DBMS中常见的4类故障:
① 事务内部故障:事务故障导致数据不一致,分为预期的(大部分)和非预期的
1) 预期的事务内部故障:可通过事务过程本身发现的。解决办法:事务回滚
2) 非预期的事务内部故障:不能由事务程序处理的故障,如运算溢出等。事务故障的恢复由系统自身完成
② 系统故障:又称软故障,运行期间由于硬件故障、数据库软件及OS漏洞、突然断 电等故障,导致数据不一致
解决办法:重启后撤销(UNDO)所有未提交的事务;重做(REDO)所有已提交的事务
③ 介质故障:又称硬故障,运行期间由于磁头碰撞、磁盘损坏、强磁干扰、天灾人祸 等,使得数据丢失的一类故障。导致物理存储设备损坏,数据文件及数据全部丢失,破 坏性最大
容错策略:软件容错及硬件容错
④ 计算机病毒故障
数据库恢复技术的基本原理是冗余
建立冗余数据的技术:
数据备份、登记日志文件、数据库复制、数据库镜像、为段设立保存点以及使用后备段与现行页表来支持对段的保存等。
最常用的是数据备份和登记日志文件
数据转储即数据备份,指DBA或DBAS定期复制数据库,并将其存放到其他介质的过程,这些保存的副本被称为后援副本或后备副本
① 静态转储:期间系统不能运行其他事务,不允许任何存储、修改活动
静态转储保证数据的一致性,但降低了数据库的可用性,转储和事务是互斥的
② 动态转储:及允许转储和事务并发执行
动态转储不能保准转储数据的一致性
动态转储+日志文件(记录转储期间各事务对数据库的修改活动记录):既保证数据一致性又提高了数据库的可用性
数据转储机制:
① 完全转储:对数据库中所有数据进行转储。占据较多时间和空间,但恢复时间短
② 增量转储:只复制上次转储后发生变化的文件和数据块。所需时间及空间短,但只能和完全转储配合才能对数据库进行恢复
③ 差量转储:对最近一次数据库完全转储以来发生的数据变化进行转储。差量转储比增量转储书都蛮占用空间多,但恢复速度快
多种转储方法结合使用:
① 仅使用完全转储:占据时间和空间多,代价大
② 完全转储+增量转储:恢复时间较长
③ 完全转储+差量转储:恢复时间短
日志记录的内容包括:事务标识和被更新的数据块
登记日志文件的原则:
① 登记的次序严格按并行事务执行的时间顺序。保证事务对数据库的操作可再现 性和正确性
② 必须先写日志文件再写数据库。先后顺序导致必然性
检查点的作用:最大限度地减少数据完全恢复时必须执行地日志部分
检查点应当由数据库恢复子系统自动的定期或不定期的建立,而不应当由数据库管理员手动建立
磁盘保护技术:RAID,廉价冗余磁盘阵列,多块磁盘构成一个整体
① RAID-0:将多个磁盘合并成一个大的磁盘,不具有冗余并行I/O,速度最快
② RAID-1:两组以上的N个磁盘恍惚镜像,在一些多线程操作新系统中能有很好的读取速度,理论上读取速度等于磁盘数量的倍数,另外写入速度有微小的降低。只需一个磁盘正常即可维持运作,可靠性最高
③ RAID-5:RAID Level 5是一种存储性能、数据安全和存储成本兼顾的存储解决方案。它使用的是硬盘分区技术。RAID 5至少需要三颗硬盘,RAID 5不是对存储数据进行备份,而是把数据和相应的奇偶校验信息存储到组成RAID 5的各个磁盘上,并且奇偶校验信息和相应的数据分别存储在不同的磁盘上
④ RAID-10:RAID-0与RAID-1的结合体,继承了前者的快速,后者的安全。RAID-10冗余度为50%
服务器容错技术:采用两台相同的服务器,共享存储设备(Active-Standby)。两台服务器之间会有私有网络进行心跳检测
双机热备:
① 主-备方式(Active-Standby方式):指的是一台服务器处于某种业务的激活状态(Active状态),另一台服务器处于该业务的备用状态(即Standby状态)。该方式的特点是当Active状态服务器出现故障的时候,通过软件诊断将Standby机器激活,保证系统在最短时间内恢复正常使用
② 双主机方式(Active-Active方式):指两种不同业务分别在两台服务器上互为主备状态(即Active-Standby和Standby-Active状态)。优点是两台服务器切换速度快,数据库连接不中断,应用不受影响
恢复模式:
① 简单恢复模式:此模式简略地记录大多数事务,不备份事务日志。所记录的信息只是为了确保在系统崩溃或还原数据备份之后数据库的一致性
② 完整恢复模式:此模式完整地记录了所有事务,并保留所有的事务日志记录,直到将它们备份
③ 大容量日志恢复模式:此模式简略地记录大多数大容量操作(例如索引创建和大容量加载),完整地记录其他事务。大容量日志恢复模式提高了大容量操作的性能,常用作完整恢复模式的补充
备份内容与备份时间时间:
① 系统数据库:
1) master、model、msdb:修改之后进行备份
2) tempdb:不备份
② 用户数据库:周期性备份
Tempdb是临时数据库,用于保存临时信息,用户创建的局部和全局表均被自动放置在该数据库中
进行下列操作之后,立即进行备份:
① 创建数据库之后,或批量加在数据之后
② 创建索引之后
③ 执行清理事务日志的操作之后
④ 执行大容量数据操作之后
结尾日志备份是恢复计划中的最后一个备份
还原的顺序:
① 恢复最近的完全备份
② 恢复最近的差异备份
③ 恢复子差异备份之后的所有日志备份(按辈分的先后顺序)
④ 恢复数据库
SQL Server支持对数据库中的一个数据文件进行还原的操作,在还原过程中数据库自动处于脱机状态,其它的文件都将不能进行读写操作,因此将受到一定影响