sqlserver 中一些??吹闹笜?biāo)和清除緩存的方法
更新時間:2009年07月24日 00:26:58 作者:
sqlserver 中一些??吹闹笜?biāo)和清除緩存的方法
如何查看磁盤I/O操作信息
SET STATISTICS IO ON 命令是一個 使 SQL Server 顯示有關(guān)由 Transact-SQL 語句生成的磁盤活動量的信息。
我們在分析索引性能的時候,會非常有用。
啟用了這個屬性后,我們在執(zhí)行 SQL 語句后,會收到類似如下的信息,這有利于我們分析SQL的性能:
(3999 row(s) affected)
表 'ChargeCL'。掃描計(jì)數(shù) 1,邏輯讀取 9547 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
其中的 lob 邏輯讀取、lob 物理讀取、lob 預(yù)讀 這三個指標(biāo)是 讀取 text、ntext、image 或大值類型 (varchar(max)、nvarchar(max)、varbinary(max)) 時的指標(biāo)。
而 邏輯讀取、物理讀取、預(yù)讀 是對普通數(shù)據(jù)頁的讀取。
使用 SQL Server Management Studio Standard Reports
我們在 SQL Server Management Studio 中,選擇數(shù)據(jù)庫服務(wù)器,或者具體數(shù)據(jù)庫,或者Security -- Logins 時,或者M(jìn)anagement 時,Notification Services 或者 SQL Server Agent 對象時候,都會看到SQL Server 替我們提供的一些現(xiàn)成報(bào)表,這些報(bào)表的數(shù)據(jù),有利于我們分析數(shù)據(jù)庫的狀態(tài)。
比如在 SQL Server 索引基礎(chǔ)知識(1)--- 記錄數(shù)據(jù)的基本格式
http://blog.joycode.com/ghj/archive/2008/01/02/113290.aspx
中,我們就使用數(shù)據(jù)表占用空間的報(bào)表
具體報(bào)表可以參考以下鏈接:
SQL Server Management Studio Standard Reports - Overview
http://blogs.msdn.com/buckwoody/archive/2007/10/09/sql-server-management-studio-standard-reports-overview.aspx
測試中,釋放緩存的一些方法
尤其查詢語句性能測試時,數(shù)據(jù)是否被緩存,這是測試中一個重要點(diǎn)。下面幾個命令幫助我們清除緩存。方便測試。
清除緩存有關(guān)的命令:
SQL 2000里面除了dbcc unpintable好像就沒有了 而且這個操作也不會立即釋放表內(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能夠更自由的對SQL所占用的內(nèi)存空間做處理 如:
CHECKPOINT
將當(dāng)前數(shù)據(jù)庫的全部臟頁寫入磁盤?!芭K頁”是已輸入緩存區(qū)高速緩存且已修改但尚未寫入磁盤的數(shù)據(jù)頁。CHECKPOINT 可創(chuàng)建一個檢查點(diǎn),在該點(diǎn)保證全部臟頁都已寫入磁盤,從而在以后的恢復(fù)過程中節(jié)省時間。
DBCC DROPCLEANBUFFERS
從緩沖池中刪除所有清除緩沖區(qū)。
DBCC FREEPROCCACHE
從過程緩存中刪除所有元素。
DBCC FREESYSTEMCACHE
從所有緩存中釋放所有未使用的緩存條目。SQL Server 2005 數(shù)據(jù)庫引擎會事先在后臺清理未使用的緩存條目,以使內(nèi)存可用于當(dāng)前條目。但是,可以使用此命令從所有緩存中手動刪除未使用的條目。
另外還可以 sp_cursor_list 查看全部游標(biāo)
DBCC OPENTRAN查看數(shù)據(jù)庫打開事務(wù)狀態(tài)等
SET STATISTICS IO ON 命令是一個 使 SQL Server 顯示有關(guān)由 Transact-SQL 語句生成的磁盤活動量的信息。
我們在分析索引性能的時候,會非常有用。
啟用了這個屬性后,我們在執(zhí)行 SQL 語句后,會收到類似如下的信息,這有利于我們分析SQL的性能:
(3999 row(s) affected)
表 'ChargeCL'。掃描計(jì)數(shù) 1,邏輯讀取 9547 次,物理讀取 0 次,預(yù)讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預(yù)讀 0 次。
其中的 lob 邏輯讀取、lob 物理讀取、lob 預(yù)讀 這三個指標(biāo)是 讀取 text、ntext、image 或大值類型 (varchar(max)、nvarchar(max)、varbinary(max)) 時的指標(biāo)。
而 邏輯讀取、物理讀取、預(yù)讀 是對普通數(shù)據(jù)頁的讀取。
使用 SQL Server Management Studio Standard Reports
我們在 SQL Server Management Studio 中,選擇數(shù)據(jù)庫服務(wù)器,或者具體數(shù)據(jù)庫,或者Security -- Logins 時,或者M(jìn)anagement 時,Notification Services 或者 SQL Server Agent 對象時候,都會看到SQL Server 替我們提供的一些現(xiàn)成報(bào)表,這些報(bào)表的數(shù)據(jù),有利于我們分析數(shù)據(jù)庫的狀態(tài)。
比如在 SQL Server 索引基礎(chǔ)知識(1)--- 記錄數(shù)據(jù)的基本格式
http://blog.joycode.com/ghj/archive/2008/01/02/113290.aspx
中,我們就使用數(shù)據(jù)表占用空間的報(bào)表
具體報(bào)表可以參考以下鏈接:
SQL Server Management Studio Standard Reports - Overview
http://blogs.msdn.com/buckwoody/archive/2007/10/09/sql-server-management-studio-standard-reports-overview.aspx
測試中,釋放緩存的一些方法
尤其查詢語句性能測試時,數(shù)據(jù)是否被緩存,這是測試中一個重要點(diǎn)。下面幾個命令幫助我們清除緩存。方便測試。
清除緩存有關(guān)的命令:
SQL 2000里面除了dbcc unpintable好像就沒有了 而且這個操作也不會立即釋放表內(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能夠更自由的對SQL所占用的內(nèi)存空間做處理 如:
CHECKPOINT
將當(dāng)前數(shù)據(jù)庫的全部臟頁寫入磁盤?!芭K頁”是已輸入緩存區(qū)高速緩存且已修改但尚未寫入磁盤的數(shù)據(jù)頁。CHECKPOINT 可創(chuàng)建一個檢查點(diǎn),在該點(diǎn)保證全部臟頁都已寫入磁盤,從而在以后的恢復(fù)過程中節(jié)省時間。
DBCC DROPCLEANBUFFERS
從緩沖池中刪除所有清除緩沖區(qū)。
DBCC FREEPROCCACHE
從過程緩存中刪除所有元素。
DBCC FREESYSTEMCACHE
從所有緩存中釋放所有未使用的緩存條目。SQL Server 2005 數(shù)據(jù)庫引擎會事先在后臺清理未使用的緩存條目,以使內(nèi)存可用于當(dāng)前條目。但是,可以使用此命令從所有緩存中手動刪除未使用的條目。
另外還可以 sp_cursor_list 查看全部游標(biāo)
DBCC OPENTRAN查看數(shù)據(jù)庫打開事務(wù)狀態(tài)等
相關(guān)文章
SQL Server誤區(qū)30日談 第10天 數(shù)據(jù)庫鏡像在故障發(fā)生后 馬上就能發(fā)現(xiàn)
市面上大肆宣傳數(shù)據(jù)庫鏡像技術(shù)可以在故障發(fā)生后,立即檢測到錯誤并進(jìn)行故障轉(zhuǎn)移2013-01-01
sql server 2012 數(shù)據(jù)庫所有表里查找某字符串的方法
此TSQL語句是針對SQL Server 2012編寫。如果使用之前版本,需要對部分語句進(jìn)行重寫。2013-03-03
在SQL Server中恢復(fù)多個數(shù)據(jù)庫的方法小結(jié)
這篇文章主要介紹了如何在SQL Server中恢復(fù)多個數(shù)據(jù)庫,通常情況下,只要備份文件的名稱與相應(yīng)的數(shù)據(jù)庫匹配,且沒有附加的日期或時間信息,就可以通過有效的 T-SQL 腳本來完成恢復(fù),文中給介紹了在SQL Server中恢復(fù)多個數(shù)據(jù)庫的方法小結(jié),需要的朋友可以參考下2024-09-09
SQL Server中調(diào)用C#類中的方法實(shí)例(使用.NET程序集)
這篇文章主要介紹了SQL Server中調(diào)用C#類中的方法實(shí)例(使用.NET程序集),本文實(shí)現(xiàn)了在SQL Server中調(diào)用C#寫的類及方法,需要的朋友可以參考下2014-10-10
MSSQL內(nèi)外連接(INNER JOIN)語句詳解
這幾天重新溫習(xí)了一下SQL的書本,現(xiàn)在的思路應(yīng)該是很清楚了,現(xiàn)在把自己的理解發(fā)出來給大家溫習(xí)下。希望和我一樣對SQL的連接語句不太理解的朋友能夠有所幫助2006-11-11

