数据库系统课舒畅堂提问.pptVIP

  • 2
  • 0
  • 约1.24万字
  • 约 100页
  • 2018-12-29 发布于福建
  • 举报
数据库系统课舒畅堂提问

* 登记日志文件时为什么必须先写日志文件,后写数据库? 把对数据的修改写到数据库中和把表示这个修改的日志记录写到日志文件中是两个不同的操作。有可能在这两个操作之间发生故障,即这两个写操作只完成一个。 如果先写了数据库修改,而在运行记录中没有登记这个修改,则以后就无法恢复这个修改了。如果先写日志,但没有修改数据库,在恢复时只不过是最多执行一次UNDO操作,并不会影响数据库的正确性。所以一定要先写日志文件,再写数据库的修改。 * 并发操作可能会产生哪几类数据不一致?用什么方法能避免各种不一致的情况? 丢失修改(两个事务T1和T2读入同一数据并修改,T2提交的结果破坏了T1提交的结果,导致T1的修改丢失)。 不可重复读(T1读取数据后,T2执行更新操作,使T1无法再现前一次读结果)。 读脏数据(T1修改某一数据,并将其写回磁盘,T2读取后,T1由于某种原因被回滚,导致T2读到的是无效数据)。 避免不一致性的方法和技术就是并发控制。最常用的技术是封锁技术。 * 基本的封锁类型有几种?试述它们的含义。 排它锁(X锁)。若事务T对数据对象A加上X锁,则只允许允许T读取和修改A,其他任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。这就保证了其他事务在T释放A上的锁之前不能再读取和修改A。 共享锁(S锁)。若事务T对数据对象A加上S锁,则事务T可以读但不能修改A,其他事务只能再对A加S锁,

文档评论(0)

1亿VIP精品文档

相关文档