SQL Server数据库中的快照


SQL #sql server #快照2012-10-23 16:53
快照与视图有点相似,但又有所不同。与视图一样,快照是导出的关系变量;但与视图不同的是,它们是真正的关系变量,而不是虚拟的—也就是说,它们不是通过在其它关系变量上的定义来表示自身,而是(至少在理论上是)通过它们各自的物化的数据备份。
 
定义一个快照就像是执行一个查询,但不同的是:
a) 查询的结果是以一个特定的名字保存在数据库中,它是只读的关系变量。
b) 快照被定期刷新(比如每天)—也就是,它当前的值被丢掉,重新执行查询,新的结果成为快照的新值。

这样,快照就会和2 4小时前一样表示相关的数据。

快照的意义在于,很多应用—甚至可能绝大部分—可能容忍,或是需要与某个确切时间
相近的数据就可以了。报表和会计就是这一类的应用;这类应用的典型要求是数据被冻结在某一适当的时刻(比如是进行会计统计的一段时期),快照可以使这样的数据冻结而又不影响其它事务在这些数据上的更新操作(在真实数据上)。相似地,它可以为一个查询的大量数据或一个只读的应用服务,而不封锁数据库,这是非常有用的。快照是“受控冗余”(control l edredundancy)的一种特殊情况,“快照刷新”就是相应的更新过程。
一般来说,快照定义语法如下:
 
 
 
 
<now and then>应该是“月,周,天,小时,或是n分钟,还可以是周一,周末,等等(特别地,用REFRESH [ON] EVERY UPDAT E可以保持快照始终与它所导出的关系变量同步)。
下面是删除快照的语法:
 
DROP avr <relavr name>;
 
显然,< relvar name>是用来指明快照。注意:假设当一个快照定义被其它关系变量定义
所引用时, 对这个快照的删除请求会失败。相应地, 可以扩展快照定义使之包括
“RESTRICT”或“CASCADE”选项。

相关文章

粤ICP备11097351号-1