欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

怎样使用Process Monitor来监视SQLSERVER的logwrite大小

程序员文章站 2022-06-06 07:59:23
怎样使用Process Monitor来监视SQLSERVER的logwrite大小...

sql server 日志写(log write)的最小大小是多少呢?

为此我做了个试验(windows 7+sql server 2012)
 
1)我把磁盘格式化,最小分配单元为4kb
2)我把log 放到磁盘上
3) 我commit一个非常小的事务

process monitor v3.01 绿色汉化版下载地址:

为了与文章中的测试环境一样

我给出这次的数据库所在盘符的分配单元的截图

怎样使用Process Monitor来监视SQLSERVER的logwrite大小

怎样使用Process Monitor来监视SQLSERVER的logwrite大小

测试脚本:

1 use [northwind]2 go3 create table t1 ( c1 int )4 go5 begin tran6 insert  into t17 values  ( 1 )8 commit

我们怎麽来测试呢??

第一步:首先我们当然要打开ssms,然后拷贝脚本进去啦,哈哈

第二步:要找到sqlserver的进程编号,因为我的机器安装了sql2005,sql2008,sql2012

所以需要找一下sql2005的进程编号是多少

怎样使用Process Monitor来监视SQLSERVER的logwrite大小

第三步:打开服务管理器,我安装sql2005的时候使用的是默认实例,那么找到默认实例的sqlserver服务,

然后看这个服务用的是哪个帐户来登录的

sql2005:system

怎样使用Process Monitor来监视SQLSERVER的logwrite大小

sql2008:network service

怎样使用Process Monitor来监视SQLSERVER的logwrite大小

sql2012:mssql$sql2012

怎样使用Process Monitor来监视SQLSERVER的logwrite大小

第四步:打开任务管理器,看一下sql2005对应的是哪个进程

找到啦,进程编号是1736

怎样使用Process Monitor来监视SQLSERVER的logwrite大小

当然啦,如果你的电脑只安装了一个sqlserver,只有一个默认实例就不用这麽麻烦了

第五步:打开procmon.exe

先简单介绍一下一些按钮的作用

怎样使用Process Monitor来监视SQLSERVER的logwrite大小

捕获事件,其实这个软件跟sqlserver profiler一样,捕获事件就相当于“开始跟踪”

然后下面的显示框会一条一条的显示事件信息,相当于profiler里面跟踪记录,一条一条记录显示给你看

怎样使用Process Monitor来监视SQLSERVER的logwrite大小

事件种类:有注册表,文件系统,进程和线程,网络,性能

就像profiler里面的新建跟踪,里面也有很多的事件给你选择

第六步:因为我这里只是观察logwrite,所以只需要监控文件系统就可以了,注册表、网络这几个按钮不用点击

怎样使用Process Monitor来监视SQLSERVER的logwrite大小

怎样使用Process Monitor来监视SQLSERVER的logwrite大小

第七步:过滤:可以过滤的内容比较多,我这里就选择只显示sql2005进程的内容

怎样使用Process Monitor来监视SQLSERVER的logwrite大小

怎样使用Process Monitor来监视SQLSERVER的logwrite大小

确定之后就可以点击ok了

怎样使用Process Monitor来监视SQLSERVER的logwrite大小

怎样使用Process Monitor来监视SQLSERVER的logwrite大小

捕获和停止捕获,还有清空显示屏按钮

怎样使用Process Monitor来监视SQLSERVER的logwrite大小

刚才点击确定之后,procmon.exe会马上捕获sqlserver所有与文件系统相关操作的事件

第八步:这个时候需要先停止捕获,然后再清空显示屏

怎样使用Process Monitor来监视SQLSERVER的logwrite大小

开始测试

测试一:

多次执行刚才的测试脚本

1 begin tran2 insert  into t13 values  ( 1 )4 commit

但是由于太多与磁盘相关的记录了,我们怎麽看跟事务日志相关的记录呢??

怎样使用Process Monitor来监视SQLSERVER的logwrite大小

我们可以使用高亮功能

添加两个过滤条件:

operation 是writefile

path是 e:\数据库文件2013-10-30\northwnd.ldf

符合上面两个过滤条件的记录都将高亮显示

怎样使用Process Monitor来监视SQLSERVER的logwrite大小

怎样使用Process Monitor来监视SQLSERVER的logwrite大小

怎样使用Process Monitor来监视SQLSERVER的logwrite大小

 然后你会看到符合条件的都高亮显示了

怎样使用Process Monitor来监视SQLSERVER的logwrite大小

sql server 日志写的最小大小都是512bytes,就是一个扇区的大小

跟文章中说的基本一样

为什麽基本一样,因为我发现有一条记录是2.5mb,宋大师说:

上面那些8m和4m的磁盘写,应该是日志增长所导致的,所以我觉的不能和log write混淆吧?

怎样使用Process Monitor来监视SQLSERVER的logwrite大小

测试二:

我们先清空和停止捕获事件

怎样使用Process Monitor来监视SQLSERVER的logwrite大小

 1 --create table t2 ( c1 int, c2 char(7000) ) 2 --go 3 begin tran 4 declare @i int 5 set @i = 0 6 while ( @i < 100000 ) 7     begin 8         insert  into t2 9         values  ( @i, 'dadf' )10         set @i = @i + 111     end12 checkpoint13 commit14 delete  from t2

将上面的脚本同时开2个窗口运行

重新点解捕获事件按钮,开始捕获事件

怎样使用Process Monitor来监视SQLSERVER的logwrite大小

可以看到记录基本上都是大于60k的大小

为什麽会这样??

怎样使用Process Monitor来监视SQLSERVER的logwrite大小

总结

其实大家可以用左键双击每条记录,会打开一个详细属性对话框,里面包含了很多关于进程信息,堆栈信息

怎样使用Process Monitor来监视SQLSERVER的logwrite大小

怎样使用Process Monitor来监视SQLSERVER的logwrite大小

readfile操作的调用堆栈

怎样使用Process Monitor来监视SQLSERVER的logwrite大小

怎样使用Process Monitor来监视SQLSERVER的logwrite大小

进程树

怎样使用Process Monitor来监视SQLSERVER的logwrite大小