存储过程与数据缓存

存储过程(StoredProcedure)是放置在数据库端的一组经过编译的、以SQL语句为基础的命令集。

     举例:

      1.  

           Create  procedure   studentSelect

           As

           Select  *  from  student

        这是一个显示student数据表的存储过程。这个存储过程不带任何待定参数。

      2.

            Create   procedure   studentUpdate

            (

               @orderID   uniqueidentifier ,

               @orderDate    datetime ,

               @orderNumber   int

)

            As

            Update   student

            Set   ordered=@orderID,

                 orderDate=@orderDate,

                 orderNumber=@orderNumber

            where  ordered=@orderID

      这是一个带参数的存储过程,其作用是更新student数据表。

 

存储过程包括两个不同的组成部分:

1.                     存储过程名、待定参数及其类型。 如果存储过程包含参数时,参数名及其类型都要放在小括号中,各参数之间用逗号分开。

2.                     as后面是存储过程的主体,包括可以执行的T-SQL语句。

 

存储过程与普通SQL语句的区别:

      存储过程是经过编译的、存放在数据库端的SQL命令集,应用程序只需调用存储过程的名字(需要时赋予相关的参数),即可完成对数据库的操作。

 

 

定义存储过程

插入:

Create  procedure  insertStudent

(

  @xm  nvarchar(12) ,

  @xb   nvarchar(4) ,

  @age   int

)

As

Insert  into  student (xm, xb, age) 

Values (@xm , @xb , @age)

Select  *  from  学生表

 

 

 

 

数据缓存

 

     数据缓存(Data Caching)就是将数据暂存于内存缓存区中的一种技术。

1.       网页输出缓存

        当网页的内容相对固定时,可以将整个网页缓存起来。因为对于动态网页来说,网页的访问大体上可以分为三个步骤:

●     用户请求

●     动态生成网页并转化为HTML格式

●     向浏览器发送显示

 

设置网页输出缓存(Output Caching)的方法很简单,下面举例:

(1)  在网站中增加一个网页,放入一个label控件,假定将控件命名为TimeMsg。

(2)    在网页的Page_Load事件编写如下代码,以便在TimeMsg控件中显示打开网页的时间。

       {TimeMsg . text=”打开网页的时间是:”+DataTime . Now . ToString()}

(3)    在*.aspx网页的代码中增加设置缓存的指令:

<%@ OutputCache  Duration=”60”  VaryByParam=none %>

语句”<%@.......%>”是网页配置的指令,在这里用来给网页指定缓存参数。 其中:Duration=”60” (注意:时间两端要加引号)代表缓存持续时间为60秒,VaryByParam属性用来指定特定版本的网页输出。 在<%@OutputCache。。。%>配置指令中一定要加入VaryByParam属性。即使不使用这个版本属性,也要将它加入,但将其值设为 none 。

      网页缓存以后,不论访问的用户来自世界何处,都直接从缓存区中提取出来直接送发显示。

 

2.       数据库缓存

         通常情况下,大量数据是保存在数据库中的,而应用程序访问数据库是一项很费时的操作。

         如果先将数据库中的数据缓存到缓存区中,当应用程序需要这些数据时,直接从缓存区中提取,就可以减少系统开销。

         在ASP . NET 2.0中可以通过数据源设置数据表的缓存参数。 在SqlDataSoure控件的属性中有几项用于设置缓存的参数。

●     CacheDuration:代表缓存的持续时间。默认时间为 Infinite(无限)。本例中设置为600秒。

●     CacheExpirationPolicy:缓存策略。包括两种设置:Absolute和sliding 。当设置成Absolute时,时限一到,缓存区失效;当设置为sliding时,时限一到立即刷新缓存区中的数据,并继续缓存更新后的数据。

●     EnableCaching:默认为False,即不使用数据缓存,将该属性改为True,即可启动数据缓存。

●     SqlCacheDependency:缓存依赖关系。例如设置为pubs:authors 表示数据库pubs中的authors数据表与它的数据缓存之间建立依赖关系。

       属性中作了上述设置后,将自动形成以下代码:

     <asp: SqlDataSource

           ID=”SqlDataSource1”

           EnableCaching=”true”

           CacheDuration=”600”

           ConnectionString=”Server=localhost ; database=pubs ;”

           selectCommand=”select  title  from  titles”

           Runat=”Server” />

 

   有时数据表太大,缓存区可能会占用太大的内存空间。 可以将数据缓存到硬盘的缓存区中,为了实现这一点,需要做一些专门的设置。设置包括两方面。

一方面,在网页的代码中增加以下配置语句:

<%@ OutputCache  duration=”3600” VaryByParam=”none” DickCacheable=”true”%>

另一方面,在Web . config文件中指定硬盘缓存区的大小,配置语句如下:

     <system . web>

          <caching>

             <outputCache>

                  <diskCache  enabled=”True”  maxSizePerApp=”2” />

             </outputCache>

          </caching>

</system . web>

        前面的语句中关键部分已经用粗体表示。其中,DiskCache enabled=”True”用来启动硬盘缓存功能;maxSizePerApp=”2”用来确定缓存区的容量,这里确定的缓存区最大容量为2兆。 由于对硬盘的存取速度比较慢,因此硬盘缓存只适用于缓存持续时间较长的情况(本例中缓存时间为60分钟)。

 

3.       缓存池

         数据缓存技术大大提高了数据访问的速度,但却可能引发数据不一致的问题。

         因此,以上数据缓存技术只适用于数据量大,变化频率不高的数据。 现在ASP . NET 2.0新版本结合数据库SQL Server2005,对数据缓存功能又作了很大改进,既简化了使用进程,又完善了处理措施,其中最突出的一点就是与数据库相结合自动解决了数据失效的问题。

         在ASP . NET 2.0中为了解决数据实效的问题,通过新类SQLCacheDependency建立起与新一代数据库的SQL缓存依赖关系,这种关系可以使得数据库能够自动监视数据表的状况,一旦数据表发生了变化,立即启动数据库本身的触发器将相应的缓存区中的数据变为无效。

转载于:https://www.cnblogs.com/lhuser/articles/1891095.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值