如何用Procmon.exe来监视SQLSERVER的logwrite大小
如何用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
但是由于太多与磁盘相关的记录了,我们怎麽看跟事务日志相关的记录呢??

我们可以使用高亮功能
添加两个过滤条件:
operation 是writefile
path是 E:\数据库文件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大小的更多相关文章
- windows 进程监控 Procmon.exe
windows 进程监控 Procmon.exe window下一个程序打开太慢,可以用此程序监控.在哪一步慢了,读取文件还是注册表. ProcessMonitor3.2 Process Monito ...
- 如何用CSC.exe来编译Visual C#的代码文件
原文:如何用CSC.exe来编译Visual C#的代码文件 C#的编译过程 如何用CSC.exe来编译Visual C#的代码文件 Csc.exe 编译器的位置路径:C:\Window ...
- 如何用dumpbin.exe检查编译器生成的托管模块所嵌入的信息
开启CMD 运行到dumpbin目录下:D:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin 运行命令VCVARS32.BAT,配置环境 ...
- .net core 发布单个exe 文件, 并优化缩小大小
最新版的.net core 3.0 可以通过命令行发布为exe文件, 操作步骤如下: 在项目目录下打开控制台: 输入命令: dotnet publish -r win-x64 -c Release - ...
- sqlserver计算表使用大小sql
) create table #spt_space ( ) null, [rows] int null, ) null, ) null, ) null, ) null ) set nocount on ...
- SQLSERVER 数据库性能的的基本
SQLSERVER 数据库性能的基本 很久没有写文章了,在系统正式上线之前,DBA一般都要测试一下服务器的性能 比如你有很多的服务器,有些做web服务器,有些做缓存服务器,有些做文件服务器,有些做数据 ...
- SQLSERVER 数据库性能的基本
很久没有写文章了,在系统正式上线之前,DBA一般都要测试一下服务器的性能 比如你有很多的服务器,有些做web服务器,有些做缓存服务器,有些做文件服务器,有些做数据库服务器 做数据库服务器的那台服务器性 ...
- SQLSERVER 数据库性能的的基本 MVC + EF + Bootstrap 2 权限管理
SQLSERVER 数据库性能的基本 很久没有写文章了,在系统正式上线之前,DBA一般都要测试一下服务器的性能 比如你有很多的服务器,有些做web服务器,有些做缓存服务器,有些做文件服务器,有些做数据 ...
- [zhuan]SQLSERVER 数据库性能的基本
SQLSERVER 数据库性能的基本 很久没有写文章了,在系统正式上线之前,DBA一般都要测试一下服务器的性能 比如你有很多的服务器,有些做web服务器,有些做缓存服务器,有些做文件服务器,有些做数据 ...
随机推荐
- 金蝶盘点机PDA仓库条码管理家电类序列号扫描操作方法-采购入库单
1.1. 采购入库单 传统的进销存管理软件需要人工识别商品品种,清点商品数量,然后再去人工手工在电脑上一行行的录入采购入库单.录单效率低,误差大. 如果使用汉码盘点机PDA,入库时,仓管员只需要手持 ...
- yocto-sumo源码解析(三):oe-setup-builddir
该脚本的主要功能就是创建构建目录并准备一些配置文件,比如conf/local.conf,conf/bblayer.conf 1. 检测BUILDDIR环境变量是否设置好(在本系列分享第二节已经知道:B ...
- PAT甲题题解-1024. Palindromic Number (25)-大数运算
大数据加法给一个数num和最大迭代数k每次num=num+num的倒序,判断此时的num是否是回文数字,是则输出此时的数字和迭代次数如果k次结束还没找到回文数字,输出此时的数字和k 如果num一开始是 ...
- Android开发环境(发展演变)
初步接触android,要安装android开发工具时是使用eclipse,这是因为百度靠前的搜索项是eclipse来开 发android,而且那时还不知道android studio. 首先是下载配 ...
- VS2013安装及测试
一.Visual Studio的安装 首先是Visual Studio英文版的安装,安装完成后,为了用的时候方便,我从官网下载Visual Studio 2013的语言包并安装. 二.进行单元测试. ...
- 重温redis命令
redis是已知的性能最快的key-value 数据库. 1.key相关命令 exists key :检查指定的key是否存在 1表示存在 0表示不存在 del key1,key2,key3....: ...
- Git从零开始(一)
一.首先windows安装git客户端 官网下载地址:https://git-for-windows.github.io/,这里下载会很慢,我试了好几次都失败了. 百度网盘资源: https://pa ...
- Angular中ui-grid的使用详解
Angular中ui-grid的使用 在项目开发的过程中,产品经理往往会提出各种需求,以提高用户体验.最近,项目中用到的表格特别多,而且表格的列数和行数也超多.为了让用户浏览更爽,产品经理提出,当表格 ...
- c/c++ 函数说明以及技巧总结
1. memset函数: void *memset(void *s, int ch, size_t n); 函数解释:将s中当前位置后面的n个字节 (typedef unsigned int size ...
- Maven父子项目配置-多模块(multi-modules)结构
Maven创建父子项目,这个项目指的是eclipse中的project,idea中的module.使用idea创建的话很简单,可以直接选择项目的父亲,这些网上有很多资料的. 这里说一下创建父子项目时, ...