《数据库学习打卡》第9天
1、数据库的并发操作可能带来的问题有:
①丢失更新:当两个或多个事物读入同一数据并修改,会发生丢失更新问题,即后一个事物更新的结果被前一事务所做更新覆盖 即当事务A和B同事进行时,事务A对数据已经改变但并未提交时B又对同一数据进行了修改(注意此时数据是A还未提交改变的数据),到时A做的数据改动丢失了
②不可重复读:当两个数据读取某个数据后,另一事务执行了对该数据的更新,当前一事务再次读取该数据(希望与第一次读取的是相同的值)时,得到的数据与前一次的不一样,这是由于第一次读取数据后,事务B对其做了修改,导致再次读取数据时与第一次读取的数据不想同
③读‘脏数据’:当一个事务修改某个数据后,另一事务对该数据进行了读取,由于某种原因前一事务撤销了对改数据的修改,即将修改过的数据恢复原值,那么后一事务读到的数据与数据可得不一致,称之为读脏数据
2、简述死锁的诊断方法,死锁的预防方法,解决死锁的方法
①死锁的诊断方法:超时法,等待图法
②死锁的预防方法:一次封锁法,顺序封锁法
③解决死锁问题主要有两类方法:一类方法是采取一定措施来预防死锁的发生,另一类方法是允许发生死锁,采用一定手段定期诊断系统中有无死锁,若有则解除之。
2、简述三级封锁协议的内容以及不同级别的封锁协议能解决哪些数据不一致性 问题 ?
①:一级封锁协议是:事务 T 在修改数据 R 之前必须先对其加 X 锁,直到事 务结束才释放。一级封锁协议能够解决丢失修改问题。
②:二级封锁协议是: 一级封锁协议加上事务在读取数据 R 之前必须先对其加 S 锁 ,读完后即可释放 S 锁。 二级封锁不仅可以解决“丢失修改”问题,而且可以解决读“脏“数据问题。
③:三级封锁协议是: 一级封锁协议加上事务在读取数据
R 之前必须先对其加S 锁,直到事务结束才释放。三级封锁协议不仅解决了“丢失修改”、读“脏”数据问题,而且进一步解决了“不可重复读”问题。
3、叙述两段锁协议。
①在对任何数据进行读写操作之前,事务首先要获得对该数据的封锁;
②在释放一个封锁之后,事务不再获得任何其他封锁。
4、什么是数据库的恢复?数据库恢复的基本原则是什么?
当数据库系统受到破坏时,通过恢复技术,使数据库恢复到遭到破坏之前的正确状态。数据库恢复的基本原则是重复存储,即“冗余”。