如何在更新数据库时,同时更新缓存的数据/(不丢弃缓存再重新读取数据来缓存)

 

1.ASP.NET 数据库缓存依赖

ASP.NET中,Cache类最酷的特点是它能根据各种依赖来良好的控制自己的行为。以文件为基础的依赖是最有用的,Cache.Insert 并提供引用文件的CacheDependency 对象添加的

 

Cache.Insert("MyData", Source, new CacheDependency(Server.MapPath("authors.xml")));

 

       但是当我们想让缓存根据数据库中表的变化而失效并重建该缓存的时候,应该怎么做呢 – 这种情景在很多应用程序中都存在。Asp.net没有为监视数据库表的变化提供内在的直接缓存支持。利用SQL Server的不常用的系统存储过程sp_makewebtask ,是可以达到这个目的的,这个存储过程本来是用作从查询中生成web页面的,但是我们只要稍作修改触发器中使用它,我们就可以取得一个合理有效的途径,当数据库某张表的记录被更新,删除或者修改时来修改某个特定的文件, 这样会使在CacheDependency实例中的文件监视进程侦测到文件的变化,从而使缓存失效。事实上,因为CacheDependency 类工作在UNC文件协议上,我们可以在整个Web Farm上部署这个解决方案,Web Farm上每台机器上的应用程序副本都会通过UNC文件路径来监视WebFarm中某台单个机器上的同一个文件。

定义: 何为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序。触发器是一个特殊的存储过程。 维护数据的完整性和一致性。

触发器的主要作用就是其能够实现由主键和外键所不能保证的复杂的参照完整性和数据的一致性。除此之外,触发器还有其它许多不同的功能:

(1)强化约束(Enforce restriction)

触发器能够实现比CHECK 语句更为复杂的约束。

(2)跟踪变化(Auditing changes)

触发器可以侦测数据库内的操作,从而不允许数据库中未经许可的指定更新和变化。

(3)级联运行(Cascaded operation)。

触发器可以侦测数据库内的操作,并自动地级联影响整个数据库的各项内容。例如,某个表上的触发器中包含有对另外一个表的数据操作(如删除,更新,插入)而该操作又导致该表上触发器被触发。

(4)存储过程的调用(Stored procedure invocation)。

