SQL Server 2000是一个可以自增长的可复写的循环文件,最小增长大小为248K(256K-8K),而一个数据库的多个日志文件,是被轮流选择写入日志的,也就是同时循环使用,所以日志文件如果要增长,也是轮流依次增长。
每一个事务日志文件都被分成若干个小的部分,称为虚拟日志文件(VLF),它是SQL Server日志的最小单元,当整个VLF中的所有记录不在包含活动事务(未提交事务)的信息的时候,比如存在这个VLF的事务刚好提交了,那么这个VLF就处于不活动的状态,能够被SQL Server所复用。
日志文件刚创建时,被分割成如干个相同大小的VLF文件(最少2个,最多16个),创建时,日志文件如果大于1MB,VLF的大小总是64K的倍数,下表提供了日志文件刚创建时的分配情况:
日志创建时大小 | VLF数量 | 每个VLF的大小 |
小于1MB | 2-4个 | 248KB-334KB |
1MB-64MB | 4个 | 256K-16MB |
64MB-1GB | 8个 | 8MB-128MB |
1GB以上 | 16个 | 64MB或更大 |
日志文件的前8K用来存放日志头信息,后面依次存放VLF,所以,对于一个1MB大小的日志文件,先存放一个8K的日志头以后,显然是放不下4个256K的VLF的,其实SQL Server是存了3个256K的VLF和1个256K-8K=248K的VLF。
日志头信息
这8K的文件头也并非填满了信息,其实只有前42个字节是有用的信息,从42-8192这部分字节都是补0的。下面介绍着42个字节究竟存放了哪些信息。
数据类型 | 名称 | 大小 | 描述 |
UCHAR |