摘要:
SQL Server中的数据库都是由一或多个数据文件以及一或多个事务日志文件组成的。顾名思意,数据文件主要存储数据库的数据,包括数据库内容结构,数据页,索引页等等。那么事务日志到底是干什么的呢?它主要是用来保存数据库修改记录的,如下图:SQL Server的工作原理为什么这样呢?为什么不把数据立刻写入数据文件呢?原因很简单:为了得到更高的效率和性能。数据文件为了适应新的数据可能会扩展, 可能会重新分配页,分配新空间等等。而日志都是连续被记录的,所以记录事务日志要快得多。这也就是为什么我们通过推荐把物理磁盘单独划分一区用来存储事务 日志的原因了,这样可以使磁盘在读写上最大程序的保持自然连续。数据 阅读全文
摘要:
假设在下面几个时间段中,一个数据库积累插入了如下数据:1.完整数据库备份故名思意,完整数据库备份包括完整的数据库信息。它包括数据库的数据文件和备份结尾的部份活动事务日志。完整备份基本语法如下:BACKUP DATABASE AdventureWorks TO DISK = 'g:/backups/AdventureWorks.bak'2.差异性数据库备份差异性数据库备份包括自从上一次完整性备份以来所有改变的数据页,以及备份结尾的部份活动事务日志。差异备份和完整备份的语法很相似,唯一不同的是加上了DIFFERENTIAL选项,如下:BACKUP DATABASE Adventur 阅读全文
摘要:
在SQL Server中,除了系统数据库外,你创建的每一个数据库都有三种可供选择的恢复模型: Simple(简单), full(完整), bulk-logged(批量日志)。 下面这条语句可以显示出所有在线数据库的恢复模型:SELECT name, (SELECT DATABASEPROPERTYEX(name, 'RECOVERY')) RecoveryModel FROM master..sysdatabases ORDER BY nameSQL Server 2005及以上版本也可以使用下面这条语句来查看:SELECT name, recovery_model_desc 阅读全文
摘要:
当SQL Server截断事务日志时,它仅仅是在虚拟日志文件中做个标记,以便不再使用它,然后准备以重用形式来做备份(假如运载在完整或是批量日志恢复模型)。也就是说,在使用简单恢复模型时,事务日志包括如下的日志记录:当checkpoint发生时,虚拟日志文件1、2不再被使用,因为事务1、2已经被提交了,而且日志记录也不再需要回滚了。然后SQL Server重用虚拟日志文件1、2,如下图:这就是我们所熟知的事务日志截断。基本上,事务日志的活动区间已经被截断了,但是事务日志的物理大小不会改变,除非数据库使用自动收缩的属性设置。在这种情况下,事务日志就会尽可能的在物理上进行周期性的收缩。为了物理上减小 阅读全文