下载此文档

使用 SQL 缓存依赖项C#.doc


文档分类:IT计算机 | 页数:约26页 举报非法文档有奖
1/26
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/26 下载此文档
文档列表 文档介绍
本文档是 Visual C# 教程(切换到 Visual Basic 教程)
最简单的缓存策略就是使缓存数据在一个指定的时间周期后过期。但是这个简单的方法意味着缓存数据没有保持与底层数据源的联系,从而导致过期数据长时保存或当前数据很快过期。更好的方法是使用 SqlCacheDependency 类,这样数据一直被缓存,直到其底层数据在 SQL 数据库中被修改。本篇教程将讲解怎样使用这个类。
Part 1
简介使用 ObjectDataSource 缓存数据和在架构中缓存数据教程中探讨的缓存技术使用基于时间的有效期, 在指定的周期过后从缓存中清除数据。该方法是平衡缓存性能与数据过时的最简单的方法。选择 x 秒的有效期,页面开发者虽然只能享受到 x 秒的缓存带来的好处,但可高枕无忧,因为数据的过期时间最多不会超过 x 秒。当然,对于静态数据, x 可以延长为 web 应用程序的生命周期,如应用程序启动时缓存数据教程所述。缓存数据库数据时,人们常常会选用基于时间的有效期,因为其易于使用。但常常这不是个合适的方案。理想情况是:数据库数据一直被缓存,直到底层数据在数据库中被修改;此时才清除缓存。该方法能最大地获得缓存带来的性能上的好处,同时使过时数据保持的时间最短。然而,为享受到这些好处,必须建立一套系统,该系统可以感知到底层数据库数据发生了改变并从缓存中清除相应的条目。在 以前,页面开发者负责实现该系统。 提供了 SqlCacheDependency 类以及必要的基础架构, 利用它们可以在数据库发生了变化时感知到变化, 从而清除相应的缓存条目。有两种技术可用于感知底层数据发生的变化:通知和轮询。下面我们会讨论通知和轮询的不同之处,之后,我们将创建必要的基础架构来支持轮询,然后探讨怎样通过声明和编程两种方式来使用 SqlCacheDependency 类。了解通知和轮询有两种技术可用于感知数据库中的数据发生的变化:通知和轮询。使用通知时,对于某个具体查询,如果自其上次执行以来其查询结果已发生了改变,数据库会自动通知 运行时。使用轮询时,数据库服务器保存特定表最近发生更改时的信息。 运行时周期性地查询数据库,看哪些表的数据在缓存后发生过改动。其数据改动过的那些表的相关缓存条目会被清除。选用通知技术时,需要的建立工作比轮询少,并且具有更细的粒度,因为该技术在查询级而不是在表级跟踪变化。遗憾的是,只有在 Microsoft SQL Server 2005 的完整版,即非速成(non-Express) 版中,才能使用通知。而对于 Microsoft SQL Server 从 到 2005 之间的所有版本, 都可采用轮询技术。由于这些教程使用的是 SQL Server 2005 Express 版,我们将集中探讨建立和使用轮询。有关 SQL Server 2005 的通知功能的更多资料,请参考本教程末尾的更多阅读材料部分。采用轮询时, 需配置数据库, 使其包含一个名为_SqlCacheTablesForChangeNotification 的表, 该表有三列– tableName 、
notificationCreated 和changeId 。对于那些在 web 应用程序的 SQL 缓存依赖项中可能需要用到其数据的表,该表都有一条记录与之对应。 tableName 列指定表名,而 notificationCreated 指示将该记录添加到表中时的日期和时间。changeId 列为 int 类型, 其初始值为0 。每次修改对应的表时, 其值递增。除了_SqlCacheTablesForChangeNotification 表之外,数据库还需要对可能出现在 SQL 缓存依赖项中的每个表包含一个触发器。每当在_SqlCacheTablesForChangeNotification 表中插入、更新、删除一条记录,或表中 changeId 值递增时,会执行这些触发器。在使用一个SqlCacheDependency 对象缓存数据时, 运行时会跟踪相应表的当前 changeId 。系统周期性地检查数据库,一旦发现某个 SqlCacheDependency 对象的 changeId 值不同于数据库中的相应值,就清除该对象,因为 changeId 值不同意味着数据被缓存后相应表又有了变化。步骤1 : 命令行程序如上所述, 使用轮询方法时, 必须对数据库进行设置, 使其包含下面的基础架构: 一个预先定义的表(_SqlCacheTablesForChangeNotification) , 一些存储过程, 以及 web 应用程序中 SQL 缓存依赖项可能用到的各个表的触发器。

使用 SQL 缓存依赖项C# 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数26
  • 收藏数0 收藏
  • 顶次数0
  • 上传人xunlai783
  • 文件大小398 KB
  • 时间2018-05-13
最近更新