Exemple #1
0
        public void recover()
        {
            doRecover();
            int lsn = new CheckpointRecord().writeToLog();

            SimpleDB.logMgr().flush(lsn);
        }
Exemple #2
0
 internal void flush()
 {//将Page写回磁盘块,若当前Page为脏,那么先将它的日志记录写回磁盘块,再将page写回
     if (modifiedBy >= 0)
     {
         SimpleDB.logMgr().flush(logSequenceNumber);
         contents.write(blk);
         modifiedBy = -1;//修改的事务id置为负数
     }
 }
Exemple #3
0
        public void rollback()
        {//写一个ROLLBACK日志,然后将这个日志记录写回磁盘
            //所有被当前该事务修改过的脏数据页的“修改日志”写回磁盘,再将脏页写回磁盘
            SimpleDB.bufferMgr().flushAll(txnum);
            doRollback();//回滚当前事务直到看到START日志记录
            int lsn = new RollbackRecord(txnum).writeToLog();

            SimpleDB.logMgr().flush(lsn);
        }
Exemple #4
0
        public void commit()
        {//写一个COMMIT记录到日志,然后将这个日志记录写回磁盘
            //所有被当前该事务修改过的脏数据页,先写“修改日志”到磁盘,再将脏页写回磁盘
            SimpleDB.bufferMgr().flushAll(txnum);
            //写一个COMMIT记录到日志
            int lsn = new CommitRecord(txnum).writeToLog();

            //将该日志写回磁盘
            SimpleDB.logMgr().flush(lsn);
        }