sqlserver 中一些常看的指標(biāo)和清除緩存的方法
2024-08-31 00:59:31
供稿:網(wǎng)友
如何查看磁盤(pán)I/O操作信息
SET STATISTICS IO ON 命令是一個(gè) 使 SQL Server 顯示有關(guān)由 Transact-SQL 語(yǔ)句生成的磁盤(pán)活動(dòng)量的信息。
我們?cè)诜治鏊饕阅艿臅r(shí)候,會(huì)非常有用。
啟用了這個(gè)屬性后,我們?cè)趫?zhí)行 SQL 語(yǔ)句后,會(huì)收到類(lèi)似如下的信息,這有利于我們分析SQL的性能:
(3999 row(s) affected)
表 'ChargeCL'。掃描計(jì)數(shù) 1,邏輯讀取 9547 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
其中的 lob 邏輯讀取、lob 物理讀取、lob 預(yù)讀 這三個(gè)指標(biāo)是 讀取 text、ntext、image 或大值類(lèi)型 (varchar(max)、nvarchar(max)、varbinary(max)) 時(shí)的指標(biāo)。
而 邏輯讀取、物理讀取、預(yù)讀 是對(duì)普通數(shù)據(jù)頁(yè)的讀取。
使用 SQL Server Management Studio Standard Reports
我們?cè)?SQL Server Management Studio 中,選擇數(shù)據(jù)庫(kù)服務(wù)器,或者具體數(shù)據(jù)庫(kù),或者Security -- Logins 時(shí),或者M(jìn)anagement 時(shí),Notification Services 或者 SQL Server Agent 對(duì)象時(shí)候,都會(huì)看到SQL Server 替我們提供的一些現(xiàn)成報(bào)表,這些報(bào)表的數(shù)據(jù),有利于我們分析數(shù)據(jù)庫(kù)的狀態(tài)。
比如在 SQL Server 索引基礎(chǔ)知識(shí)(1)--- 記錄數(shù)據(jù)的基本格式
中,我們就使用數(shù)據(jù)表占用空間的報(bào)表
具體報(bào)表可以參考以下鏈接:
SQL Server Management Studio Standard Reports - Overview
測(cè)試中,釋放緩存的一些方法
尤其查詢語(yǔ)句性能測(cè)試時(shí),數(shù)據(jù)是否被緩存,這是測(cè)試中一個(gè)重要點(diǎn)。下面幾個(gè)命令幫助我們清除緩存。方便測(cè)試。
清除緩存有關(guān)的命令:
SQL 2000里面除了dbcc unpintable好像就沒(méi)有了 而且這個(gè)操作也不會(huì)立即釋放表內(nèi)存Buffer
(DBCC UNPINTABLE does not cause the table to be immediately flushed from the data cache. It specifies that all of the pages for the table in the buffer cache can be flushed if space is needed to read in a new page from disk.)
SQL 2005/2008讓DBA能夠更自由的對(duì)SQL所占用的內(nèi)存空間做處理 如:
CHECKPOINT
將當(dāng)前數(shù)據(jù)庫(kù)的全部臟頁(yè)寫(xiě)入磁盤(pán)。“臟頁(yè)”是已輸入緩存區(qū)高速緩存且已修改但尚未寫(xiě)入磁盤(pán)的數(shù)據(jù)頁(yè)。CHECKPOINT 可創(chuàng)建一個(gè)檢查點(diǎn),在該點(diǎn)保證全部臟頁(yè)都已寫(xiě)入磁盤(pán),從而在以后的恢復(fù)過(guò)程中節(jié)省時(shí)間。
DBCC DROPCLEANBUFFERS
從緩沖池中刪除所有清除緩沖區(qū)。
DBCC FREEPROCCACHE
從過(guò)程緩存中刪除所有元素。
DBCC FREESYSTEMCACHE
從所有緩存中釋放所有未使用的緩存條目。SQL Server 2005 數(shù)據(jù)庫(kù)引擎會(huì)事先在后臺(tái)清理未使用的緩存條目,以使內(nèi)存可用于當(dāng)前條目。但是,可以使用此命令從所有緩存中手動(dòng)刪除未使用的條目。
另外還可以 sp_cursor_list 查看全部游標(biāo)
DBCC OPENTRAN查看數(shù)據(jù)庫(kù)打開(kāi)事務(wù)狀態(tài)等