<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      張文的博客

      導航

      SQL數據緩存依賴 [SqlServer | Cache | SqlCacheDependency ]

      SQL數據緩存依賴 [SqlServer | Cache | SqlCacheDependency ]

      前言

      本文主要是對《ASP.NET 2.0開發指南》--<數據緩存>章節內容的提取并略有補充。

      參考資料

      1. 《ASP.NET 2.0開發指南》

      2. .NET 2.0 SqlDependency快速上手指南

      支持數據庫

      SQL SERVER 7.0/2000/2005版本

      正文

      一、SQL SERVER 7.0/2000和SQL SERVER 2005的簡介及比較

      1.1 SQL SERVER 7.0/2000

      SQL SERVER 7.0/2000沒有提供內置的支持數據緩存依賴的功能,所以只能通過采用添加特定數據庫表、觸發器等方式,通過后臺不斷輪詢數據庫來檢查數據更改。當在數據表上執行INSERT、UPDATE、 DELETE操作時將自動發出更改通知,所以只能監測到表級,具體到哪一行是沒法跟蹤的。

      使用方法步驟:

      1.1.1 使用aspnet_regsql命令行或SqlCacheDependencyAdmin來配置連接數據庫。

      1.1.1.1 ALTER DATABASE <DatabaseName> SET ENABLE_BROKER;

      aspnet_regsql -S <server> -U sa -P sa -d <database> -ed 啟動數據庫的數據緩存依賴功能

      aspnet_regsql -S <server> -U sa -P sa -d <database> -t <table> -et 啟動數據表的數據緩存依賴功能

      1.1.1.2

      SqlCacheDependencyAdmin.EnableNotifications(connectionString); //啟動數據庫的數據緩存依賴功能

      SqlCacheDependencyAdmin.EnableTableForNotifications(connectionString,table); //啟用數據表緩存

      推薦這段代碼寫在Global.asax的Application_Start方法中,以便應用程序啟動的時候就啟用數據庫和數據表的緩存依賴功能。

      1.1.2 配置Web.config

      <sqlCacheDependency enabled="true" pollTime="10000">配置在<sytem.web>下的<caching>結點下,只有一個數據庫的話不必指定下一級<database>結點

      1.1.3 應用程序數據緩存中使用(還可以在數據源控件、輸出緩存整個頁面時使用,這里就不介紹了,下同)

      SqlCacheDependency scd = new SqlCacheDependency("數據庫名稱","表名");

      Cache.Insert(...,scd,...);

      1.2 SQL SERVER 2005

      內置支持SQL數據緩存依賴,內置通知傳遞服務,能夠提供更小粒度的數據更改監測,使用和配置簡單。

      使用方法步驟:

      1.2.1 檢測是否已經啟用Service Broker

      Select DATABASEpRoPERTYEX('數據庫名稱','IsBrokerEnabled') -- 1 表示已經啟用 0 表示沒有啟用

      這個地方我看有些朋友翻譯的成“是否能啟用”,這是不對的,這里我把英文原文帖出來:“This can be checked by calling "Select databasepropertyex('db Name', 'IsBrokerEnabled')". A '1' means that the broker is enabled. A '0' means that the broker is not enabled. ”。

      依據我的經驗,如果直接在當前SqlServer2005上新建一個數據庫的話,默認是打開的,如果是從其他地方數據庫導過來的,導入之后默認關閉了。(可能有不準確,大家可以自己試驗一下測試一下)。如果已經打開可直接調到1.2.2。

      1.2.1.1 啟用Service Broker

      ALTER DATABASE 數據庫名稱 SET ENABLE_BROKER;

      2009-5-26補充: 如果執行此語句超過10秒或處于假死狀態,請重啟數據庫,什么都別做先執行這個語句就行了!

      1.2.2 在實現基于服務的SQL數據緩存依賴過程中,需要顯式調用SqlDependency.Start來啟動接受依賴項更改通知的偵聽器。

      SqlDependency.Start(connectionString); //推薦將這段代碼加到Global.asax的Application_Start方法中,

      SqlDependency.Stop(connectionString); //用于關閉,可加在Global.asax的Application_End方法中。

      1.2.3 應用程序數據緩存中使用

      SqlCommand cmd = new SqlCommand(sql,conn);

      SqlCacheDependency scd = new SqlCacheDependency(cmd);

      Cache.Insert(...,scd,...);

      注意:

      a). 必須設置完全限定名稱的數據表。即表名前面需要加所有者,如dbo.test。

      b). 必須明確設置所訪問數據庫列名稱,不能使用“*”。

      c). 必須保證不是聚合函數。如COUNT、MAX等。

      1.3 比較、區別

      SQL SERVER 7.0/2000

      SQL SERVER 2005

      實現機制

      輪詢

      通知傳遞服務(Service Broker)

      是否需要配置啟用

      需要

      不需要,內置支持

      數據更改檢測

      限于表級更改監測

      表級、行級更改監測

      并且很明顯,SQL SERVER 2005的緩存機制更加高效。另外,SqlCacheDependency類還特別結合SQL SERVER 2005 進行了優化:

      a). 使用SQL SERVER 2005 時,SqlCacheDependency類支持與System.Data.SqlClient.SqlDependency類進行集成。應用程序可創建SqlDependency對象,并通過OnChanged事件處理程序接受通知進行注冊。這樣,應用程序不僅可以使用Sql server 2005的查詢通知機制來監測使用SQL查詢結果無效的數據更改,并將緩存對象從緩存中移除,而且還可以輕松獲取數據更改通知,以便刷新緩存。(從這里可以看出,當觸發onRemoveCallback委托的時候,數據已經從緩存里面刪除了,這樣一來可以手動在委托里面添加緩存,或者干脆設置成null,讓他下次調用的時候再緩存。)

      b). 不僅向應用程序添加緩存依賴項,還可以與@OutputCache指令一起使用,以生成依賴于SqlServer數據庫表的輸出緩存的頁面或用戶控件。對于用戶控件,@OutputCache指令不支持使用SQL SERVER 2005 的查詢通知(即onRemoveCallback委托)。

      二、System.Web.Caching.Cache Insert和Add區別

      2.1 Add方法

      object Add(string key, object value, CacheDependency dependencies, DateTime absoluteExpiration, TimeSpan slidingExpiration, CacheItemPriority priority, CacheItemRemovedCallback onRemoveCallback);

      2.2 Insert方法

      void Insert(string key, object value);

      void Insert(string key, object value, CacheDependency dependencies);

      void Insert(string key, object value, CacheDependency dependencies, DateTime absoluteExpiration, TimeSpan slidingExpiration);

      void Insert(string key, object value, CacheDependency dependencies, DateTime absoluteExpiration, TimeSpan slidingExpiration, CacheItemUpdateCallback onUpdateCallback);

      void Insert(string key, object value, CacheDependency dependencies, DateTime absoluteExpiration, TimeSpan slidingExpiration, CacheItemPriority priority, CacheItemRemovedCallback onRemoveCallback);

      2.3 比較、區別

      a). Insert方法支持5種重載,使用靈活,而Add方法必須提供7個參數;

      b). Add方法可以返回緩存項的數據對象,Insert 返回Void;

      c). 添加重復緩存情況下,Insert會替換該項,而Add方法會報錯。

      三、 CacheDependency、AggregateCacheDependency、SqlCacheDependency

      3.1 CacheDependency是AggregateCacheDependency和SqlCacheDependency的父類。主要用于在應用程序數據緩存對象與文件、緩存鍵、文件或緩存鍵的數組或另外一個CacheDependency對象之間建立依賴關系。CacheDependency監視依賴關系比便在任何對象更改時自動移除緩存對象。CacheDependency可以監測一組(到文件或目錄的)文件路徑的更改情況。

      3.2 AggregateCacheDependency主要用于實現聚合緩存依賴。如一筆數據同時對兩個表進行緩存依賴,一旦其中任何一個表數據更改緩存將失效。

      3.3 SqlCacheDependency將應用程序數據緩存對象、頁面輸出緩存、數據源控件等與指定SQL Server數據庫表或Sql Server 2005 查詢結果之間建立緩存依賴關系,在表發生更改(Sql Server 2005 行級別更改)時,自動從緩存中刪除和重新添加與該表關聯的緩存對象。一般而言:

      SqlCacheDependency (SqlCommand) 用于SQL SERVER 2005

      SqlCacheDependency (數據庫名, 表名) 用于SQL SERVER 7.0/2000

      補充

      1. 2009-5-26 范例:緩存依賴范例 源代碼

      注意修改Web.config連接數據庫的代碼和Global.asax中對應SQL2000和2005不同的啟動緩存代碼!

      posted on 2011-05-10 11:11  張文的博客  閱讀(428)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 色偷偷中文在线天堂中文| 18禁国产一区二区三区| 在线a久青草视频在线观看| 成人动漫综合网| 日本一码二码三码的区分| 国产精品久久久久久久久久久久| 99久久久无码国产麻豆| 成熟熟女国产精品一区二区| 91网站在线看| 日韩乱码人妻无码系列中文字幕 | 日本三级香港三级人妇99| 中文字幕国产精品二区| 东京热无码av男人的天堂| 国产精品亚洲国际在线看| 人妻少妇精品中文字幕| 株洲市| 国产在线一区二区不卡| 国产精品免费看久久久| 一区二区三区无码视频免费福利| 亚洲小说乱欧美另类| 中文字幕人妻在线精品| 白水县| 91青青草视频在线观看| 国内精品无码一区二区三区| 中文字幕亚洲人妻系列| 91精品国产色综合久久| ww污污污网站在线看com| 无码国内精品久久人妻蜜桃| 99网友自拍视频在线| 中文字幕日韩国产精品| 国产精品久久人妻无码网站一区| 国产360激情盗摄全集| 亚洲av永久无码精品天堂久久| 无码人妻久久一区二区三区app| 啊┅┅快┅┅用力啊岳网站| 成全影视大全在线观看| 亚洲自拍偷拍中文字幕色| 国产福利精品一区二区| 97se亚洲国产综合自在线观看| 精品无人乱码一区二区三区| 日韩中文字幕精品人妻|