为了响应数据库更新触,发器可以调用一个或多个存储过程,甚至可以通过外部过程的调用而在DBMS( 数据库管理系统)本身之外进行操作。
由此可见,触发器可以解决高级形式的业务规则或复杂行为限制以及实现定制记录等一些方面的问题。例如,触发器能够找出某一表在数据修改前后状态发生的差异,并根据这种差异执行一定的处理。此外一个表的同一类型(INSERT、 UPDATE、 DELETE)的多个触发器能够对同一种数据操作采取多种不同的处理。

        常见的触发器有三种:分别应用于Insert , Update , Delete 事件。

       废话少说,让我们创建一个简单的web应用程序,来演示它是如果工作的。首先,我们将会使用我们SQL Server中都信赖的Northwind范例数据库。创建一个简单的DataGrid来显示Employees表中的记录我们要做的第一件事情就是创建触发器

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PrimoCache是一款可以将物理内存、SSD硬盘或闪存盘等虚拟成硬盘缓存的软件。它可以自动将硬盘中读取数据存入物理内存等速度较快的设备,当系统再次需要该数据它可以很快从缓存设备中读取,而无需再次访问速度较慢的硬盘,从而有效提升物理硬盘的访问性能。 硬盘缓存增强软件 PrimoCache Desktop Edition 3.0.2 中文多语免费版 PrimoCache 它能做什么? 如果您的计算机装有4GB或更多内存,您可以使用一部分内存作为缓存加速本地磁盘,包括机械硬盘、SSD固态硬盘、闪存盘等,或iSCSI磁盘。 如果您的计算机有一部分内存不能被Windows使用,通常是32位Windows系统,您可以使用这部分“丢失”的内存作为缓存来加速本地磁盘和iSCSI磁盘。 如果您的计算机一个SSD硬盘和一个普通机械硬盘,您可以使用一部分或全部SSD空间作为缓存来加速机械硬盘。 如果您有一个空闲的USB 3.0 闪存盘,您可以用这个闪存盘作为缓存加速普通机械硬盘。 PrimoCache 功能特性简介 PrimoCache基于双级缓存系统架构设计,该架构由一个一级缓存(level-1 cache)和一个二级缓存(level-2 cache)组成。一级缓存使用物理内存作为缓存设备,而二级缓存则通常使用SSD固态硬盘、闪存盘或其它永续性存储设备。很明显地,一级缓存的访问速度远快于二级缓存,尽管一级缓存通常容量小于二级缓存。另一方面,一级缓存中存储的缓存数据在断电后会消失,而二级缓存则具有永久保存的特性。PrimoCache支持任意配置单双级缓存,即可以仅使用一级缓存或仅使用二级缓存,也可以同使用一级缓存和二级缓存。 由于二级缓存存储设备具有数据永续性的特性,二级缓存中的缓存内容在计算机关机后不会丢失。因此当计算机再次启动后,所需要的常用数据可以直接从二级缓存读取,而无需访问速度较慢的机械硬盘。对于操作系统或应用程序安装在机械硬盘的计算机,这个特性可以显著减少系统启动间以及加快应用程序的启动运行。 PrimoCache也支持缓写功能,即可以将系统请求写入的数据先存入缓存设备中,在一定间后再将数据缓存设备写入物理硬盘中。缓写功能使系统的写入请求可以快速完成,从而极大地提升硬盘的写入性能。 此外,PrimoCache具备未识别内存管理接口(UIMMI),支持检测系统未识别内存并将其作为一级缓存。由于Windows操作系统和硬件对内存总量的限制,部分系统无法识别所有安装的物理内存,例如,32位桌面Windows系统最大仅支持4GB内存,多余的内存则无法使用。PrimoCache对未识别内存的支持则克服了Windows操作系统的限制,充分利用全部物理内存。 PrimoCache内置智能缓存调度算法,可自动优化决定当缓存空间已满的情况下哪些缓存内容可被丢弃已便腾出空间存储新内容。该算法结合了常用的LFU和LRU算法,并具有自适应调整性,可提供更好的命中率,并无需用户进行参数设置。 PrimoCache支持多种缓存策略以及灵活的缓存设置。您可轻松为您的物理硬盘创建缓存,提高硬盘的读写性能。由于PrimoCache是在Windows驱动层中实现功能,在创建缓存后,系统和其它应用程序无需作任何改变即可自动应用缓存。 基本原理 PrimoCache主要部件位于Windows驱动层,它拦截并处理系统发送至硬盘的IO请求。如果IO请求读取数据已经在缓存中,则直接读取缓存中的数据并完成IO请求。否则数据则从硬盘中读取出来,并存入缓存,同完成IO请求。由此可见,从缓存读取数据量越多,则系统性能提升的越多。 主要特性列表 支持物理内存、SSD固态硬盘、闪存盘等作为缓存设备, 采用双级缓存系统架构, 支持永久二级缓存, 支持“直接写入”和“延迟写入”两种写入模式, 支持 TRIM 指令, 支持系统未识别内存, 支持预取数据缓存, 内置自适应智能缓存调度算法, 支持三种缓存策略:读写缓存、仅读缓存和仅写缓存, 支持性能数据监视和统计, 支持同缓存多个硬盘和多个分区, 支持缓存采用自定义文件系统的分区, 支持缓存动态硬盘的分区, 支持即插即用, 支持命令行接口。 为什么使用PrimoCache? Windows操作系统本身已经实现了基于文件的缓存系统,为什么还需要额外再使用PrimoCache? PrimoCache采用基于逻辑块的缓存机制,而Windows是基于文件的缓存机制。这两个缓存机制各有优缺点,PrimoCache可以是Windows缓存系统的一个很好补充。 某些应用程序会绕过Windows的缓存系统,但无法绕过PrimoCache,这是因为PrimoCache比Windows缓存位于系统更底层位置。 Window

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值