设为首页 收藏本站
查看: 688|回复: 0

[经验分享] SQL Server 2012笔记分享-21:事务日志截断、回绕与收缩

[复制链接]

尚未签到

发表于 2018-6-15 11:26:38 | 显示全部楼层 |阅读模式
  每个 SQL Server 数据库都具有事务日志,用于记录所有事务以及每个事务对数据库所做的修改。 必须定期截断事务日志以避免它被填满。 但是,一些因素可能延迟日志截断,因此监视日志大小很重要。 某些操作可以最小日志量进行记录以减少其对事务日志大小的影响。
  事务日志是数据库的重要组件,如果系统出现故障,则可能需要使用事务日志将数据库恢复到一致状态。 删除或移动事务日志以前,必须完全了解此操作带来的后果。
  事务日志支持以下操作:
  ? 恢复个别的事务。
  ? 在 SQL Server 启动时恢复所有未完成的事务。
  ? 将还原的数据库、文件、文件组或页前滚至故障点。
  ? 支持事务复制。
  ? 支持高可用性和灾难恢复解决方案:AlwaysOn 可用性组、数据库镜像和日志传送。
  =======================================================================
  事务日志截断
  日志截断将释放日志文件的空间,以便由事务日志重新使用。 日志截断主要用于阻止日志填充。 日志截断可从 SQL Server 数据库的逻辑事务日志中删除不活动的虚拟日志文件,释放逻辑日志中的空间以便物理事务日志重用这些空间。 如果事务日志从不截断,它最终将填满分配给物理日志文件的所有磁盘空间。
  为了避免这个问题,除非由于某些原因延迟日志截断,否则将在以下事件后自动进行截断:
  ? 简单恢复模式下,在检查点之后发生。将数据库恢复模式配置为简单模式。
DSC0000.png

  ? 在完整恢复模式或大容量日志恢复模式下,如果自上一次备份后生成检查点,则在日志备份后进行截断(除非是仅复制日志备份)。
  在备份数据库的时候可以选择进行日志备份,如图。(注意日志备份的前提是已经进行过数据库的完整备份)。
DSC0001.png

  注意下图的截断事物日志选项只有在进行事物日志备份的时候才可用,如果进行完整或差异备份,则不能选择该选项。
  例如:在使用DPM备份SQL server的时候,如果进行完整备份,则不会截断日志,但是如果使用完整+事物日志的备份方式就可以截断事物日志。
DSC0002.png

  
  为何要使用大容量恢复模式
  在完整恢复模式下,所有大容量操作都将被完整地记录下来。 但是,可以通过将数据库暂时切换到用于大容量操作的大容量日志恢复模式,最小化一组大容量操作的日志记录。 最小日志记录比完整日志记录更为有效,并在大容量事务期间,降低了大规模大容量操作填满可用的事务日志空间的可能性。 不过,如果在最小日志记录生效时数据库损坏或丢失,则无法将数据库恢复到故障点。
  监控日志空间的使用
  可以使用 DBCC SQLPERF (LOGSPACE) 监视日志空间使用情况。如图。
DSC0003.png

  =======================================================================
  收缩事务日志文件的大小
  收缩日志文件可删除一个或多个不包含逻辑日志任何部分的虚拟日志文件(即“不活动的虚拟日志文件”)。 在收缩事务日志文件时,将从日志文件的末端删除足够的不活动虚拟日志文件,以便将日志减小到接近目标大小。
  如图。
DSC0004.png

  然后选择要收缩的文件类型为日志文件。如图。
DSC0005.png

  =======================================================================
  日志回绕
  事务日志是一种回绕的文件。例如,假设有一个数据库,它包含一个分成四个虚拟日志文件的物理日志文件。当创建数据库时,逻辑日志文件从物理日志文件的始端开始。新日志记录被添加到逻辑日志的末端,然后向物理日志的末端扩张。日志截断将释放记录全部在最小恢复日志序列号 (MinLSN) 之前出现的所有虚拟日志。“MinLSN”是成功进行数据库范围内回滚所需的最早日志记录的日志序列号。示例数据库中的事务日志的外观与下图所示相似。
DSC0006.png

  分为四个虚拟日志文件的日志文件
  当逻辑日志的末端到达物理日志文件的末端时,新的日志记录将回绕到物理日志文件的始端。
DSC0007.png

  日志记录回绕到日志文件的开头
  这个循环不断重复,只要逻辑日志的末端不到达逻辑日志的始端。如果经常截断旧的日志记录,始终为到下一个检查点前创建的所有新日志记录保留足够的空间,则日志永远不会填满。
  参考链接:
  事务日志物理体系结构
  http://msdn.microsoft.com/zh-cn/windows/hardware/ms179355(v=sql.110).aspx
  逻辑日志与事务日志
  事务日志记录了所有事务以及每个事务对数据库所做的修改,用于确保数据库的数据完整性以及用于数据恢复,(后面这个是个人理解)由于记录的主体对象是事务相关的日志,所以就叫事务日志。
  而逻辑日志只是事务日志的一部分。这是因为事务日志是以一种回绕文件的方式记录的,具体的你可以看下这个图(摘自“事务日志物理体系结构”)
  http://i.msdn.microsoft.com/ms179355.656f4617-f295-4e17-b5c7-d6d3318d4051(zh-cn,SQL.100).gif
  虚拟日志文件
  对于一个或多个连续的物理日志文件,SQL SERVER在这些文件的内部又划分成了多个小的文件,称为虚拟日志文件,他是日志文件收缩和日志截断的最小单位,比如物理日志文件是400M,内部划分了4个100M的虚拟文件,收缩时你得到的是300M,200M,不可能得到239M,对于一个物理文件,会划分成多少个虚拟文件,这个由SQL自己维护,唯一可以人工干预的是指定较大的物理日志文件,并指定较大的增长比例,这样可能虚拟文件的块头会大点,数量会少点,系统的维护开销会低一点。
  截断事务日志
  截断是对SQL逻辑日志的一个清除过程,清除非活动的逻辑事务日志。可以想象断点应该是活动与非活动的边界处--MinLSN,他会将MinLSN前面的这段日志清除掉,逻辑日志的起点也会指向断点MinLSN处,清除出来的空间并不会返还给操作系统,而是被标识为非活动的虚拟日志文件,他表示当有新的日志记录进来时,这些空间可以被再次利用,所以截断日志并不会减小物理日志文件的大小,只是清理了里面的一些内容,以便新的日志记录可以进来,SQL总是以循环链表的方式使用物理日志文件的,当逻辑日志增长到物理日志文件的尽头时,他会循环到日志文件的首部搜索被截断而释放出来的空间,如果这个时候没有空间的话,说明物理日志已经用完了,就得增加物理日志的大小,如果磁盘也用尽了,系统就会返回一个错误提示。
  参考:https://forum.eviloctal.com/thread-22423-1-1.html
  ==================================================================
  2014年6.27日补充
  扩充数据库:可以通过预先的监控发现磁盘文件快满的情况,手动进行调整,手动调整的速度比自动增长要快得多;收缩数据库:不建议收缩数据库,会影响I/O性能,不建议在业务繁忙的时间进行,可能会造成新的文件碎片;数据库的整体趋势是增长的,所以收缩的意义不大,除非是特别大的数据库现在变小了;实际上收缩日志文件也是没有什么意义的;
  ==================================================================

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-524158-1-1.html 上篇帖子: windows虚机设定永久静态路由 下篇帖子: SQL Server 2012笔记分享-32:性能计数器监控SQL
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表