在sql server中,利用日志的wal来保证关系数据库的持久性,但由于硬盘的特性,不可能使得每生成一条日志,就直接向磁盘写一次,因此日志会被缓存起来,到一定数据量才会写入磁盘。这部分已经生成的,却没有写入磁盘的日志,就是所谓的in-flight日志。 在sql
在sql server中,虚拟主机,利用日志的wal来保证关系数据库的持久性,但由于硬盘的特性,不可能使得每生成一条日志,就直接向磁盘写一次,因此日志会被缓存起来,到一定数据量才会写入磁盘。这部分已经生成的,却没有写入磁盘的日志,就是所谓的in-flight日志。
在sql server中,in-flight的日志的大小取决于两个因素,根据paul randal的说法,香港虚拟主机,in-flight日志不能超过60k,因此in-flight的日志最大是60k,此外,如果in-flight日志没有到60k,美国服务器,如果发生了commit或rollback,那么直接会写入磁盘。因此日志最小为512字节,最大为60k,以512字节为单位进行增长。下面我们来看一个例子。
我们首先建立一个简单的表,循环向其中插入10w的数据,该语句会生成大量的日志,如代码清单1所示:
@i integerset @i = 0while ( @i