日志收缩、日志截断的区别和联系

lcqyue11 2011-01-14 04:38:52
日志收缩、日志截断的区别和联系
...全文
783 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
rucypli 2011-01-15
  • 打赏
  • 举报
回复
首先,可通过日志截断操作收缩日志。日志截断不会减小物理日志文件的大小。但是,它却能减小逻辑日志的大小,并将不包含任何逻辑日志的虚拟日志标记为不活动。日志收缩操作会删除足够多的不活动虚拟日志,将日志文件减小到要求的大小。

减小是以虚拟日志文件为单位进行的。例如,如果有一个 600 MB 的日志文件分为六个 100 MB 的虚拟日志,则该日志文件的大小只能按 100 MB 递减。文件可以减小为 500 MB 或 400 MB,但不能减小为 433 MB 或 525 MB。

rucypli 2011-01-15
  • 打赏
  • 举报
回复
截断日志意味着将进行数据库恢复或还原不再需要的日志记录物理删除。但是,在近来的版本中,截断过程只是做标记,以便重新使用旧日志记录使用过的空间。此空间中的日志记录将最终被新的日志记录覆盖。
一品梅 2011-01-15
  • 打赏
  • 举报
回复
前者实际分配物理空间没变化,这是里面预留空间可以用
后者实际分配物理空间被压缩小了。
黄_瓜 2011-01-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xman_78tom 的回复:]
日志截断将日志文件中不再被恢复过程所需要的部分释放给 SQL Server 重新使用,不会将此部分占用的存储空间返回给文件系统,可以看到截断或日志文件的大小并没有改变。

日志收缩前需要先截断日志,然后才可以使用 DBCC SHRINKDATABASE 语句和 DBCC SHRINKFILE 语句将日志文件中不再被需要的部分所占用的存储空间释放给文件系统,日志文件将被收缩。
[/Quote]
v5
claro 2011-01-15
  • 打赏
  • 举报
回复
[Quote=引用楼主 lcqyue11 的回复:]
日志收缩、日志截断的区别和联系
[/Quote]区别:前者改变日志文件大小,后者切断日志链而不改变大小。
联系:都对日志文件操作,在数据库默认设置和简单恢复模式下,数据库会自动完成两者功能。
在完全恢复以及日志恢复模式下,不会自动做两者操作。
xman_78tom 2011-01-14
  • 打赏
  • 举报
回复
日志截断将日志文件中不再被恢复过程所需要的部分释放给 SQL Server 重新使用,不会将此部分占用的存储空间返回给文件系统,可以看到截断或日志文件的大小并没有改变。

日志收缩前需要先截断日志,然后才可以使用 DBCC SHRINKDATABASE 语句和 DBCC SHRINKFILE 语句将日志文件中不再被需要的部分所占用的存储空间释放给文件系统,日志文件将被收缩。
华夏小卒 2011-01-14
  • 打赏
  • 举报
回复
截断日志只是告诉你有的日志没有用了,这部分存储空间没有变化,可以被重新利用

要想改变日志大小,必须要收缩
飘零一叶 2011-01-14
  • 打赏
  • 举报
回复
◆日志收缩

截断日志虽然确实从日志文件中清除了事务,但它并不会真正的减小物理日志文件的大小。SQL Server希望事务日志最终会扩展到其截断前的大小,所以截断不会释放已经分配给日志的硬盘空间。如果你的日志在某一时刻人为地扩展到某个大小,却再也无法恢复到这个大小的话可就麻烦大了。

在这种情况下,要释放硬盘物理空间做其他用途,就要手动进行事务日志文件收缩操作。你可以使用下面的T-SQL命令实现日志文件的收缩:


DBCC SHRINKFILE(,)
上面命令中的desired_shrink_size指的是你想要回收的硬盘空间大小(以MB为单位)。你可以在执行完事务日志截断操作之后立即回收大部分的磁盘空间。

◆日志截断


截断事务日志操作就是清除事务日志文件中的非活动记录。在一般的情况下,SQL Server能够自动执行截断操作,不需要人工干预管理。截断的频率取决于数据库的使用程度。你每进行一次完整恢复模式或大容量日志恢复模式的数据库备份,SQL Server就会截断一次事务日志。如果是在简单恢复模式下(不能还原事务日志),SQL Server会在每个检查点之后截断事务日志。


你也可以通过间接的方式手动驱使SQL Server执行事务日志截断操作,需要运行备份操作,不过你可以给SQL Server下指示,表明你只想执行事务日志的备份操作,不做执行其他任何操作。通过以下的T-SQL命令仍然可以达到上述效果:


BACKUP LOG WITH TRUNCATE_ONLY;


简单来说
日志收缩:物理的收缩数据日志文件的大小
日志截断:逻辑的释放日志空间以供事务日志重新使用

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