浅谈SQL Server中的快照

来源:未知 责任编辑:责任编辑 发表时间:2014-01-06 18:16 点击:

简介
    数据库快照,正如其名称所示那样,是数据库在某一时间点的视图。是SQL Server在2005之后的版本引入的特性。快照的应用场景比较多,但快照设计最开始的目的是为了报表服务。比如我需要出2011的资产负债表,这需要数据保持在2011年12月31日零点时的状态,则利用快照可以实现这一点。快照还可以和镜像结合来达到读写分离的目的。下面我们来看什么是快照。
 
什么是快照
    数据库快照是 SQL Server 数据库(源数据库)的只读静态视图。换句话说,快照可以理解为一个只读的数据库。利用快照,可以提供如下好处:
    提供了一个静态的视图来为报表提供服务
    可以利用数据库快照来恢复数据库,相比备份恢复来说,这个速度会大大提高(在下面我会解释为什么)
    和数据库镜像结合使用,提供读写分离
    作为测试环境或数据变更前的备份,比如我要大批导入或删除数据前,或是将数据提供给测试人员进行测试前,做一个快照,如果出现问题,则可以利用快照恢复到快照建立时的状态
 
快照的原理
    与备份数据库复制整个数据库不同,快照并不复制整个数据库的页,而是仅仅复制在快照建立时间点之后改变的页。因此,当利用快照进行数据库恢复时,也仅仅将那些做出改变的页恢复到源数据库,这个速度无疑会大大高于备份和恢复方式。这个原理如图1所示(图摘自SQL Server 2008揭秘)。
        图1.镜像的原理
 
   
    由图1可以看出,快照并不是复制整个整个数据库,而是当源数据库更改时,源数据库会将更改之前的数据存入快照数据库之后,再对源数据库进行更改。因此可以看出,源数据库上建立快照会给IO增加额外负担.当对快照数据库进行查询时,快照时间点之后更改的数据会查询快照数据库文件,而快照时间点之后未更改的数据,将会查询源数据库文件。这个概念如图2所示(图摘自SQL Server 2008揭秘)。   www.2cto.com 
        图2.查询快照数据库时查询的分布
 
 
写入时复制(Copy On Writing)和稀疏文件(Sparse Flie)
    由上图中可以看出,快照数据库的文件是基于稀疏文件(Sparse File),稀疏文件是NTFS文件系统的一项特性。所谓的稀疏文件,是指文件中出现大量0的数据,这些数据对我们用处并不大,却一样占用着磁盘空间。因此NTFS对此进行了优化,利用算法将这个文件进行压缩。因此当稀疏文件被创建时,稀疏文件刚开始大小会很小(甚至是空文件),比如图3所示的文件就是一个稀疏文件。虽然逻辑上占了21M,但文件实际上占了128KB磁盘空间。 
       
图3.一个稀疏文件
 
   
    对于快照来说,除了通过快照数据库文件的属性来看快照的大小之外,也可以通过DMV来查看,如图4所示.
        图4.通过DMV查看快照数据库大小
 
    
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • sql常见面试题
  • SQL SERVER 2005性能之跟踪
  • SQL编程(一)
  • LINUX上RMAN自动备份脚本
  • sql server面试题
  • 如何将多个SQL查询统计结果一次显示出来
  • 浅谈SQL Server中的事务日志(三)----在简单恢复模式下日志的角色
  • sql server 列转行
  • SQL小技巧系列 --- 行转列合并
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1