效能最佳化與故障排除百日談(3)-監控-使用DBCC命令監控日誌空間的使用方式
其實說到日誌,那就得有很多的話題了,可以這樣麼說,對已日誌的合理的規劃和深入的研究,對效能起著至關重要的作用,甚至可以說是“成也日誌,敗也日誌”。也許有朋友說這話有點言過其實了,但是事實卻是如此,只是我們平時沒有太注意這些,因為日誌太司空見慣了,但是對已這麼一個常見的東西,我們到底對其內部機制與原理掌握多少,對已日誌引發的儲存,管理,效能問題等如何解決,確實一門大的學問。
備忘:大家可以去看看我們錄製的“日誌故障排除與效能最佳化”視頻。
那麼,我們今天主要講述如何對日誌使用進行一些監控。
我們知道,每一個資料庫都有一個記錄檔與之對應(當然,我們可以把記錄檔拆分為幾個記錄檔,但是這麼做對效能沒有協助,僅僅只是在管理和空間使用上面有一些作用)。每一條日誌記錄記錄著DML的活動,並且記錄檔還可以用來進行資料恢複。
對於日誌,有兩個檔案比較嚴重:
1.日誌的增長超過了預期的速度,例如,我們本以為日誌增長是每天100MB,但是實際卻是每天增長200MB。
2.出現了記錄檔已滿的錯誤(9002)
當然,在應急的時候,可以砸錢暫時緩解一下,但是有些情況,即使砸錢也無法解決問題,因為沒有找到問題的癥結點。
下面我們就和大家說說如何使用DBCC命令來診斷一些問題。當然,手段有很多,本文列舉的不是全部,千萬不要以偏慨全。
在SQL Server使用很多的DBCC命令發布我們進行資料庫的管理,其中DBCC SQLPERF就是其中一個,使用這個命令,我們可以監控記錄檔的大小。
在下面的例子中,我們將會擷取所有資料庫的日誌空間的使用方式。除了使用DBCC SQLPERF監控日誌使用方式之外,還可以使用這個命令來重設等待與閥鎖的資訊。
如果DBCC SQLPERF接受LOGSPACE,那麼就返回日誌的使用方式,如果要重設等待資訊,那麼可以傳入其他的幾個參數。
使用DBCC SQLPERF命令,返回的幾個非常有用資料列:Database Name, Log Size(MB),Log Space Used(%)。
下面進入實戰。
首先,我們還是開啟SQL Sever 管理介面。
然後,我們輸入下面的命令:DBCC SQLPERF(LOGSPACE)
結果如下:
其實,這可能還無法解決問題,但是我們還可以使用更多的東西查看,如下:
因為本篇的重點只是講述如何使用命令與函數,所以更多的我們暫時不講,大家慢慢的積累,一點點的學習。