请选择 进入手机版 | 继续访问电脑版

 

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 34|回复: 6

[知识库] 日志文件持续增长的案例

[复制链接]
个人成绩
268057
268097
268079
主题
帖子
积分

等级头衔

等级:论坛元老

积分成就    金钱 : 536138 枚
   威望 : 11 值
   贡献 : 268068 值
   精华 : 0
   猫币 : 0 枚
   违规 : 0 次
  
广告
永久主机
  
广告
广告申请

建工伟业

联络方式
发表于 2018-7-10 12:35:00 | 显示全部楼层 |阅读模式
在完整恢复模式时,只有执行事务日志备份之后日志才被截断。 在日志被截断之前,有一种特殊情形导致数据文件的空间几乎没有变化,而日志文件却持续增长。一、搭
  
      
  在完整恢复模式时,只有执行事务日志备份之后日志才被截断。
  在日志被截断之前,有一种特殊情形导致数据文件的空间几乎没有变化,而日志文件却持续增长。
一、搭建测试环境
1. 创建数据库
CREATE DATABASE [db01]
ON  PRIMARY
( NAME = N'db01', FILENAME = N'C:\sqldata\db01.mdf' , SIZE = 5120KB , FILEGROWTH = 1024KB )
LOG ON
( NAME = N'db01_log', FILENAME = N'C:\sqldata\db01_log.ldf' , SIZE = 1024KB , FILEGROWTH = 1024KB)
ALTER DATABASE [db01] SET RECOVERY FULL
2. 创建表并插入一条新记录
USE db01
CREATE TABLE table1
(UserID int,pwd char(20),OtherInfo char(4000),modifydate datetime)
INSERT table1
VALUES ( 123,'456','this is the first record',getdate() )
3. 再插入999条记录
DECLARE @i int
SET @i=0
WHILE @i
BEGIN
  INSERT INTO table1
  SELECT cast(floor(rand()*100000) as int), cast(floor(rand()*100000) as varchar(20)), cast(floor(rand()*100000) as char(4000)), GETDATE()
  SET @i=@i+1
END
4. 查看数据库的磁盘使用空间
  此时,mdf文件为7MB,ldf文件为1MB。使用情况如下图。

bw1w02kvnwn.png

bw1w02kvnwn.png

二、第一次测试
1. 重复修改第一条记录
DECLARE @i int
SET @i=0
WHILE @i
BEGIN
  UPDATE table1
  SET pwd = cast(floor(rand()*100000) as varchar(20)),
    OtherInfo=cast(floor(rand()*100000) as char(4000)),
    modifydate = GETDATE()
  WHERE UserID=123
  SET @i=@i+1
END
2. 查看数据库的磁盘空间
  查看数据库的磁盘空间,结果发现:mdf文件和ldf文件的磁盘空间都几乎没有变化。
3、原因分析
  按照我们的理解:在完整恢复模式时,事务日志应当记录table1的所有数据变化的LSN记录,然后可以通过重做LSN从而恢复到任意时间点。
  既然我们已经对table1的第1条记录反复修改了1000次,理论上应当在ldf文件中记录这些修改的LSN记录。可是上面的测试结果显示ldf文件的磁盘空间没有变化,说明ldf文件中没有保存所有的LSN记录。这是为什么呢?
  回到事务日志的工作机制上,事务日志备份的恢复目标是什么呢?首先需要基于一个完整备份,然后从这个完整备份的最后一个LSN开始依次重做所有的LSN记录,从而将数据恢复直到最后一笔交易。
  要注意到,数据库db01自创建以来,没有做过完整备份。原因终于找到了!由于没有完整备份,数据库引擎认为ldf没有必要保存这些LSN记录(VLF被自动复用),因为这些LSN记录不能用于恢复。
三、第2次测试
1. 完整备份
BACKUP DATABASE [db01]
TO  DISK = N'C:\Backup\db01.bak' WITH FORMAT, INIT
2. 重复修改第1条记录
  再重复修改第1条记录,反复修改1000次。
3. 查看磁盘空间
  查看数据库的磁盘空间,结果发现:mdf文件仍然为7MB,而ldf文件从1MB增长到18MB。当然,如果反复修改的次数更多,将会使ldf增长更多。

jf2ourlbeso.png

jf2ourlbeso.png

