SQL Server 高速缓存依赖分析

一,使数据库支持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" %>

时间: 2024-08-03 06:49:15

SQL Server 高速缓存依赖分析的相关文章

SQL Server 高速缓存依赖分析_MsSql

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

SQL Server 2012使用分析服务多维模式建立简单的分析模型

多维数据集是一种特殊的数据库,按照默认的模式(MOLAP),它把数据仓库里事实表和维度表的数据经过聚合存储在另外一套独立的文件系统中.经过聚合的数据在统计性能上会得到提升,并且可以让用户通过很简单的前端工具,比如Excel来生成很简单的报表. 这里将介绍如何制作一个简单的多维数据集. 此篇使用的版本是SQL Server 2012,对应的Visual Studio Shell是2010,名称也改为SQL Data Tools. 首先,打开SQL Data Tools,点击File->New->

SQL Server备份历史记录分析

问题 在数据库管理员的日常任务中,数据库备份占据了很重要的位置.这个任务一般通过维护计划.定期的SQL Server Agent Jobs或者第三方工具的执行来完成.考虑到备份的重要性,有必要定期地分析这个过程的性能和效率.那么我们要如何才能洞察任何数据备份过程的性能呢? 专家解答 让我们通过一些不同的脚本来看看能够洞察到什么.为了达到这篇文章的目的,我在这个例子中创建了一个叫做BackupReport的数据库.基于测试目的,执行全日志,差异日志和事务日志来列出脚本的值.查看下面的脚本: 脚本

性能测试:自建数据库与RDS性能对比SQL Server案例排查分析

近期经常遇到用户将自建数据库与RDS进行对比,简单的对比结果是自建库比RDS实例查询快.我们这里来看看一个实例,有一家物流公司,刚开始使用RDS SQL Server数据库,发现通过ECS访问RDS实例,执行语句需要60s左右,但是访问ECS本地自建库只需要2-3s.那么RDS是否是真的不如自建数据库呢? 接下来,我们来探讨对比自建库和RDS的正确姿势,如何公平地对比自建库和RDS的性能. 对比自建库和RDS的语句执行性能,下面这些因素必须都考虑到: 1. 可用区和网络链路. 可用区.网络链路的

SQL Server 死锁案例分析

概述 当两个或者多个进程相互阻塞时,形成一个复杂的阻塞链,参与的进程都在等待其他进程放弃其获取到的锁,没有系统的干预,无法解开这个阻塞链,这种情况就是死锁. 有些死锁是意料之内的,可以说是故意为之的. 例如,为了一致性,使用死锁来防止丢失更新. 有一些死锁是意料之外的,由于缺少索引或者事务运行时间较长导致,我们遇到的大部分都是意料之外的死锁.  SQL Server内部有个死锁的检测机制,当发生死锁时,SQL Server根据会话优先级以及工作量进行评估, 选择终止其中一个事务,解开死锁,并且向

sql server死锁原因分析总结(1/2)

其实所有的死锁最深层的原因就是一个:资源竞争 sql server死锁表现一: 一个用户A 访问表A(锁住了表A),然后又访问表B 另一个用户B 访问表B(锁住了表B),然后企图访问表A 这时用户A由于用户B已经锁住表B,它必须等待用户B释放表B,才能继续,好了他老人家就只好老老实实在这等了 同样用户B要等用户A释放表A才能继续这就死锁了 sql server死锁解决方法: 这种死锁是由于你的程序的BUG产生的,除了调整你的程序的逻辑别无他法 仔细分析你程序的逻辑, 1:尽量避免同时锁定两个资源

SQL Server死锁的分析

server SQL Server数据库发生死锁时不会像ORACLE那样自动生成一个跟踪文件.有时可以在[管理]->[当前活动] 里看到阻塞信息(有时SQL Server企业管理器会因为锁太多而没有响应). 设定跟踪1204: USE MASTERDBCC TRACEON (1204,-1) 显示当前启用的所有跟踪标记的状态: DBCC TRACESTATUS(-1) 取消跟踪1204: DBCC TRACEOFF (1204,-1) 在设定跟踪1204后,会在数据库的日志文件里显示SQL Se

jdbc连接sql server数据库问题分析

SQL Server连接中问题还真多.不进行设置还真连接不上,这里小记一下!(部分资料来源于互联网) JDBC连接MySQL出现的问题 (例子里面自带JDBC2005的驱动,在lib文件夹下,右键点击Build Path--->add to build build path 即可) 运行connectionSqlServer2005包下的JavaConnectionSQL类即可! 1. 驱动问题: JDBC2005与JDBC2008一定要对号入座,否则会报错!(本人用的是2008) 2. 服务启

jdbc连接sql server数据库问题分析_MsSql

SQL Server连接中问题还真多.不进行设置还真连接不上,这里小记一下!(部分资料来源于互联网) JDBC连接MySQL出现的问题 (例子里面自带JDBC2005的驱动,在lib文件夹下,右键点击Build Path--->add to build build path 即可) 运行connectionSqlServer2005包下的JavaConnectionSQL类即可! 1. 驱动问题: JDBC2005与JDBC2008一定要对号入座,否则会报错!(本人用的是2008) 2. 服务启