naotang的测试成长空间,记录工作中的问题,学习中的心得。 个人网站:www.naotang.com

SQL日志收缩

上一篇 / 下一篇  2007-11-20 18:06:06 / 个人分类:数据库

51Testing软件测试网0U^-wl.[ C

   如果从来没有从事务日志中删除日志记录,逻辑日志就会一直增长,直到填满容纳物理日志文件的磁盘上的所有可用空间。在某个即时点,必须删除恢复或还原数据库时不再需要的旧日志记录,以便为新日志记录腾出空间。
9`7g8X vO3@5v(E0可通过以下语句解决:51Testing软件测试网F"Wu!z[
   BACKUP LOG tablename WITH NO_LOG
8E8jV:W t{6A0   DBCC SHRINKFILE(Filename|FileID)51Testing软件测试网3z9mi nC$q)}

&f7kZ'XQ-H7h0一、截断事务日志:BACKUP LOG tablename WITH NO_LOG

,a%IW_!\R0

1v/P _XwL;n KuR(r0    删除日志记录以减小逻辑日志的大小的过程称为截断日志51Testing软件测试网2x dA`z0X/V0M

fk0t"dZ5i0    1、永远不能截断事务日志的活动部分。
a`s)y3j^)ky#^8N0    日志的活动部分是在任何时间恢复数据库所需的日志部分,因此必须有回滚所有未完成的事务所需的日志映像。51Testing软件测试网0zp!W1uBH*C |r
    这部分必须始终在数据库中,因为一旦服务器发生故障,在服务器重新启动时必须用它恢复数据库。51Testing软件测试网8C}0@1W6x-f8??8S![U

51Testing软件测试网.?;J qlsv2E

    2、日志活动部分起点处的记录由最小恢复日志序号 (MinLSN) 标识。51Testing软件测试网 n7{&DC2]'kY+Lu1P
    当截断事务日志时,删除包含 MinLSN 的虚拟日志文件头之前的所有日志记录。51Testing软件测试网/D/Z+Qd@5j3k0G,x |

51Testing软件测试网 M;f dp P{\

    3、截断不减小物理日志文件的大小,但减小逻辑日志文件的大小。

A_6ckrw+l051Testing软件测试网g"{2[&L4^w0k

    4、MinLSN的确定:51Testing软件测试网1EyrG1y(N/T
    这是有两个活动事务的事务日志末端的简化版本。检查点记录已压缩成单个记录。51Testing软件测试网 R;JFwE+W9[4T,G

wPiB4r*k q0    
!d3|-{6o!L0    LSN 148 是事务日志内的最后一条记录。在执行处理 LSN 147 时所记录的检查点时,Tran 1
VG ^ Z.m3H0    已经提交而且 Tran 2 是唯一的活动事务。这就使 Tran 2 的第一条日志记录成为最后一个检51Testing软件测试网,zRV;~1vP)C"p
    查点上的活动事务的最旧日志记录。这使 LSN 142(Tran 2 的开始事务记录)成为 MinLSN。

cc)W R};n`9?R8AP6h3s051Testing软件测试网:Vv6y@e&``E7^

二、收缩事务日志:DBCC SHRINKFILE(Filename|FileID)

'R/lP7y!~A0

2w k u1w&Q0    1、日志收缩操作依赖于最初的日志截断操作。
w0_ F-Z0Bs1|"[0]0    2、日志截断操作不减小物理日志文件的大小,但减小逻辑日志的大小,并将没有容纳逻辑日志任何部
kINsA8}'X0    3、分的虚拟日志标记为不活动。51Testing软件测试网-B&k hXQc
    日志收缩操作会删除足够多的不活动虚拟日志,将日志文件减小到要求的大小。

/r_%rJfT0

)A;a [,c!?0DBCC SHRINKFILE
jC"Hc-lwc0收缩相关数据库的指定数据文件或日志文件大小。51Testing软件测试网wb,cw8X O)_*nf

U;vtkRR0语法51Testing软件测试网W:T7L"_5O#y
DBCC SHRINKFILE51Testing软件测试网2]:@/m0]o{!t
    ( { file_name | file_id }
'Zvv8s0KbQ I_4b0        { [ , target_size ]
wq2n%aB%G0            | [ , { EMPTYFILE | NOTRUNCATE | TRUNCATEONLY } ]
YQ7[H5M(Sce0        }
!lu1Zz b8q0    )

t(Gox3`)aC0

2zG Tc7|c4p0参数
^&VD:x+W-T0file_name
W:@z{8A1la-oE@0是已收缩文件的逻辑名称。若要获得文件name,可通过在当前数据库中搜索sysfiles得到name。51Testing软件测试网-nVN N/x7r

51Testing软件测试网TZ9j)E;]r b

file_id51Testing软件测试网w"V;a/w{"y
是要收缩的文件的标识 (ID) 号。若要获得文件ID,请使用 FILE_ID 函数或在当前数据库
6Ob]S'L uu0fUz,B0中搜索 sysfiles。

!a!Hex _P0

QV6y c y wT@0target_size51Testing软件测试网WXc ^`IW*C
是用兆字节表示的所要的文件大小(用整数表示)。如果没有指定,DBCC SHRINKFILE
Ny.`%e XV2S0将文件大小减少到默认文件大小。51Testing软件测试网'T3Pjo'o2YO
DBCC SHRINKFILE 不会将文件收缩到小于存储文件中的数据所需要的大小。

/rA q*]k3mC0

/W#c Z6x5ckIJ0EMPTYFILE
\S I{5X0将所有数据从指定文件中迁移到同一文件组中的其它文件。该选项允许使用 ALTER DATABASE51Testing软件测试网 rB\1|GMz N
语句除去文件。

Y0E6}Z-W#p.?,A051Testing软件测试网df3[iQ|M0F4C^

NOTRUNCATE
FY7M0^+RJ#x0导致将释放的文件空间保留在文件中。
)k1Z,x`6{ k q0当与 target_size 一起指定 NOTRUNCATE 时,释放的空间不会释放给操作系统51Testing软件测试网)P u+o u2Ie
DBCC SHRINKFILE 的唯一影响是将已使用的页从 target_size 行上面重新定位到文件的前面。
vxN)?~)F0当未指定 NOTRUNCATE 时,所有释放的文件空间返回给操作系统。51Testing软件测试网vc,y%m7e,} m a

51Testing软件测试网E(P)`-v`9t(j'dj:Iv8g

TRUNCATEONLY
#ow"\%Rv1W4K0导致文件中的任何未使用的空间释放给操作系统,并将文件收缩到上一次分配的大小,
8V&E^A#D0从而减少文件大小,而不移动任何数据。51Testing软件测试网1f(UO|"Rd HC
不尝试将行重新定位到未分配页。如果使用 TRUNCATEONLY,将忽略 target_size。

|?XoW7ts;R5_0

TAG: SQL MinLSN 收缩日志 截断日志 数据库

 

评分:0

我来说两句

Open Toolbar