文章出處

如何用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一個非常小的事務

 

為了與文章中的測試環境一樣

我給出這次的數據庫所在盤符的分配單元的截圖

測試腳本:

1 USE [Northwind]
2 GO
3 CREATE TABLE t1 ( c1 INT )
4 GO
5 BEGIN TRAN
6 INSERT  INTO t1
7 VALUES  ( 1 )
8 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所有與文件系統相關操作的事件

第八步:這個時候需要先停止捕獲,然后再清空顯示屏


開始測試

測試一:

多次執行剛才的測試腳本

1 BEGIN TRAN
2 INSERT  INTO t1
3 VALUES  ( 1 )
4 COMMIT

但是由于太多與磁盤相關的記錄了,我們怎麼看跟事務日志相關的記錄呢??

我們可以使用高亮功能

添加兩個過濾條件:

operationwritefile

pathE:\數據庫文件2013-10-30\northwnd.ldf

符合上面兩個過濾條件的記錄都將高亮顯示

 

 然后你會看到符合條件的都高亮顯示了

SQL server 日志寫的最小大小都是512bytes,就是一個扇區的大小

跟文章中說的基本一樣

為什麼基本一樣,因為我發現有一條記錄是2.5MB,宋大師說:

上面那些8M和4M的磁盤寫,應該是日志增長所導致的,所以我覺的不能和log write混淆吧?

 

 


測試二:

我們先清空和停止捕獲事件

 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 + 1
11     END
12 CHECKPOINT
13 COMMIT
14 DELETE  FROM t2

將上面的腳本同時開2個窗口運行

重新點解捕獲事件按鈕,開始捕獲事件

可以看到記錄基本上都是大于60K的大小

為什麼會這樣??

大家可以看一下宋大師的這篇文章:再談SQL Server中日志的的作用


總結

其實大家可以用左鍵雙擊每條記錄,會打開一個詳細屬性對話框,里面包含了很多關于進程信息,堆棧信息

readfile操作的調用堆棧

 

進程樹

 

如有不對的地方,歡迎大家拍磚o(∩_∩)o


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()