数据库安全及维护实用教案.pptx
上传人:王子****青蛙 上传时间:2024-09-13 格式:PPTX 页数:52 大小:1.9MB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

数据库安全及维护实用教案.pptx

数据库安全及维护实用教案.pptx

预览

免费试读已结束,剩余 42 页请下载文档后查看

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

引入知识(zhīshi)重、难点分析一、基本概念1.事务事务(Transaction)是并发控制的单位,是用户定义的一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位。在SQL语言中,定义事务的语句有:BEGINTRANSACTIONCOMMITROLLBACK事务通常是以BEGINTRANSACTION开始,以COMMIT或ROLLBACK结束。COMMIT表示提交,即提交事务的所有操作。具体地说就是将事务中所有对数据库的更新写回到磁盘上的物理数据库中去,事务正常(zhèngcháng)结束。ROLLBACK表示回滚,即在事务运行的过程中发生了某种故障,事务不能继续进行,系统将事务中对数据库的所有以完成的操作全部撤消,滚回到事务开始的状态。三种(sānzhǒnɡ)事务运行模式事务(shìwù)的特性(ACID特性)1)原子(yuánzǐ)性(Atomicity)2)一致性(Consistency)3)隔离(gélí)性(Isolation)4)持续性/永久性(Durability活动状态Use学生管理数据库GoBeginTranMytran--启动事务Insertinto学生表Values('200308003','李四','男','计算机','软件2班',22)--插入一条(yītiáo)记录Delete学生表Where学号='200308003'--删除记录RollbackTranMytran--回滚事务CommitTranGoSelect*From学生表丢失(diūsī)修改(LostUpdate)/脏读(DirtyRead)不可(bùkě)重复读幻像(huànxiànɡ)读事务(shìwù)的调度串行调度(diàodù):并发(bìngfā)调度:调度(diàodù)的简化调度(diàodù)的可串行化指令(zhǐlìng)的可交换性指令(zhǐlìng)的可交换性指令(zhǐlìng)的可交换性指令(zhǐlìng)的可交换性调度(diàodù)的可恢复性并发控制:就是要用正确的方式调度并发操作,避免造成数据的不一致性,使一个用户事务的执行不受其它事务的干扰。另一方面,对数据库的应用有时(yǒushí)允许某些不一致性。并发控制的主要方法是采用封锁机制(Locking)。封锁:事务对数据库操作之前,先对数据加锁以便获得这个数据对象的一定控制,使得其他事务不能更新此数据,直到该事务解锁为止。1、封锁的类型(lèixíng):共享锁/S锁,也称读锁(RLOCK):若事务T对数据对象A加上S锁,则事务T可以读取A但不能修改A,其他事务只能对A加S锁,而不能加X锁,直到T释放A上的S锁。保证了其他事务可以读A,但在T释放A上的锁之前不能修改A。排他锁/X锁,也称写锁(WLOCK):若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他任何事务都不能再对A加任何类型(lèixíng)的锁,直到T释放A上的锁。保证了其他事务在T释放A上的锁之前不能再读取和修改A。2、封锁(fēnɡsuǒ)类型的控制方式封锁(fēnɡsuǒ)类型决定控制方式,用相容矩阵表示控制方式。3、用封锁机制解决购买(gòumǎi)火车票问题:活锁与死锁活锁与死锁3)死锁的解除通常采用的方法是选择(xuǎnzé)一个处理死锁代价最小的事务,将其撤消,释放此事务持有的所有的锁,使其它事务得以继续运行下去。当然,对撤消的事务所执行的数据修改操作必须加以恢复。死锁解决方法:将所有数据一次性加锁——降低了并发度。预先规定一个封锁顺序。诊断法:检测是否有死锁发生,如有则设法解除。故障的种类(zhǒnglèi)1.事务内部的故障事务内部的故障有的是可以通过事务程序本身发现的,有的是非预期的,不能由事务程序处理的。示例:(通过事务程序本身发现的)银行转帐事务——将一笔金额从一个帐户甲转给另一个帐户乙。BEGINTRANSACTION读帐户甲的余额BALANCE1;BALANCE1=BALANCE1-AMOUNT;(AMOUNT为转帐金额(jīné))IF(BALANCE1<0)THEN{打印‘金额(jīné)不足,不能转帐’;ROLLBACK;(撤消该事务)}ELSE{写回BALANCE1;读帐户乙的余额BALANCE2;BALANCE2=BALANCE2+AMOUNT;写回BALANCE1;COMMIT;}事务内部更多的故障是非预期的,是不能由应用程序处理的。系统就要强行回滚此事务,即撤消该事务已经作出的任何对数据库的修改,使得该事务好象根本没有启动一样(yīyàng)。2.系统范围内的故障——撤消与重做(REDO)3.介质故障4.计算机