视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
SQLServer高速缓存依赖分析
2020-11-09 07:13:48 责编:小采
文档


一,使数据库支持SQL高速缓存依赖性。
二,使表支持SQL高速缓存依赖性。
三,在ASP.NET应用程序的web.config文件中包含SQL连接字符串。
四,以如下方式利用SQL高速缓存依赖性:
     1)在代码中编程创建一个SqlCacheDependency对象。
     2)给OutputCache指令添加SqlCacheDependency属性。
     3)通过Response.AddCacheDependency给Response对象添加一SqlCacheDependency实例。

开启高速缓存依赖性的参数简要说明
-d <database>     用于SQL高速缓存依赖性的数据库名。数据库可以使用连接字符串和-c选项指定(必选)
-ed               允许数据库启用SQL高速缓存依赖性。
-dd               禁止数据库启用SQL高速缓存依赖性。
-et               允许表启用SQL高速缓存依赖性。需要-t选项。
-dt               禁止表启用SQL高速缓存依赖性。需要 -t 选项。
-t <table>         支持或禁止SQL高速缓存依赖性的表名。需要 -et 或 -dt 选项。
-lt               列出所有启用SQL高速缓存依赖性的表。

在SQL Server 2000中使用高速缓存禁用功能(在2005中也可以进行如下设置)
要在SQL 2000中使用高速缓存禁用功能,必须执行如下两步:
第一步是使相应的数据库支持该功能。
第二步是使要使用的表支持该功能。
例:
aspnet_regsql -S localhost -U sa -P sa -d Northwind -ed
注:将本机上的Northwind数据库开启高速缓存依赖功能。
aspnet_regsql -S localhost -U sa -P sa -d Northwind -dd
注:禁用本机上的Northwind数据库的高速缓存依赖功能。使用次命令后,数据库中的所有表的高速缓存禁用功能都自动关闭,AspNet_SqlCacheTablesForChangeNotification表也会自动删除。
开启表的高速缓存依赖功能。
例:
aspnet_regsql -S localhost -U sa -P sa -d Northwind -t Products -et
注:为Northwind数据库中的Products表开启高速缓存依赖功能。
aspnet_regsql -S localhost -U sa -P sa -d Northwind -t Products -dt
注:为 Northwind数据库中的Products表关闭高速缓存依赖功能。通过这个方法可以为一个数据库中的一个或多个表开启高速缓存依赖功能。为数据库和表开启高速缓存依赖功能后,可以发现Northwind数据库中添加了一个 AspNet_SqlCacheTablesForChangeNotification表,表示配置成功了。
aspnet_regsql -S localhost -U sa -P sa -d Northwind -lt
使用-lt参数可以查看该数据库中哪些表开启了高速缓存依赖功能。如果数据库关闭了高速缓存依赖或者没有启用高速缓存依赖功能,使用此命令将会得到错误提示。

关于SQL 2005的高速缓存禁用功能
SQL Server 2005支持高速缓存的编程和声明技术。在OupputCache指令中使用CommandNotification字符串就可以给页面建立基于通知的高速缓存。可以编程指定SQL高速缓存选项,或声明该选项,但不能同时使用这两种方法。SQL2005的缓存依赖无需web.config的配置,也不用为数据库和表开启缓存依赖功能,由于05内置了一个通知传递服务,该服务可以实现检测数据的更改、实现更改通知传递等功能,因此不需要不断轮询数据库来检测数据更新了。
注:虽然05中的缓存依赖使用很简单,但目前我还没有找到更多的相关资料,还没有亲自进行测试,主要原因还没搞清楚怎么才能开启Broker服务,以后有时间在进行测试吧。

配置ASP.NET应用程序
使用数据库和其中的几个表支持SQL Server高速缓存禁用功能后,就要为SQL Server高速缓存禁用功能配置应用程序。
要配置应用程序,以使用SQL Server高速缓存禁用功能,首先应修改web.config文件。在此文件中,指定要使用的数据库,并让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>元素,建立了与数据库的连接字符串。然后通过<caching>元素为SQL Server高速缓存功能进行配置。要是使用SQL Server高速缓存依赖性,所以必须使用<sqlCacheDependency enabled="true">节点,并启用该功能。在<databases>节点中引用数据库。
<add>元素中的属性说明:
name:为SQL Server数据库提供一个标识符。
connectionStringName:指定连接的名称。
pollTime:指定SQL Server轮流检测的时间间隔,默认为5秒或500毫秒。SQL 2005通知功能不需要这个属性。
web.config 文件配置正确后,就可以在页面上使用SQL Server高速缓存禁用功能了。ASP.NET会把SQL Server请求放在AspNet_SqlCacheTablesForChangeNotification表的一个完全不同的线程上,看看 changeId号是否递增了,如果该数字有变化,ASP.NET就知道对底层的SQL Server表进行了修改,应检索一个新的结果集。它确定是否应进行SQL Server调用时,对AspNet_SqlCacheTablesForChangeNotification表的请求会得到一个结果,启动了SQL Server高速缓存禁用功能后,这些执行得非常快。

为页面添加多个表,如下(用分号隔开):
<%@ OutputCache Duration="3600" VaryByParam="none" SqlDependency="Northwind:Employees;Northwind:Customers" %>

您可能感兴趣的文章:

  • sqlserver 中一些常看的指标和清除缓存的方法
  • 开启SQLSERVER数据库缓存依赖优化网站性能
  • SqlServer 执行计划及Sql查询优化初探
  • 优化SQL Server的内存占用之执行缓存
  • SQLSERVER中得到执行计划的两种方式
  • 强制SQL Server执行计划使用并行提升在复杂查询语句下的性能
  • 浅析SQL Server中的执行计划缓存(上)
  • 浅析SQL Server中的执行计划缓存(下)
  • 下载本文
    显示全文
    专题