1.一个数据库可以有多个物理日志文件(LDF),但逻辑上只有一个日志文件,使用多个物理日志文件不会增减数据库性能,因为日志操作不能并行。 2.逻辑上一个日志文件可以分成多个虚拟日志文件VLF(virtual log file),VLF是日志操作的最小单位,使得日志管理更高效和空间利用率更高;VLF是数据库收缩(shrink)的最小单位。 3.日志文件大小和VLF数量有直接关系,1-64M时有4个VLF,64M-1G时会有8个VLF,1G+是会有16个VLF。 4.可以使用DBCC LOGINFO来查看VLF的情况 5.VLF存在四种状态 --1.Active,there must be one or more active LSN on VLF --2.Recoverable, There is no actived LSN on VLD,and lsn have not been truncated --3.Reusable,There is no actived LSN on VLD,and lsn have been truncated --4.Unusable,There is no actived LSN on VLD,and lsn have not been used 6.产生日志的操作: --事务开始和结束 --数据修改 --数据页和索引页的分配和释放 --元数据的修改,如表和索引的创建删除修改 7.LSN(Log Sequentce Number)是数据库按照事务的先后顺序为日志分配的依次递增的编号 8.WAL(write ahead logging),在数据写入DISK之前先写入操作日志,以保证事务的原子性和持久性 9.事务日志过程: --1.在SQL Server缓冲区日志中写入事务开始记录 --2.在SQL Server缓冲区日志中写入事务修改信息 --3.在SQL Server缓冲区将要修改的数据写入数据页 --4.在SQL Server缓冲区日志中写入事务提交记录 --5.将缓冲区日志写入DISK --6.发送确认信息(ACL)到客户端 10.在数据库崩溃后恢复时,依据最后一次检查点后日志来决定哪些数据需要回滚(ROLLBACK)和哪些数据需要重做(REDO),从而保证了数据库持久性 11.LAZY WRITER and Check point存在本质区别,虽然两者都将内存中的胀页写入Disk,修改胀页标志, 但是目标不一样,Lazy Writer目的在于对缓冲区进行管理,释放过期数据页, 而Check point目标是减少数据库崩溃后恢复时间,Check point会修改VLF的状态,设置最小恢复检查日志号 11.在缓冲区出现内存瓶颈时,lazy writer执行频率会提高。数据库会按照默认频率执行check point操作,可以使用CHECKPINT N来修改执行频率 12.数据恢复模式分为:FULL,BULK LOGGED,SIMPLE三种: --在simple模式下,日志仅用于保证事务回滚和恢复,在事务完成后截断日志,不会保存事务日志; --在Full模式下,记录所有事务日志用以恢复数据库,只有日志备份操作才会截断日志 --在Bulk logged模式下,记录所有普通事务日志和简化大数据操作产生的日志 13.对数据库进行Full和Buld logged事务恢复模型切换不会对事务日志链造成破坏。 14.完整备份 --1.完整备份是将数据库中所有数据区进行复制, --2.完整备份备份数据和少量在数据备份期间产生的日志文件(用于数据同步) --3.备份期间所产生的数据修改也保存到备份中,备份还原点是备份结束时间点 --4.完整备份会修改数据库相关信息如最后一次完整备份信息,用于差异备份的bitmap等 15.差异备份 差异备份只备份自最后一次完整备份后修改的数据区,差异备份的最小单位是区,数据库使用Bitmap来标明自最后一次完整备份后那些数据区发生了变化。 16.日志备份 --1.日志备份仅备份最后一次完整备份或最后一次日志备份后的日志 --2.日志备份只能在完整恢复模式和大日志恢复模式下 --3.日志备份时可选择是否截断日志(WIT NO_TRUNCATE)