SQL Server 高速緩存依賴分析
更新時間:2009年10月12日 15:56:05 作者:
使用SQL Server高速緩存依賴性的步驟。
一,使數(shù)據(jù)庫支持SQL高速緩存依賴性。
二,使表支持SQL高速緩存依賴性。
三,在ASP.NET應(yīng)用程序的web.config文件中包含SQL連接字符串。
四,以如下方式利用SQL高速緩存依賴性:
1)在代碼中編程創(chuàng)建一個SqlCacheDependency對象。
2)給OutputCache指令添加SqlCacheDependency屬性。
3)通過Response.AddCacheDependency給Response對象添加一SqlCacheDependency實例。
開啟高速緩存依賴性的參數(shù)簡要說明
-d <database> 用于SQL高速緩存依賴性的數(shù)據(jù)庫名。數(shù)據(jù)庫可以使用連接字符串和-c選項指定(必選)
-ed 允許數(shù)據(jù)庫啟用SQL高速緩存依賴性。
-dd 禁止數(shù)據(jù)庫啟用SQL高速緩存依賴性。
-et 允許表啟用SQL高速緩存依賴性。需要-t選項。
-dt 禁止表啟用SQL高速緩存依賴性。需要 -t 選項。
-t <table> 支持或禁止SQL高速緩存依賴性的表名。需要 -et 或 -dt 選項。
-lt 列出所有啟用SQL高速緩存依賴性的表。
在SQL Server 2000中使用高速緩存禁用功能(在2005中也可以進行如下設(shè)置)
要在SQL 2000中使用高速緩存禁用功能,必須執(zhí)行如下兩步:
第一步是使相應(yīng)的數(shù)據(jù)庫支持該功能。
第二步是使要使用的表支持該功能。
例:
aspnet_regsql -S localhost -U sa -P sa -d Northwind -ed
注:將本機上的Northwind數(shù)據(jù)庫開啟高速緩存依賴功能。
aspnet_regsql -S localhost -U sa -P sa -d Northwind -dd
注:禁用本機上的Northwind數(shù)據(jù)庫的高速緩存依賴功能。使用次命令后,數(shù)據(jù)庫中的所有表的高速緩存禁用功能都自動關(guān)閉,AspNet_SqlCacheTablesForChangeNotification表也會自動刪除。
開啟表的高速緩存依賴功能。
例:
aspnet_regsql -S localhost -U sa -P sa -d Northwind -t Products -et
注:為Northwind數(shù)據(jù)庫中的Products表開啟高速緩存依賴功能。
aspnet_regsql -S localhost -U sa -P sa -d Northwind -t Products -dt
注:為 Northwind數(shù)據(jù)庫中的Products表關(guān)閉高速緩存依賴功能。通過這個方法可以為一個數(shù)據(jù)庫中的一個或多個表開啟高速緩存依賴功能。為數(shù)據(jù)庫和表開啟高速緩存依賴功能后,可以發(fā)現(xiàn)Northwind數(shù)據(jù)庫中添加了一個 AspNet_SqlCacheTablesForChangeNotification表,表示配置成功了。
aspnet_regsql -S localhost -U sa -P sa -d Northwind -lt
使用-lt參數(shù)可以查看該數(shù)據(jù)庫中哪些表開啟了高速緩存依賴功能。如果數(shù)據(jù)庫關(guān)閉了高速緩存依賴或者沒有啟用高速緩存依賴功能,使用此命令將會得到錯誤提示。
關(guān)于SQL 2005的高速緩存禁用功能
SQL Server 2005支持高速緩存的編程和聲明技術(shù)。在OupputCache指令中使用CommandNotification字符串就可以給頁面建立基于通知的高速緩存??梢跃幊讨付⊿QL高速緩存選項,或聲明該選項,但不能同時使用這兩種方法。SQL2005的緩存依賴無需web.config的配置,也不用為數(shù)據(jù)庫和表開啟緩存依賴功能,由于05內(nèi)置了一個通知傳遞服務(wù),該服務(wù)可以實現(xiàn)檢測數(shù)據(jù)的更改、實現(xiàn)更改通知傳遞等功能,因此不需要不斷輪詢數(shù)據(jù)庫來檢測數(shù)據(jù)更新了。
注:雖然05中的緩存依賴使用很簡單,但目前我還沒有找到更多的相關(guān)資料,還沒有親自進行測試,主要原因還沒搞清楚怎么才能開啟Broker服務(wù),以后有時間在進行測試吧。
配置ASP.NET應(yīng)用程序
使用數(shù)據(jù)庫和其中的幾個表支持SQL Server高速緩存禁用功能后,就要為SQL Server高速緩存禁用功能配置應(yīng)用程序。
要配置應(yīng)用程序,以使用SQL Server高速緩存禁用功能,首先應(yīng)修改web.config文件。在此文件中,指定要使用的數(shù)據(jù)庫,并讓ASP.NET連接它。
如:
<connectionStrings>
<add name="NorthwindConnectionString" connectionString="Data Source=.;Initial Catalog=Northwind;User ID=sa;Password=sa"
providerName="System.Data.SqlClient" />
</connectionStrings>
<system.web>
<caching>
<sqlCacheDependency enabled="true" pollTime="500">
<databases>
<clear/>
<add name="Northwind" connectionStringName ="NorthwindConnectionString" pollTime="500"/>
</databases>
</sqlCacheDependency>
</caching>
</system.web>
注:首先使用web.config文件中的<connectionStrings>元素,建立了與數(shù)據(jù)庫的連接字符串。然后通過<caching>元素為SQL Server高速緩存功能進行配置。要是使用SQL Server高速緩存依賴性,所以必須使用<sqlCacheDependency enabled="true">節(jié)點,并啟用該功能。在<databases>節(jié)點中引用數(shù)據(jù)庫。
<add>元素中的屬性說明:
name:為SQL Server數(shù)據(jù)庫提供一個標識符。
connectionStringName:指定連接的名稱。
pollTime:指定SQL Server輪流檢測的時間間隔,默認為5秒或500毫秒。SQL 2005通知功能不需要這個屬性。
web.config 文件配置正確后,就可以在頁面上使用SQL Server高速緩存禁用功能了。ASP.NET會把SQL Server請求放在AspNet_SqlCacheTablesForChangeNotification表的一個完全不同的線程上,看看 changeId號是否遞增了,如果該數(shù)字有變化,ASP.NET就知道對底層的SQL Server表進行了修改,應(yīng)檢索一個新的結(jié)果集。它確定是否應(yīng)進行SQL Server調(diào)用時,對AspNet_SqlCacheTablesForChangeNotification表的請求會得到一個結(jié)果,啟動了SQL Server高速緩存禁用功能后,這些執(zhí)行得非???。
為頁面添加多個表,如下(用分號隔開):
<%@ OutputCache Duration="3600" VaryByParam="none" SqlDependency="Northwind:Employees;Northwind:Customers" %>
二,使表支持SQL高速緩存依賴性。
三,在ASP.NET應(yīng)用程序的web.config文件中包含SQL連接字符串。
四,以如下方式利用SQL高速緩存依賴性:
1)在代碼中編程創(chuàng)建一個SqlCacheDependency對象。
2)給OutputCache指令添加SqlCacheDependency屬性。
3)通過Response.AddCacheDependency給Response對象添加一SqlCacheDependency實例。
開啟高速緩存依賴性的參數(shù)簡要說明
-d <database> 用于SQL高速緩存依賴性的數(shù)據(jù)庫名。數(shù)據(jù)庫可以使用連接字符串和-c選項指定(必選)
-ed 允許數(shù)據(jù)庫啟用SQL高速緩存依賴性。
-dd 禁止數(shù)據(jù)庫啟用SQL高速緩存依賴性。
-et 允許表啟用SQL高速緩存依賴性。需要-t選項。
-dt 禁止表啟用SQL高速緩存依賴性。需要 -t 選項。
-t <table> 支持或禁止SQL高速緩存依賴性的表名。需要 -et 或 -dt 選項。
-lt 列出所有啟用SQL高速緩存依賴性的表。
在SQL Server 2000中使用高速緩存禁用功能(在2005中也可以進行如下設(shè)置)
要在SQL 2000中使用高速緩存禁用功能,必須執(zhí)行如下兩步:
第一步是使相應(yīng)的數(shù)據(jù)庫支持該功能。
第二步是使要使用的表支持該功能。
例:
aspnet_regsql -S localhost -U sa -P sa -d Northwind -ed
注:將本機上的Northwind數(shù)據(jù)庫開啟高速緩存依賴功能。
aspnet_regsql -S localhost -U sa -P sa -d Northwind -dd
注:禁用本機上的Northwind數(shù)據(jù)庫的高速緩存依賴功能。使用次命令后,數(shù)據(jù)庫中的所有表的高速緩存禁用功能都自動關(guān)閉,AspNet_SqlCacheTablesForChangeNotification表也會自動刪除。
開啟表的高速緩存依賴功能。
例:
aspnet_regsql -S localhost -U sa -P sa -d Northwind -t Products -et
注:為Northwind數(shù)據(jù)庫中的Products表開啟高速緩存依賴功能。
aspnet_regsql -S localhost -U sa -P sa -d Northwind -t Products -dt
注:為 Northwind數(shù)據(jù)庫中的Products表關(guān)閉高速緩存依賴功能。通過這個方法可以為一個數(shù)據(jù)庫中的一個或多個表開啟高速緩存依賴功能。為數(shù)據(jù)庫和表開啟高速緩存依賴功能后,可以發(fā)現(xiàn)Northwind數(shù)據(jù)庫中添加了一個 AspNet_SqlCacheTablesForChangeNotification表,表示配置成功了。
aspnet_regsql -S localhost -U sa -P sa -d Northwind -lt
使用-lt參數(shù)可以查看該數(shù)據(jù)庫中哪些表開啟了高速緩存依賴功能。如果數(shù)據(jù)庫關(guān)閉了高速緩存依賴或者沒有啟用高速緩存依賴功能,使用此命令將會得到錯誤提示。
關(guān)于SQL 2005的高速緩存禁用功能
SQL Server 2005支持高速緩存的編程和聲明技術(shù)。在OupputCache指令中使用CommandNotification字符串就可以給頁面建立基于通知的高速緩存??梢跃幊讨付⊿QL高速緩存選項,或聲明該選項,但不能同時使用這兩種方法。SQL2005的緩存依賴無需web.config的配置,也不用為數(shù)據(jù)庫和表開啟緩存依賴功能,由于05內(nèi)置了一個通知傳遞服務(wù),該服務(wù)可以實現(xiàn)檢測數(shù)據(jù)的更改、實現(xiàn)更改通知傳遞等功能,因此不需要不斷輪詢數(shù)據(jù)庫來檢測數(shù)據(jù)更新了。
注:雖然05中的緩存依賴使用很簡單,但目前我還沒有找到更多的相關(guān)資料,還沒有親自進行測試,主要原因還沒搞清楚怎么才能開啟Broker服務(wù),以后有時間在進行測試吧。
配置ASP.NET應(yīng)用程序
使用數(shù)據(jù)庫和其中的幾個表支持SQL Server高速緩存禁用功能后,就要為SQL Server高速緩存禁用功能配置應(yīng)用程序。
要配置應(yīng)用程序,以使用SQL Server高速緩存禁用功能,首先應(yīng)修改web.config文件。在此文件中,指定要使用的數(shù)據(jù)庫,并讓ASP.NET連接它。
如:
<connectionStrings>
<add name="NorthwindConnectionString" connectionString="Data Source=.;Initial Catalog=Northwind;User ID=sa;Password=sa"
providerName="System.Data.SqlClient" />
</connectionStrings>
<system.web>
<caching>
<sqlCacheDependency enabled="true" pollTime="500">
<databases>
<clear/>
<add name="Northwind" connectionStringName ="NorthwindConnectionString" pollTime="500"/>
</databases>
</sqlCacheDependency>
</caching>
</system.web>
注:首先使用web.config文件中的<connectionStrings>元素,建立了與數(shù)據(jù)庫的連接字符串。然后通過<caching>元素為SQL Server高速緩存功能進行配置。要是使用SQL Server高速緩存依賴性,所以必須使用<sqlCacheDependency enabled="true">節(jié)點,并啟用該功能。在<databases>節(jié)點中引用數(shù)據(jù)庫。
<add>元素中的屬性說明:
name:為SQL Server數(shù)據(jù)庫提供一個標識符。
connectionStringName:指定連接的名稱。
pollTime:指定SQL Server輪流檢測的時間間隔,默認為5秒或500毫秒。SQL 2005通知功能不需要這個屬性。
web.config 文件配置正確后,就可以在頁面上使用SQL Server高速緩存禁用功能了。ASP.NET會把SQL Server請求放在AspNet_SqlCacheTablesForChangeNotification表的一個完全不同的線程上,看看 changeId號是否遞增了,如果該數(shù)字有變化,ASP.NET就知道對底層的SQL Server表進行了修改,應(yīng)檢索一個新的結(jié)果集。它確定是否應(yīng)進行SQL Server調(diào)用時,對AspNet_SqlCacheTablesForChangeNotification表的請求會得到一個結(jié)果,啟動了SQL Server高速緩存禁用功能后,這些執(zhí)行得非???。
為頁面添加多個表,如下(用分號隔開):
<%@ OutputCache Duration="3600" VaryByParam="none" SqlDependency="Northwind:Employees;Northwind:Customers" %>
相關(guān)文章
沒有SQL Server數(shù)據(jù)庫時如何打開.MDF文件
本文主要介紹了在安裝有Visual Studio 2005或以上的版本的前提下,沒有安裝SQL Server數(shù)據(jù)庫也可以打開.MDF數(shù)據(jù)庫文件的方法,需要的朋友可以參考下2015-08-08SqlServer應(yīng)用之sys.dm_os_waiting_tasks 引發(fā)的疑問(下)
這篇文章主要介紹了SqlServer應(yīng)用之sys.dm_os_waiting_tasks 引發(fā)的疑問(下) 的相關(guān)資料,需要的朋友可以參考下2015-12-12SQL?Server中T-SQL標識符介紹與無排序生成序號的方法
這篇文章介紹了SQL?Server中T-SQL標識符與無排序生成序號的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-05-05