SQL时间戳使用之缓存依赖
来源:互联网 发布:淘宝买的衣服没有吊牌 编辑:程序博客网 时间:2024/05/19 20:48
通过时间戳来实现缓存依赖的一种方式
#########################使用方法
1.创建时间戳存储表
USE [iwomKeyWord]GO/****** Object: Table [dbo].[CachedTimemap] Script Date: 12/01/2012 01:25:04 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOSET ANSI_PADDING ONGOCREATE TABLE [dbo].[CachedTimemap]([ID] [int] IDENTITY(1,1) NOT NULL,[tableName] [char](30) NOT NULL,[value] [int] NULL,[timemap] [timestamp] NULL, CONSTRAINT [PK_CachedTimemap] PRIMARY KEY CLUSTERED ([ID] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY]GOSET ANSI_PADDING OFFGOALTER TABLE [dbo].[CachedTimemap] WITH NOCHECK ADD CONSTRAINT [CK_isExitTable] CHECK ((object_id([tableName],'U') IS NOT NULL))GOALTER TABLE [dbo].[CachedTimemap] CHECK CONSTRAINT [CK_isExitTable]GOALTER TABLE [dbo].[CachedTimemap] ADD CONSTRAINT [DF_CachedTimemap_value] DEFAULT ((1)) FOR [value]GO2.创建一个标量函数来获得时间戳表的名称
USE [iwomKeyWord]GO/****** Object: UserDefinedFunction [dbo].[GetTimemapName] Script Date: 12/01/2012 01:39:03 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- Author:<Arvin>-- Create date: <2012-11-30>-- Description:<获得表名>-- =============================================ALTER FUNCTION [dbo].[GetTimemapName] (@TABLENAME CHAR(30))RETURNS CHAR(30)ASBEGINDECLARE @FLAG INTSET @FLAG=0SELECT @FLAG=1 WHERE @TABLENAME LIKE 'dbo.%'IF(@FLAG=1)SET @TABLENAME=Substring(@TABLENAME,5,25)RETURN @TABLENAMEEND3.创建存储过程:查看表数据是否存在更新()
USE [iwomKeyWord]GO/****** Object: StoredProcedure [dbo].[pr_IsUpdateData] Script Date: 12/01/2012 01:42:15 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- Author:<arvin>-- Create date: <2012-11-30>-- Description:<判断一个表的数据是否更新>-- =============================================ALTER PROCEDURE [dbo].[pr_IsUpdateData]@tableName char(30),@beforeTimemap timestamp,@timemapValue timestamp outASBEGINSET NOCOUNT ON;DECLARE@currentTimemap timestampDECLARE @COUNT INTSET @COUNT=0SET @TABLENAME=dbo.GetTimemapName(@TABLENAME)SELECT @COUNT=1 FROM dbo.CachedTimemap WHERE [tableName]=@TABLENAMEIF(@COUNT=0)BEGINSET @timemapValue=0xFFFFFFFFFFFFFFFFRETURNENDSELECT @currentTimemap=[timemap] FROM dbo.CachedTimemap WHERE [tableName]=@TABLENAMEIF(@currentTimemap=ISNULL(@beforeTimemap,0))SET @timemapValue=0ELSESET @timemapValue=@currentTimemapEND4.创建存储过程:更新时间戳
USE [iwomKeyWord]GO/****** Object: StoredProcedure [dbo].[pr_UpdateCachedTimemap] Script Date: 12/01/2012 01:44:26 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- Author:<arvin>-- Create date: <2012-11-30>-- Description:<更新时间戳表>-- =============================================ALTER PROCEDURE [dbo].[pr_UpdateCachedTimemap]@tableName char(30)ASBEGINSET NOCOUNT ON;DECLARE@beforeTimemap timestampDECLARE @COUNT INTSET@COUNT=0SET @TABLENAME=dbo.GetTimemapName(@TABLENAME)SELECT @COUNT=1 FROM dbo.CachedTimemap WHERE [tableName]=@TABLENAMEIF(@COUNT=0)INSERT INTO dbo.CachedTimemap ([tableName])VALUES(@TABLENAME)UPDATE [dbo].[CachedTimemap]SET [value] = 1WHERE [tableName]=@tableNameEND5.在需要实现缓存依赖的表创建触发器,与时间戳更新存储过程关联
USE [iwomKeyWord]GO/****** Object: Trigger [dbo].[TR_updateCachedTimemap] Script Date: 12/01/2012 01:47:06 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- Author:<Author,,Name>-- Create date: <Create Date,,>-- Description:<Description,,>-- =============================================ALTER TRIGGER [dbo].[TR_updateCachedTimemap] ON [dbo].[WarnKeyWord] AFTER INSERT,DELETE,UPDATEAS BEGINSET NOCOUNT ON;DECLARE@return_value intEXEC@return_value = [dbo].[pr_UpdateCachedTimemap]@tableName = N'WarnKeyWord'END
#########################使用方法
通过调用存储过程(pr_IsUpdateData),来判断是否更新替换本地内存中的数据。
- SQL时间戳使用之缓存依赖
- Sql缓存依赖
- sql SqlCacheDependency缓存依赖
- SQL 缓存依赖
- SQL数据库缓存依赖
- Sql缓存依赖
- SQL缓存依赖
- SQL数据缓存依赖
- 使用 SQL 缓存依赖项,数据库缓存依赖 (附实例)
- 使用基于轮询的SQL数据缓存依赖
- SQL时间戳使用之任务循环
- Sql缓存依赖的实例
- SQL数据缓存依赖总结
- SQL数据缓存依赖功能
- SQL数据缓存依赖总结
- asp.net Sql缓存依赖
- asp.net 文件缓存依赖和sql缓存依赖
- 没有为SQL缓存通知启用数据库"某某某" ,使用Sql缓存依赖前,先调用EnableTableForNotifications通知数据库SqlCacheDependencyAdmin.Enabl
- linux gnome 快捷键
- Wargames:Vortex Level 1
- 最大公约数与最小公倍数
- Java之美[从菜鸟到高手演变]之设计模式四
- C++之“友元类”学习笔记
- SQL时间戳使用之缓存依赖
- .NET中加密XML文档,并在内存中解密
- 用python查找excel里面的某一列的重复数据,剔除之后打印
- ios开发答疑录系列---(三)C/C++ 数组的初始化
- OO设计原则
- Android应用程序窗口(Activity)的视图对象(View)的创建过程分析
- [置顶] 程序员面试、算法研究、编程艺术、红黑树、数据挖掘5大系列集锦
- Android Service学习之AIDL实例
- android style