4. 原因分析
  如果前面没有做过事务日志备份,则ldf文件中保存着自上一次完整备份以来的所有LSN记录;如果前面有做过事务日志备份,则ldf文件中保存着自上一次事务日志备份以来的所有LSN记录。
  mdf文件没有增长,是因为数据变化始终发生在第一个数据行,,始终用新的数据去覆盖旧的数据,因此不需要新的磁盘空间。而ldf文件持续增长,是因为需要新的磁盘空间用来保存所有的LSN记录。
四、场景示例
  例如,某个table记录了用户最后登入某个应用系统的时间。当无数个用户频繁登入系统,即使这些用户登入应用系统后没有任何操作就退出了系统,最后导致mdf文件几乎不变而ldf文件却持续增长。
五、收缩日志文件
  请参考 《如何收缩事务日志》  
本文出自 “我们一起追过的MSSQL” 博客,请务必保留此出处
个人成绩
13
62
1
主题
帖子
积分

等级头衔

等级:注册会员

积分成就    金钱 : 31 枚
   威望 : 0 值
   贡献 : 1 值
   精华 : 0
   猫币 : 0 枚
   违规 : 0 次
  
广告
永久主机
  
广告
广告申请

建工伟业

联络方式
发表于 2020-6-7 04:30:28 | 显示全部楼层
看了这么多帖子,第一次看到这么有深度了!
回复

使用道具 举报

个人成绩
7
63
0
主题
帖子
积分

等级头衔

等级:注册会员

积分成就    金钱 : 18 枚
   威望 : 0 值
   贡献 : 0 值
   精华 : 0
   猫币 : 0 枚
   违规 : 0 次
  
广告
永久主机
  
广告
广告申请

建工伟业

联络方式
发表于 2020-6-30 08:55:51 | 显示全部楼层
论坛的帖子越来越有深度了!
回复

使用道具 举报

个人成绩
10
67
33
主题
帖子
积分

等级头衔

等级:注册会员

积分成就    金钱 : 25 枚
   威望 : 0 值
   贡献 : 0 值
   精华 : 0
   猫币 : 0 枚
   违规 : 0 次
  
广告
永久主机
  
广告
广告申请

建工伟业

联络方式
发表于 2020-6-30 09:35:34 | 显示全部楼层
弓虽楼主,我告诉你一个你不知道的的秘密,有一个牛逼的源码论坛他的站点都是商业源码,还是免费下载的那种!特别好用。访问地址:http://www.mxswl.com 猫先森网络
回复

使用道具 举报

个人成绩
5
68
17
主题
帖子
积分

等级头衔

等级:注册会员

积分成就    金钱 : 12 枚
   威望 : 0 值
   贡献 : 0 值
   精华 : 0
   猫币 : 0 枚
   违规 : 0 次
  
广告
永久主机
  
广告
广告申请

建工伟业

联络方式
发表于 2020-6-30 10:33:01 | 显示全部楼层
强,我和我的小伙伴们都惊呆了!
回复

使用道具 举报

个人成绩
14
71
1
主题
帖子
积分

等级头衔

等级:注册会员

积分成就    金钱 : 33 枚
   威望 : 0 值
   贡献 : 1 值
   精华 : 0
   猫币 : 0 枚
   违规 : 0 次
  
广告
永久主机
  
广告
广告申请

建工伟业

最佳新人

联络方式
发表于 2020-7-1 18:56:53 | 显示全部楼层
今天皮痒了?
回复

使用道具 举报

个人成绩
12
74
38
主题
帖子
积分

等级头衔

等级:注册会员

积分成就    金钱 : 28 枚
   威望 : 0 值
   贡献 : 0 值
   精华 : 0
   猫币 : 0 枚
   违规 : 0 次
  
广告
永久主机
  
广告
广告申请

建工伟业

联络方式
发表于 5 天前 | 显示全部楼层
什么狗屁帖子啊,弓虽楼主的语文是苍老师教的吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|猫先森网络有限公司 ( 琼ICP备19003696号-1 )|网站地图|京公网安备46010502000339号

GMT+8, 2020-7-13 19:16 , Processed in 0.085452 second(s), 40 queries .

Powered by 红包群

© 2018-2020 Comsenz Inc. Designed by Www.Mxswl.Com

注:资源收集于网络,只做学习和交流使用,版权归原作者所有,请在下载后24小时之内自觉删除,若作商业用途,由于未及时购买和付费发生的侵权行为,与本站无关。
快速回复 返回顶部 返回列表