如何用Procmon.exe来监视SQLSERVER的logwrite大小

微软亚太区数据库技术支持组官方博客里面,你会发现很多篇文章都用到了Procmon.exe这个工具

今天我也介绍一下这个工具

这个实验基于这篇文章《SQL server每个日志写(log write)究竟有多大?》

这个工具的下载地址:http://files.cnblogs.com/lyhabc/ProcessMonitor.zip

文章里面的测试内容是这样的

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

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

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

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

测试脚本:

 USE [Northwind]
GO
CREATE TABLE t1 ( c1 INT )
GO
BEGIN TRAN
INSERT INTO t1
VALUES ( 1 )
COMMIT

我们怎麽来测试呢??

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

第二步:要找到SQLSERVER的进程编号,因为我的机器安装了SQL2005,SQL2008,SQL2012

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

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

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

SQL2005:system

SQL2008:network service

SQL2012:MSSQL$SQL2012

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

找到啦,进程编号是1736

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

第五步:打开Procmon.exe

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

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

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

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

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

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

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

确定之后就可以点击OK了

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

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

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


开始测试

测试一:

多次执行刚才的测试脚本

 BEGIN TRAN
INSERT INTO t1
VALUES ( 1 )
COMMIT

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

我们可以使用高亮功能

添加两个过滤条件:

operationwritefile

pathE:\数据库文件2013-10-30\northwnd.ldf

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

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

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

跟文章中说的基本一样

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

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


测试二:

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

 --CREATE TABLE t2 ( c1 INT, c2 CHAR(7000) )
--go
BEGIN TRAN
DECLARE @i INT
SET @i = 0
WHILE ( @i < 100000 )
BEGIN
INSERT INTO t2
VALUES ( @i, 'dadf' )
SET @i = @i + 1
END
CHECKPOINT
COMMIT
DELETE FROM t2

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

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

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

为什麽会这样??

大家可以看一下宋大师的这篇文章:再谈SQL Server中日志的的作用


总结

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

readfile操作的调用堆栈

进程树

如有不对的地方,欢迎大家拍砖o(∩_∩)o

如何用Procmon.exe来监视SQLSERVER的logwrite大小的更多相关文章

  1. windows 进程监控 Procmon.exe

    windows 进程监控 Procmon.exe window下一个程序打开太慢,可以用此程序监控.在哪一步慢了,读取文件还是注册表. ProcessMonitor3.2 Process Monito ...

  2. 如何用CSC.exe来编译Visual C#的代码文件

    原文:如何用CSC.exe来编译Visual C#的代码文件 C#的编译过程      如何用CSC.exe来编译Visual C#的代码文件   Csc.exe 编译器的位置路径:C:\Window ...

  3. 如何用dumpbin.exe检查编译器生成的托管模块所嵌入的信息

    开启CMD 运行到dumpbin目录下:D:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin 运行命令VCVARS32.BAT,配置环境 ...

  4. .net core 发布单个exe 文件, 并优化缩小大小

    最新版的.net core 3.0 可以通过命令行发布为exe文件, 操作步骤如下: 在项目目录下打开控制台: 输入命令: dotnet publish -r win-x64 -c Release - ...

  5. sqlserver计算表使用大小sql

    ) create table #spt_space ( ) null, [rows] int null, ) null, ) null, ) null, ) null ) set nocount on ...

  6. SQLSERVER 数据库性能的的基本

    SQLSERVER 数据库性能的基本 很久没有写文章了,在系统正式上线之前,DBA一般都要测试一下服务器的性能 比如你有很多的服务器,有些做web服务器,有些做缓存服务器,有些做文件服务器,有些做数据 ...

  7. SQLSERVER 数据库性能的基本

    很久没有写文章了,在系统正式上线之前,DBA一般都要测试一下服务器的性能 比如你有很多的服务器,有些做web服务器,有些做缓存服务器,有些做文件服务器,有些做数据库服务器 做数据库服务器的那台服务器性 ...

  8. SQLSERVER 数据库性能的的基本 MVC + EF + Bootstrap 2 权限管理

    SQLSERVER 数据库性能的基本 很久没有写文章了,在系统正式上线之前,DBA一般都要测试一下服务器的性能 比如你有很多的服务器,有些做web服务器,有些做缓存服务器,有些做文件服务器,有些做数据 ...

  9. [zhuan]SQLSERVER 数据库性能的基本

    SQLSERVER 数据库性能的基本 很久没有写文章了,在系统正式上线之前,DBA一般都要测试一下服务器的性能 比如你有很多的服务器,有些做web服务器,有些做缓存服务器,有些做文件服务器,有些做数据 ...

随机推荐

  1. CentOS-7.x Yum Repo Mirror

    一. 环境 1.1 主机信息 主机 OS Storage 备注 100.64.140.101 centos 7.6 /dev/sdb > 100GB 1.selinux disable; 2.放 ...

  2. 互联网寒冬,Python 程序员如何准备面试

    虽说年年都在喊互联网寒冬,最难就业季,但是今年确实有点不一样,年前年后一波又一波互联网公司宣布『人员调整,结构优化』, 这是往年没发生过的. 是不是面试机会就少了很多呢?不是的. 搜索招聘网站我们可以 ...

  3. SpringMVC(三)-- springmvc的系统学习之数据的处理,乱码及restful

    资源:尚学堂 邹波 springmvc框架视频 一.提交数据的处理 1.提交的域名称和处理方法的参数一致 (1)提交的数据:http://localhost:8080/data/hello.do?na ...

  4. BAE静态文件问题

    这几天想在bae上架一个自己的博客,但是老是访问不到静态文件文件,都要没有办法了,最后看了这篇博客,受到了启发,知道了问题所在: 我自己的原始的app.conf的配置如下: handlers: - u ...

  5. ubuntu18.04配置nvidia docker和远程连接ssh+远程桌面连接(一)

    ubuntu18.04配置nvidia docker和远程连接ssh+远程桌面连接(一) 本教程适用于想要在远程服务器上配置docker图形界面用于深度学习的用户. (一)ubuntu18.04配置n ...

  6. jar 命令详解

    jar 是随 JDK 安装的,在 JDK 安装目录下的 bin 目录中,Windows 下文件名为 jar.exe,Linux 下文件名为 jar.它的运行需要用到 JDK 安装目录下 lib 目录中 ...

  7. android 命令行安装apk

    有两种方式可以在android模拟器或真机上使用命令行安装apk 一种是使用adb install命令,网上通常是这种方式 另一种是通过android提供的命令,pm install. 需要先进入an ...

  8. Android 四大组件和Intent

    一.Android有四大组件(component):Activity.Service.BroadcastReceiver.ContentProvider. 1.Activity 通过startActi ...

  9. WebSocket 时时双向数据,前后端(聊天室)

    https://blog.csdn.net/lecepin/article/details/54632749 实例内容 今天主要说一下微信的WebSocket接口以及在小程序中的使用. WebSock ...

  10. Rust 阴阳谜题,及纯基于代码的分析与化简

    Rust 阴阳谜题,及纯基于代码的分析与化简 雾雨魔法店专栏 https://zhuanlan.zhihu.com/marisa 来源 https://zhuanlan.zhihu.com/p/522 ...